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.services.processes;

import jomm.utils.FilesUtils;
import org.apache.log4j.Logger;
import org.apache.struts.upload.FormFile;
import org.dom4j.Document;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.IRepositoryFile;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.utl.ist.berserk.logic.serviceManager.IService;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.*;

/*
 * @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
 *
 *
 * Created at 17/Out/2003 , 23:45:24
 *
 */


/**
 * @author Jorge Machado
 *
 *
 * Created at 17/Out/2003 , 23:45:24
 *
 */

public class ProcessesService implements IService
{
    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(ProcessesService.class);

    RepositoryService repositoryService = new RepositoryService();


    public void submitNew(long metaProcessId, 1.5.0/docs/api/java/lang/String.html">String notes, FormFile file,UserSession sess) throws ServiceException, 1.5.0/docs/api/java/io/IOException.html">IOException {
        5+0%2Fdocs%2Fapi+Date">Date now = new 5+0%2Fdocs%2Fapi+Date">Date();
        MetaProcessImpl metaProcess = (MetaProcessImpl) DaoFactory.getMetaProcessDaoImpl().load(metaProcessId);
        ProcessImpl process = DomainObjectFactory.createProcessImpl();
        process.setMetaProcess(metaProcess);

        process.setOpenDate(now);
        process.setSaveDate(now);
        process.setLastChangeDate(now);
        process.setCloseDate(null);
        process.setNowStateEnum(ProcessImpl.ProcessState.OPEN);
        process.setOwner(sess.getUser());

        ProcessEventImpl eventDest = DomainObjectFactory.createProcessEventImpl();
        ProcessEventImpl eventStart = DomainObjectFactory.createProcessEventImpl();
        eventStart.setOwner(sess.getUser());
        eventStart.setOpenDate(now);
        eventStart.setNowStateEnum(ProcessEventImpl.ProcessEventState.FINNISH_TRANSITATED);
        eventStart.setSaveDate(now);
        eventStart.setLastChangeDate(now);
        eventStart.setCloseDate(now);
        eventStart.setAccepted(true);
        eventStart.setAcceptedDate(now);
        eventStart.setDispatchedDate(now);
        eventStart.setNotes(notes);
        eventStart.setDestinationRole(metaProcess.getSrcRole());
        eventStart.setPreviousEvent(null);
        eventStart.setNextEvent(eventDest);


        1.5.0/docs/api/java/lang/String.html">String repositoryId;
        try {
            repositoryId = repositoryService.storeRepositoryFile(file.getInputStream(),file.getContentType(), FilesUtils.getExtension(file.getFileName()),
                    file.getFileSize(),file.getFileName(),"Process file " + metaProcess.getName(), ResourceAccessControlEnum.processDomain,sess);
        } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
            logger.error(e,e);
            throw e;
        }

        ProcessEventFileImpl f = DomainObjectFactory.createProcessEventFileImpl();
        1.5.0/docs/api/java/util/Set.html">Set proceSet = new HashSet<ProcessEventFileImpl>();
        proceSet.add(f);
        f.setImportDate(now);
        f.setOwner(sess.getUser());
        f.setProcessEvent(eventStart);
        f.setRepositoryStream(repositoryId);
        f.setSaveDate(now);
        f.setName(file.getFileName());
        f.setFileAccessLevelEnum(ProcessEventFileImpl.AccessLevel.ALL_IN_PROCESS);

        eventStart.setFiles(proceSet);



        //EVENT DESTINATION

        eventDest.setOwner(null);
        eventDest.setOpenDate(now);
        eventDest.setNowStateEnum(ProcessEventImpl.ProcessEventState.NOT_ACCEPTED);
        eventDest.setSaveDate(now);
        eventDest.setLastChangeDate(now);
        eventDest.setCloseDate(null);
        eventDest.setAccepted(false);
        eventDest.setAcceptedDate(null);
        eventDest.setDispatchedDate(null);
        eventDest.setNotes("");
        eventDest.setDestinationRole(metaProcess.getTargetRole());
        eventDest.setPreviousEvent(eventStart);
        eventDest.setNextEvent(null);

        Set<ProcessEvent> events = new HashSet<ProcessEvent>();
        events.add(eventStart);
        events.add(eventDest);
        process.setLastEvent(eventDest);
        process.setEvents(events);

        DaoFactory.getProcessDaoImpl().save(process);
        DaoFactory.getProcessEventDaoImpl().save(eventStart);
        DaoFactory.getProcessEventDaoImpl().save(eventDest);
        DaoFactory.getProcessEventFileDaoImpl().save(f);

        DaoFactory.getProcessDaoImpl().saveOrUpdate(process);
        DaoFactory.getProcessEventDaoImpl().saveOrUpdate(eventStart);
        DaoFactory.getProcessEventDaoImpl().saveOrUpdate(eventDest);
        DaoFactory.getProcessEventFileDaoImpl().saveOrUpdate(f);

    }

}