package pt.estgp.estgweb.services.processes;
import jomm.utils.FilesUtils;
import org.apache.log4j.Logger;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import java.io.IOException;
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,
null, 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
);
}
}