[jboss-user] [JBoss Seam] - Re: Exception: Could not register transaction ....
miloslav.vlach
do-not-reply at jboss.com
Mon Sep 17 14:47:27 EDT 2007
The requestaction again :)
| package cz.bpsolutions.mis.request;
|
| import java.io.Serializable;
| import java.util.ArrayList;
| import java.util.Calendar;
| import java.util.Collection;
| import java.util.Date;
| import java.util.List;
|
| import javax.ejb.Remove;
| import javax.ejb.Stateful;
| import javax.persistence.EntityManager;
| import javax.persistence.PersistenceContext;
| import javax.persistence.PersistenceContextType;
|
| import org.hibernate.Criteria;
| import org.hibernate.criterion.Disjunction;
| import org.hibernate.criterion.MatchMode;
| import org.hibernate.criterion.Restrictions;
| import org.hibernate.ejb.EntityManagerImpl;
| import org.jboss.annotation.ejb.cache.simple.CacheConfig;
| import org.jboss.seam.ScopeType;
| import org.jboss.seam.annotations.Begin;
| import org.jboss.seam.annotations.Destroy;
| import org.jboss.seam.annotations.End;
| import org.jboss.seam.annotations.Factory;
| import org.jboss.seam.annotations.FlushModeType;
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Logger;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.annotations.Out;
| import org.jboss.seam.annotations.datamodel.DataModel;
| import org.jboss.seam.annotations.datamodel.DataModelSelection;
| import org.jboss.seam.annotations.security.Restrict;
| import org.jboss.seam.log.Log;
| import org.jboss.seam.security.Identity;
|
| import cz.bpsolutions.ims.actions.request.RequestServiceLocal;
| import cz.bpsolutions.ims.beans.Reason;
| import cz.bpsolutions.ims.beans.Solution;
| import cz.bpsolutions.ims.beans.UploadedFile;
| import cz.bpsolutions.ims.model.Account;
| import cz.bpsolutions.ims.model.Attachement;
| import cz.bpsolutions.ims.model.Category;
| import cz.bpsolutions.ims.model.Request;
| import cz.bpsolutions.ims.model.RequestFilter;
| import cz.bpsolutions.ims.model.RequestType;
| import cz.bpsolutions.ims.service.request.RequestSearchParams;
| import cz.bpsolutions.ims.workflow.RequestState;
| import cz.bpsolutions.seam.validation.method.annotation.CustomValidator;
| import cz.bpsolutions.seam.validation.method.annotation.ValidatedMethod;
| import cz.bpsolutions.tools.StringTools;
|
| @Name("requestAction")
| @Stateful
| @Restrict("#{identity.loggedIn}")
| public class RequestAction implements RequestActionLocal, Serializable {
|
| private static final long serialVersionUID = -5653139064486044176L;
|
| @PersistenceContext(type = PersistenceContextType.EXTENDED)
| EntityManager em;
|
| @Logger
| Log log;
|
| @DataModelSelection(value = "requestActionList")
| @In(required = false)
| @Out(required = false, scope = ScopeType.CONVERSATION)
| private Request request;
|
| @DataModelSelection(value = "requestAction_attachements")
| private Attachement attachement;
|
| @DataModel(scope = ScopeType.PAGE)
| private Collection<Request> requestActionList;
|
| @In(create = true)
| private RequestServiceLocal requestService;
|
| @DataModel()
| private Collection<Attachement> requestAction_attachements;
|
| @In(required = false)
| private UploadedFile uploadedFile;
|
| @In(required = false)
| private Category category;
|
| @In(required = false)
| @Out(required = false)
| private Reason reason;
|
| @In(scope = ScopeType.SESSION, value = "loggedUser")
| Account loggedUser;
|
| @In(required = false)
| private RequestType requestType;
|
| @In(required = false)
| private RequestSearchParams requestSearchParams;
|
| @In(required = false)
| @Out(required = false)
| Solution solution;
|
| @DataModel
| List<Account> requestAction_solvers;
|
| @DataModelSelection("requestAction_solvers")
| Account selectedUser;
|
| @DataModel()
| List<RequestFilter> requestAction_filters;
|
| @DataModelSelection("requestAction_filters")
| @In(required = false)
| @Out(required = false)
| RequestFilter requestFilter;
|
| @In(required = false)
| String parReqId;
|
| @In(required = false, scope = ScopeType.SESSION)
| @Out(required = false, scope = ScopeType.SESSION)
| RequestFilter rf;
|
| @Factory("requestAction_solvers")
| public void initSolvers() {
| log.info("loading solvers for the request: #0", request);
| requestAction_solvers = ((EntityManagerImpl) (em.getDelegate()))
| .getSession().createCriteria(Account.class).list();
| }
|
| @Factory("requestAction_attachements")
| public void initAttachements() {
| log.info("loading the attachements");
| if (request != null) {
| requestAction_attachements = request.getAttachements();
| }
| }
|
| @Factory("requestActionList")
| public void init() {
| log.info("loading all requests, filter: #0", rf);
|
| Criteria cr = ((EntityManagerImpl) (em.getDelegate())).getSession()
| .createCriteria(Request.class);
|
| if (rf != null) {
|
| // restrikce autora
| if (!StringTools.isEmpty(rf.getAuthorName())) {
| log.info("finding author: #0", rf.getAuthorName());
| cr.createAlias("author", "a");
| cr.add(Restrictions.ilike("a.fullName", rf.getAuthorName(),
| MatchMode.ANYWHERE));
| }
| // restrikce resitele
| if (!StringTools.isEmpty(rf.getSolverName())) {
| log.info("finding solver: #0", rf.getSolverName());
| cr.createAlias("solver", "s");
| cr.add(Restrictions.ilike("s.fullName", rf.getSolverName(),
| MatchMode.ANYWHERE));
| }
| // restrikce operatora
| if (!StringTools.isEmpty(rf.getOperatorName())) {
| log.info("finding operator: #0", rf.getOperatorName());
| cr.createAlias("operator", "o");
| cr.add(Restrictions.ilike("o.fullName", rf.getOperatorName(),
| MatchMode.ANYWHERE));
| }
|
| // restrikce kategorii
| if (!StringTools.isEmpty(rf.getCategoriesString())) {
| log.info("finding category: #0", rf.getCategoriesString());
| cr.createAlias("category", "cat");
| Disjunction rs = Restrictions.disjunction();
| for (String catId : rf.getCategoriesString().split(",")) {
| Category cat = (Category) em.find(Category.class, Long
| .valueOf(catId));
| if (cat != null) {
| rs.add(Restrictions.ilike("cat.fullName", cat
| .getFullName(), MatchMode.ANYWHERE));
| }
| }
| cr.add(rs);
| }
|
| // restrikce stavu
| if (!StringTools.isEmpty(rf.getStatesString())) {
| log.info("finding states: #0", rf.getStatesString());
| Disjunction rs = Restrictions.disjunction();
|
| for (String state : rf.getStatesString().split(",")) {
| rs.add(Restrictions.eq("state", state));
| }
| cr.add(rs);
| }
|
| // restrikce nazvu a popisu
| if (!StringTools.isEmpty(rf.getKeyword())) {
| log.info("finding keyword: #0", rf.getKeyword());
| cr.add(Restrictions.disjunction().add(
| Restrictions.ilike("name", rf.getKeyword(),
| MatchMode.ANYWHERE)).add(
| Restrictions.ilike("description", rf.getKeyword(),
| MatchMode.ANYWHERE)));
| }
|
| // restrikce requestTypu
| if (!StringTools.isEmpty(rf.getRequestTypesString())) {
| log.info("finding requestType: #0", rf.getRequestTypesString());
| cr.createAlias("requestType", "rt");
| Disjunction dj = Restrictions.disjunction();
|
| for (String rt : rf.getRequestTypesString().split(",")) {
| dj.add(Restrictions.eq("rt.id", Long.valueOf(rt)));
| }
| cr.add(dj);
| }
| // restrikce priority
| if (!StringTools.isEmpty(rf.getPrioritiesString())) {
| log.info("finding priority: #0", rf.getPrioritiesString());
| Disjunction rs = Restrictions.disjunction();
|
| for (String priority : rf.getPrioritiesString().split(",")) {
| rs.add(Restrictions.eq("priority", Integer
| .valueOf(priority)));
| }
| cr.add(rs);
| }
|
| // restrikce datumu
| if (rf.getDateFilter() != null && !rf.getDateFilter().equals(0)) {
| if (rf.getDateFilter() == 1) {
| // dnes
| Date today = new Date();
|
| Calendar cal = Calendar.getInstance();
|
| cal.setTime(today);
|
| cal.set(Calendar.HOUR, 0);
| cal.set(Calendar.MINUTE, 0);
| cal.set(Calendar.SECOND, 0);
| cal.set(Calendar.MILLISECOND, 0);
|
| Date from = cal.getTime();
|
| cal.set(Calendar.HOUR, 23);
| cal.set(Calendar.MINUTE, 59);
| cal.set(Calendar.SECOND, 59);
|
| Date to = cal.getTime();
|
| cr.add(Restrictions.between("created", from, to));
| }
| if (rf.getDateFilter() == 2) {
| // 3 dny
| Date today = new Date();
|
| Calendar cal = Calendar.getInstance();
|
| cal.setTime(today);
|
| cal.set(Calendar.HOUR, 23);
| cal.set(Calendar.MINUTE, 59);
| cal.set(Calendar.SECOND, 59);
| Date to = cal.getTime();
|
| cal.set(Calendar.HOUR, 0);
| cal.set(Calendar.MINUTE, 0);
| cal.set(Calendar.SECOND, 0);
| cal.set(Calendar.MILLISECOND, 0);
|
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| Date from = cal.getTime();
|
| cr.add(Restrictions.between("created", from, to));
| }
| if (rf.getDateFilter() == 3) {
| Date today = new Date();
|
| Calendar cal = Calendar.getInstance();
|
| cal.setTime(today);
|
| cal.set(Calendar.HOUR, 23);
| cal.set(Calendar.MINUTE, 59);
| cal.set(Calendar.SECOND, 59);
| Date to = cal.getTime();
|
| cal.set(Calendar.HOUR, 0);
| cal.set(Calendar.MINUTE, 0);
| cal.set(Calendar.SECOND, 0);
| cal.set(Calendar.MILLISECOND, 0);
|
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| cal.add(Calendar.HOUR, -24);
| Date from = cal.getTime();
|
| cr.add(Restrictions.between("created", from, to));
| }
| if (rf.getDateFilter() == 4) {
| cr.add(Restrictions.between("created", rf.getFromDate(), rf
| .getToDate()));
| }
| }
| requestActionList = cr.list();
|
| } else {
| requestActionList = cr.list();
| }
| log.info("raw collection size: #0", requestActionList.size());
|
| for (Request r : new ArrayList<Request>(requestActionList)) {
| if (!Identity.instance().hasPermission("request", "read", r)) {
| requestActionList.remove(r);
| }
| }
| log.info("secured collection size: #0", requestActionList.size());
|
| }
|
| public String find() {
| log.info("finding the requests");
| requestActionList = null;
| return "find";
| }
|
| public String delete() {
| log.info("deleting the request: #0", request);
| em.remove(request);
| requestActionList = null;
| return DefaultActions.DELETED;
| }
|
| @End(beforeRedirect = true)
| @ValidatedMethod(formName = "addForm", validators = { @CustomValidator(validatorClass = RequestSaveValidator.class, mapping = {
| "category", "requestType", "request" }) })
| public String save() {
| log.info("adding the request #0", request);
| em.refresh(category);
| em.refresh(requestType);
|
| requestType.getRequests().add(request);
|
| request.setCategory(category);
| request.setAuthor(loggedUser);
| request.setCreated(new Date());
| request.setRequestType(requestType);
|
| if (parReqId != null) { // podrizeny request - nastavime vazby a ulozime
| // rodice
| Request parentRequest = em.find(Request.class, Long
| .valueOf(parReqId));
| request.setParent(parentRequest);
| parentRequest.getChildren().add(request);
| em.merge(parentRequest);
| parReqId = null; // pro jistotu
| }
| em.merge(request);
|
| requestService.save(request);
| return DefaultActions.SAVED;
| }
|
| @ValidatedMethod(formName = "editForm", validators = { @CustomValidator(validatorClass = RequestSaveValidator.class, mapping = {
| "category", "requestType", "request" }) })
| @End(beforeRedirect = true)
| public String update() {
| log.info("adding the request #0", request);
| em.refresh(category);
| em.refresh(requestType);
|
| if (!requestType.getRequests().contains(request)) {
| requestType.getRequests().add(request);
| }
| request.setCategory(category);
| request.setAuthor(loggedUser);
| request.setCreated(new Date());
| request.setRequestType(requestType);
|
| em.merge(request);
| return DefaultActions.EDITED;
| }
|
| @Begin(join = true)
| public String loadDetail() {
| edit();
| return DefaultActions.LOADED;
| }
|
| @Begin(join = true)
| public String edit() {
| em.refresh(request);
| requestAction_attachements = request.getAttachements();
| return DefaultActions.EDITED;
| }
|
| @Begin(join = true)
| public String addAttachement() {
| checkRequest();
| log.info("adding attachement #0: #1", request, uploadedFile);
|
| if (uploadedFile == null) {
| return null;
| }
|
| String location = uploadedFile.getUploadedFile().getName()
| + (new Date()).toString();
|
| Attachement a = new Attachement();
| a.setContentType(uploadedFile.getUploadedFile().getContentType());
| a.setFileName(uploadedFile.getUploadedFile().getName());
| a.setFileSize(uploadedFile.getUploadedFile().getSize());
| a.setRequest(request);
| a.setLocation(location);
|
| request.getAttachements().add(a);
| requestAction_attachements = request.getAttachements();
|
| return "attachementAdded";
| }
|
| @Begin(join = true)
| public String removeAttachement() {
| checkRequest();
| log.info("removing attachement #0", request);
|
| request.getAttachements().remove(attachement);
| requestAction_attachements = request.getAttachements();
|
| return "attachementRemoved";
| }
|
| private void checkRequest() {
| if (request == null) {
| request = new Request();
| }
| }
|
| @Destroy
| @Remove
| public void destroy() {
| }
|
| /**
| * Tato metoda je volaná kdy? chce autor akceptovat vy?e?ení HelpDesku.
| * Metoda je kone?ná.
| */
| @Begin(join = true)
| public String authAcceptSolution() {
| requestService.authAcceptSolution(request);
| return null;
| }
|
| /**
| * Tato metoda je volaná kdy? chce autor odmítnout (reklamovat) validované
| * ?e?ení. Metoda p?esm?rovává na stránku se zadáním d?vodu.
| */
| @Begin(join = true)
| public String authRejectSolution() {
| reason = new Reason();
| return "rejectSolution";
| }
|
| /**
| * Tato metoda je volaná kdy? chce autor odmítnout (reklamovat) validované
| * ?e?ení. Metoda se zavolá ze stránky, která definovala d?vod pro odmítnutí
| * ?e?ení.
| */
| @End(beforeRedirect = true)
| @ValidatedMethod(formName = "rejectForm", validators = { @CustomValidator(validatorClass = ReasonValidator.class, mapping = "reason") })
| public String authSaveRejectSolution() {
| requestService.authSaveRejectSolution(request, reason);
| return "rejectedSolution";
| }
|
| /**
| * Tato metoda nastaví operátor?v souhlas s autorovou reklamací. Vrací
| * po?adavek zp?t do stavu "?e?í se"
| */
| @End(beforeRedirect = true)
| public String opAcceptReclamation() {
| requestService.opAcceptReclamation(request);
| return null;
| }
|
| /**
| * Tato metoda nastavuje validaci operátora s vy?e?ením po?adavku.
| */
| @End(beforeRedirect = true)
| public String opAcceptSolution() {
| requestService.opAcceptSolution(request);
| return null;
| }
|
| /**
| * Tato metoda posíla p?esm?rování na solverselect.xhtml, kde se zobrazí
| * v?ichni ?e?itelé.
| */
| @Begin(join = true)
| public String opAssignSolver() {
| log.info("forwarding to select solver...");
| return "selectSolver";
| }
|
| /**
| * Tato metoda zajistí ulo?ení vybraného ?e?itele. Odskakuje zp?t na
| * /actions/request/list.xhtml
| */
| @End(beforeRedirect = true)
| public String opSaveAssignSolver() {
| log.info("saving the assigned solver...");
| requestService.opSaveAssignSolver(request, selectedUser);
| return "solverSelected";
| }
|
| /**
| * Tato metoda provede p?esm?rování na stránku pro zadání od?vodn?ní
| * nesouhlasu s autorovou reklamací.
| */
| @Begin(join = true)
| public String opRejectReclamation() {
| log.info("redirecting to the rejectreclamation");
| return "rejectReclamation";
| }
|
| /**
| * Tato metoda zavolá servisku pro odmítnutí u?ivatelské reklamace.
| */
| @End(beforeRedirect = true)
| @ValidatedMethod(formName = "rejectForm", validators = { @CustomValidator(validatorClass = ReasonValidator.class, mapping = "reason") })
| public String opSaveRejectReclamation() {
| requestService.opSaveRejectReclamation(request, reason);
| return "rejectReclamationSaved";
| }
|
| /**
| * Tato metoda zajistí p?esm?rování na zadání d?vodu pro odmítnutí po?adaku.
| */
| @Begin(join = true)
| public String opRejectRequest() {
| log.info("forwarding to request reject.");
| return "rejectRequest";
| }
|
| /**
| * Tato metoda zajistí zapsání informace o odmítnutí a odmítnutí po?adavku.
| */
| @End(beforeRedirect = true)
| @ValidatedMethod(formName = "rejectForm", validators = { @CustomValidator(validatorClass = ReasonValidator.class, mapping = "reason") })
| public String opSaveRejectRequest() {
| requestService.opSaveRejectRequest(request, reason);
| return "rejectRequestSaved";
| }
|
| public String opRejectSolution() {
| request.setState(RequestState.SOLVING);
| em.merge(request);
| return "returnToSolving";
| }
|
| @End(beforeRedirect = true)
| public String opSaveRejectSolution() {
| // TODO Auto-generated method stub
| return "returnedToSolving";
| }
|
| /** nastavi stav v reseni */
| @End(beforeRedirect = true)
| public String solvAcceptAssignment() {
| requestService.solvAcceptAssignment(request);
| return "";
| }
|
| /**
| * Tato metoda provede p?esm?rování na formulá? zadávající d?vod pro?
| * ?e?itel odmítl po?adavek.
| */
| @Begin(join = true)
| public String solvRejectAssignment() {
| log.info("redirecting to the reject solving");
| reason = new Reason();
| return "rejectAssignment";
| }
|
| @End(beforeRedirect = true)
| @ValidatedMethod(formName = "rejectForm", validators = { @CustomValidator(validatorClass = ReasonValidator.class, mapping = "reason") })
| public String solvSaveRejectAssignment() {
| requestService.solvSaveRejectAssignment(request, reason);
| return "rejectAssignmentSaved";
| }
|
| /**
| * Tato metoda p?epo?le ?e?itele na zadání ?e?ení.
| */
| @Begin(join = true)
| public String solvSolveRequest() {
| log.info("redirecting to the add solution");
| em.refresh(request);
| return "solveRequest";
| }
|
| /**
| * Tato metoda ulo?í vy?e?ení, nebo p?idá ?e?ení ke stávajícímu
| */
| @End(beforeRedirect = true)
| @ValidatedMethod(formName = "solveForm", validators = { @CustomValidator(validatorClass = SolutionValidator.class, mapping = "request") })
| public String solvSaveSolveRequest() {
| requestService.solvSolveRequest(request, solution);
| return "solutionSaved";
| }
|
| /**
| * Tato metoda p?eposílá na správu filtr?
| */
| public String manageFilters() {
| return "manageFilters";
| }
|
| @Factory("requestAction_filters")
| public void initFilters() {
| requestAction_filters = ((EntityManagerImpl) (em.getDelegate()))
| .getSession().createCriteria(RequestFilter.class).createAlias(
| "account", "a").add(
| Restrictions.eq("a.id", loggedUser.getId())).list();
| log.info("loading user filters for request: #0", requestAction_filters);
| }
|
| public String setFilter(Long id) {
| log.info("trying to set filter #0", id);
| rf = (RequestFilter) em.find(RequestFilter.class, id);
| log.info("succesfully loaded filter: #0", rf);
| requestActionList = null;
| return "list";
| }
|
| public String deleteFilter() {
| log.info("deleting filter #0", requestFilter);
| Account a = (Account) em.find(Account.class, requestFilter.getAccount()
| .getId());
| // a.getFilters().remove(requestFilter);
| em.remove(requestFilter);
| em.merge(a);
|
| requestAction_filters = null;
| return "filterDeleted";
| }
|
| public void initAddChildren() {
| if (parReqId != null) {
| request = null;
| }
| }
|
| @Begin(nested = true)
| public String addFilter() {
| return "addFilter";
| }
|
| @End(beforeRedirect = true)
| public String saveFilter() {
| requestFilter.setAccount(loggedUser);
| Account a = em.find(Account.class, loggedUser.getId());
|
| a.getFilters().add(requestFilter);
| em.refresh(a);
|
| em.merge(requestFilter);
| em.merge(a);
| requestAction_filters = null;
| requestFilter = null;
| return "filterSaved";
| }
|
| public String editFilter() {
| return "editFilter";
| }
|
| public String removeFilter() {
| return null;
| }
|
| public String updateFilter() {
| return "filterSaved";
| }
|
| public String cancelFilter() {
| rf = null;
| requestActionList = null;
| return "list";
| }
| }
|
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4085214#4085214
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4085214
More information about the jboss-user
mailing list