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 pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.RoleManager;

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

/**
 * @author: Duarte Santos
 * @date: 09-05-2011
 * @time: 23:10
 * @email: a12564 [at] estgp [dot] pt
 */


public class SurveyImpl extends Survey implements IOwned, IConsultSurveyStats, 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(SurveyImpl.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();
    }

    @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;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getChoosedOwnerRole() {
        logger.warn("Invoke not implemented method in class:" + getClass().getName());
        return null;
    }

    @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 canConsultSurveyStats(GenericUserImpl u)
    {
        return canConsultStats(u,false);
    }

    public boolean canConsultSurveyStats(GenericUserImpl u, boolean transaction)
    {
        return canConsultStats(u,transaction);
    }

    public boolean canConsultStats(GenericUserImpl user, boolean transaction)
    {
        return RoleManager.hasRole(getStatsConsultRolesList(), Globals.ALL_ROLE) || (user != null && (user.hasRole(getStatsConsultRoles()) || user.isSuperuserOrAdmin())) || isOwnedBy(user,transaction);
    }

    public List<String> getStatsConsultRolesList()
    {
        return RoleManager.getRolesFromSerial(getStatsConsultRoles());
    }

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

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

    private boolean canEditSurvey(GenericUserImpl user, boolean transaction)
    {
        List<SurveyStructuralNode> childNodes = ((SurveyStructuralNodeImpl)getStructuralNode()).getChildsStructuralNodes();
        for(SurveyStructuralNode node : childNodes)
        {
            for(SurveyResponse response : node.getResponses())
            {
                return response.getAnswers().size() > 0 && user != null && (user.isSuperuserOrAdmin() || isOwnedBy(user,transaction));
            }
        }
        return false;
    }
}