Subversion Repositories bacoAlunos

Rev

Rev 1306 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.domain;

import org.apache.log4j.Logger;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 * User: Filipe Matos
 * Date: 4/Abr/2013
 * Time: 17:02:06
 * To change this template use File | Settings | File Templates.
 */

public class AssessmentImpl extends Assessment implements IOwned, IEdit
{
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(AssessmentImpl.class);

    @1.5.0/docs/api/java/lang/Override.html">Override
    public boolean isOwnedBy(GenericUser u) {
        return isOwnedBy(u,false);
    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    public boolean isOwnedBy(GenericUser u, boolean transaction) {
        return u.getId() == getOwner().getId();
    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    public GenericUser getOwner() {
        return super.getOwner();
    }

    public 1.5.0/docs/api/java/lang/String.html">String getChoosedOwnerRole() {
        logger.warn("Invoke not implemented method in class:" + getClass().getName());
        return null;  //To change body of implemented methods use File | Settings | File Templates.
    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    public List<String> getOwnerRoles() {
        logger.warn("Invoke not implemented method in class:" + getClass().getName());
        return null;  //To change body of implemented methods use File | Settings | File Templates.
    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable() {
        return getId();
    }

    public boolean isTypeOf(1.5.0/docs/api/java/lang/String.html">String type)
    {
        return (getType().equals(type));
    }

    public boolean canEdit(GenericUserImpl u)
    {
        return canEditAssessment(u,false);
    }

    public boolean canEdit(GenericUserImpl u,boolean transaction)
    {
        return canEditAssessment(u,true);
    }

    private boolean canEditAssessment(GenericUserImpl user, boolean transaction)
    {
        Set<AssessmentResponse> responses = this.getResponses();
        if(responses.size() ==0)
        {
            return user != null && isOwnedBy(user, transaction);
        }
        if(responses.size()>0)
        {
            for(AssessmentResponse response : responses)
            {
                return response.getAnswers().size() == 0 && user != null && isOwnedBy(user,transaction);
            }
        }
        return false;
    }
}