Subversion Repositories bacoAlunos

Rev

Rev 1782 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.domain;

import pt.estgp.estgweb.utils.Globals;

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

/**
 * Created by jorgemachado on 10/01/14.
 */

public class ProcessImpl extends 1.5.0/docs/api/java/lang/Process.html">Process
{
    public static enum ProcessState
    {
        OPEN,
        TRANSITION,
        CLOSED
    }
    @1.5.0/docs/api/java/lang/Override.html">Override
    public List<String> getOwnerRoles() {
        return null;
    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    public 1.5.0/docs/api/java/lang/String.html">String getChoosedOwnerRole() {
        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 void setNowStateEnum(ProcessState state)
    {
        super.setNowState(state.name());
    }


    public boolean isInProcess(User u)
    {
        if(u.getId() == getOwner().getId()) return true;
        if(getEvents() == null)
            return false;
        for(ProcessEvent e: getEvents())
        {
            if(e.checkIsOwnedBy(u))
                return true;
        }
        return false;
    }


    public GenericUser getLastPersonEvent()
    {
        if(getLastEvent().getOwner() == null)
            return getLastEvent().getPreviousEvent().getOwner();
        else
            return getLastEvent().getOwner();
    }

    public boolean canReopen(User user)
    {
        return user.isSuperuser() || user.hasRole(Globals.ROLE_PROCESSES_ADMIN) || user.getId() == getLastEvent().getOwner().getId();
    }

    public boolean canRemoveLastEvent(User user)
    {
        if(getLastEvent().getPreviousEvent() == null)
        {
            //cant delete first event
            return false;
        }
        if(user.isSuperuserOrAdmin())
        {
            return true;
        }
        //check if this event starts in this user looking to previous event
        else if(!getLastEvent().isAccepted() &&
                getLastEvent().getPreviousEvent() != null &&
                user.getId() == getLastEvent().getPreviousEvent().getOwner().getId())
        {
            return true;
        }
        else
        {
            return false;
        }
    }

}