package org.xdams.page.command; import it.highwaytech.db.QueryResult; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.ui.ModelMap; import org.xdams.conf.master.ConfBean; import org.xdams.manager.conf.MultiEditingManager; import org.xdams.page.view.bean.EditingBean; import org.xdams.user.bean.UserBean; import org.xdams.utility.request.MyRequest; import org.xdams.workflow.bean.WorkFlowBean; import org.xdams.xml.builder.XMLBuilder; import org.xdams.xmlengine.connection.manager.ConnectionManager; import org.xdams.xw.XWConnection; public class EditingPageCommand { // private HttpServletRequest aReq = null; // // private ServletContext servletContext = null; // // public EditingPageCommand(HttpServletRequest req, ServletContext servletContext) throws Exception { // aReq = req; // this.servletContext = servletContext; // } private Map<String, String[]> parameterMap = null; private ModelMap modelMap = null; public EditingPageCommand(Map<String, String[]> parameterMap, ModelMap modelMap) throws Exception { this.parameterMap = parameterMap; this.modelMap = modelMap; } public void execute() throws Exception { XWConnection xwconn = null; ConnectionManager connectionManager = new ConnectionManager(); ConfBean confBean = null; EditingBean editingBean = null; String physDoc = MyRequest.getParameter("physDoc", "", parameterMap); //vuol dire che vengo dal preinsert if(modelMap.get("physDoc")!=null){ physDoc = (String) modelMap.get("physDoc"); } List<String> confControl = new ArrayList<String>(); confControl.add("docEdit"); confControl.add("valoriControllati"); try { UserBean userBean = (UserBean) modelMap.get("userBean"); //confBean = (ConfBean) modelMap.get("confBean"); confBean = new ConfBean(); WorkFlowBean workFlowBean = (WorkFlowBean) modelMap.get("workFlowBean"); if (physDoc.equals("")) { physDoc = (String) workFlowBean.getRequest().getAttribute("physDoc"); } editingBean = new EditingBean(); editingBean.setPhysDoc(Integer.parseInt(physDoc)); xwconn = connectionManager.getConnection(workFlowBean.getArchive()); editingBean.setDocXml(xwconn.getSingleXMLFromNumDoc(editingBean.getPhysDoc())); XMLBuilder theXMLDoc = new XMLBuilder(editingBean.getDocXml(), "ISO-8859-1"); editingBean.setXmlBuilder(theXMLDoc); MultiEditingManager editingManager = new MultiEditingManager(parameterMap, confBean, userBean, workFlowBean); editingManager.setTheXML(editingBean.getXmlBuilder()); confBean = editingManager.rewriteMultipleConf(confControl); int docFather = xwconn.docRelNavigate(xwconn.connection, workFlowBean.getAlias(), it.highwaytech.broker.ServerCommand.navigarel_FIGLIOPADRE, editingBean.getPhysDoc()); editingBean.setDocFather(docFather); int docSon = xwconn.docRelNavigate(xwconn.connection, workFlowBean.getAlias(), it.highwaytech.broker.ServerCommand.navigarel_PADREFIGLIO, editingBean.getPhysDoc()); editingBean.setDocSon(docSon); int docUpperBrother = xwconn.docRelNavigate(xwconn.connection, workFlowBean.getAlias(), it.highwaytech.broker.ServerCommand.navigarel_MAGGIOREMINORE, editingBean.getPhysDoc()); editingBean.setDocUpperBrother(docUpperBrother); int docLowerBrother = xwconn.docRelNavigate(xwconn.connection, workFlowBean.getAlias(), it.highwaytech.broker.ServerCommand.navigarel_MINOREMAGGIORE, editingBean.getPhysDoc()); editingBean.setDocLowerBrother(docLowerBrother); editingBean.setPos(MyRequest.getParameter("pos", parameterMap)); editingBean.setSelid(MyRequest.getParameter("selid", parameterMap)); if (!editingBean.getSelid().equals("") && !editingBean.getPos().equals("")) { QueryResult queryResult = xwconn.getQRFromSelId(editingBean.getSelid()); try { editingBean.setPhysDocNext(xwconn.getNumDocFromQRElement(queryResult, Integer.parseInt(editingBean.getPos()) + 1)); } catch (Exception e) { editingBean.setPhysDocNext(-1); } try { editingBean.setPhysDocPrev(xwconn.getNumDocFromQRElement(queryResult, Integer.parseInt(editingBean.getPos()) - 1)); } catch (Exception e) { editingBean.setPhysDocPrev(-1); } if (Integer.parseInt(editingBean.getPos()) < queryResult.elements - 1) { editingBean.setPosNext(Integer.parseInt(editingBean.getPos()) + 1); } if (queryResult.elements > 0) { editingBean.setPosPrev(Integer.parseInt(editingBean.getPos()) - 1); } } if (!MyRequest.getParameter("thePne", parameterMap).equals("")) { editingBean.setThePne(MyRequest.getParameter("thePne", parameterMap)); } else { editingBean.setThePne(workFlowBean.getArchive().getPne()); } modelMap.put("confBean", confBean); modelMap.put("editingBean", editingBean); } catch (Exception e) { e.printStackTrace(); modelMap.put("confBean", null); modelMap.put("editingBean", null); throw new Exception(e.toString()); } finally { connectionManager.closeConnection(xwconn); } } }