package pt.estgp.estgweb.web.controllers.processes;
import jomm.dao.utils.HibernateUtils;
import jomm.utils.FilesUtils;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.MetaProcess;
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.utils.StringsUtils;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.processes.NewMetaProcessForm;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class MetaProcessesController
extends ApplicationDispatchController
{
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(MetaProcessesController.
class);
public ActionForward update
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
try
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isSuperuser() && UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole(Globals.
ROLE_PROCESSES_ADMIN))
return mapping.
findForward("error401");
NewMetaProcessForm f =
(NewMetaProcessForm
)form
;
FormFile file = f.
getFile();
RepositoryService repositoryService =
new RepositoryService
();
if(file
!=
null && file.
getFileSize()>0
)
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println("FileName:"+file.
getFileName());
try {
HibernateUtils.
getCurrentSession().
beginTransaction();
if(f.
getMetaProcess().
getRepositoryStream() ==
null || f.
getMetaProcess().
getRepositoryStream().
length() == 0
)
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println("AQUI");
1.5.0/docs/api/java/lang/String.html">String repositoryId = repositoryService.
storeRepositoryFile(file.
getInputStream(),file.
getContentType(), FilesUtils.
getExtension(file.
getFileName()),file.
getFileSize(),file.
getFileName(),
"MetaProcess Template file", ResourceAccessControlEnum.
authenticatedDomain,
null, UserSessionProxy.
loadUserSessionFromRequest(request
));
1.5.0/docs/api/java/lang/System.html">System.
out.
println(repositoryId
);
f.
getMetaProcess().
setRepositoryStream(repositoryId
);
f.
setFileName(file.
getFileName());
}
else
{
repositoryService.
updateRepositoryFile(f.
getMetaProcess().
getRepositoryStream(),file.
getInputStream(),file.
getContentType(),FilesUtils.
getExtension(file.
getFileName()),file.
getFileSize(),file.
getFileName(),
"MetaProcess Template file",ResourceAccessControlEnum.
authenticatedDomain);
f.
setFileName(file.
getFileName());
}
HibernateUtils.
getCurrentSession().
getTransaction().
commit();
}catch(1.5.0/docs/api/java/lang/Exception.html">Exception e
)
{
logger.
error(e,e
);
}
}
1.5.0/docs/api/java/lang/String.html">String personToAdd = f.
getPersonToAdd();
if(personToAdd.
trim().
length() > 0
)
{
if(f.
getMetaProcess().
getPossiblePersons() ==
null)
f.
getMetaProcess().
setPossiblePersons("");
List
<String
> persons = StringsUtils.
getStringsFromSerial(f.
getMetaProcess().
getPossiblePersons(),
";");
if(persons ==
null)
persons =
new ArrayList
<String
>();
if(!persons.
contains(personToAdd
))
{
f.
getMetaProcess().
setPossiblePersons(f.
getMetaProcess().
getPossiblePersons() + personToAdd +
";");
}
}
1.5.0/docs/api/java/lang/String.html">String roleToAdd = f.
getRoleToAdd();
if(roleToAdd.
trim().
length() > 0
)
{
if(f.
getMetaProcess().
getPossibleTargets() ==
null)
f.
getMetaProcess().
setPossibleTargets("");
List
<String
> roles = StringsUtils.
getStringsFromSerial(f.
getMetaProcess().
getPossibleTargets(),
";");
if(roles ==
null)
roles =
new ArrayList
<String
>();
if(!roles.
contains(roleToAdd
))
{
f.
getMetaProcess().
setPossibleTargets(f.
getMetaProcess().
getPossibleTargets() + roleToAdd +
";");
}
}
f.
setRoleToRemove("");
f.
setRoleToAdd("");
f.
setPersonToRemove("");
f.
setPersonToAdd("");
return mapping.
getInputForward();
}
//catch (FilterChainFailedException e)
//{
// return mapping.findForward("error401");
//}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
throw e
;
}
}
public ActionForward create
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isSuperuser() && UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole(Globals.
ROLE_PROCESSES_ADMIN))
return mapping.
findForward("error401");
try
{
NewMetaProcessForm f =
(NewMetaProcessForm
)form
;
HibernateUtils.
getCurrentSession().
beginTransaction();
ActionMessages errors = f.
validate(mapping,request
);
if(!errors.
isEmpty())
{
saveErrors
(request, errors
);
return mapping.
getInputForward();
}
MetaProcess metaProcess = f.
getMetaProcess();
if(metaProcess.
getId() == 0
)
{
metaProcess.
setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
DaoFactory.
getMetaProcessDaoImpl().
save(metaProcess
);
}
else
{
MetaProcess db = DaoFactory.
getMetaProcessDaoImpl().
load(metaProcess.
getId());
db.
setCategory(metaProcess.
getCategory());
db.
setSubCategory(metaProcess.
getSubCategory());
db.
setRepositoryStream(f.
getMetaProcess().
getRepositoryStream());
db.
setDescription(metaProcess.
getDescription());
db.
setPossiblePersons(metaProcess.
getPossiblePersons());
db.
setPossibleTargets(metaProcess.
getPossibleTargets());
db.
setName(metaProcess.
getName());
db.
setSrcRole(metaProcess.
getSrcRole());
db.
setTargetRole(metaProcess.
getTargetRole());
}
HibernateUtils.
getCurrentSession().
getTransaction().
commit();
addMessage
(request,
"metaprocess.created",metaProcess.
getName());
return mapping.
findForward("process.submited");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
throw e
;
}
}
public ActionForward delete
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
{
if(!UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
isSuperuser() && UserSessionProxy.
loadUserSessionFromRequest(request
).
getUser().
hasRole(Globals.
ROLE_PROCESSES_ADMIN))
return mapping.
findForward("error401");
try
{
NewMetaProcessForm f =
(NewMetaProcessForm
)form
;
1.5.0/docs/api/java/lang/String.html">String personToRemove = f.
getPersonToRemove();
if(personToRemove.
trim().
length() > 0
)
{
if(f.
getMetaProcess().
getPossiblePersons() ==
null)
f.
getMetaProcess().
setPossiblePersons("");
List
<String
> persons = StringsUtils.
getStringsFromSerial(f.
getMetaProcess().
getPossiblePersons(),
";");
if(persons ==
null)
persons =
new ArrayList
<String
>();
if(persons.
contains(personToRemove
))
{
persons.
remove(personToRemove
);
f.
getMetaProcess().
setPossiblePersons("");
for(1.5.0/docs/api/java/lang/String.html">String p: persons
)
f.
getMetaProcess().
setPossiblePersons(f.
getMetaProcess().
getPossiblePersons() + p +
";");
}
}
1.5.0/docs/api/java/lang/String.html">String roleToRemove = f.
getRoleToRemove();
if(roleToRemove.
trim().
length() > 0
)
{
if(f.
getMetaProcess().
getPossibleTargets() ==
null)
f.
getMetaProcess().
setPossibleTargets("");
List
<String
> roles = StringsUtils.
getStringsFromSerial(f.
getMetaProcess().
getPossibleTargets(),
";");
if(roles ==
null)
roles =
new ArrayList
<String
>();
if(roles.
contains(roleToRemove
))
{
roles.
remove(roleToRemove
);
f.
getMetaProcess().
setPossibleTargets("");
for(1.5.0/docs/api/java/lang/String.html">String r: roles
)
f.
getMetaProcess().
setPossibleTargets(f.
getMetaProcess().
getPossibleTargets() + r +
";");
}
}
f.
setRoleToRemove("");
f.
setRoleToAdd("");
f.
setPersonToRemove("");
f.
setPersonToAdd("");
return mapping.
getInputForward();
}
//catch (FilterChainFailedException e)
//{
// return mapping.findForward("error401");
//}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
throw e
;
}
}
}