private OBError processButton( VariablesSecureApp vars, String strKey, String strProjectType, String strDateFrom, String windowId) { Connection conn = null; OBError myMessage = new OBError(); if (strProjectType == null || strProjectType.equals("")) { try { releaseRollbackConnection(conn); } catch (Exception ignored) { } log4j.warn("Rollback in transaction"); myMessage.setType("Error"); myMessage.setTitle(Utility.messageBD(this, "Error", vars.getLanguage())); myMessage.setMessage(Utility.messageBD(this, "NoProjectTypeSelected", vars.getLanguage())); } else { try { conn = this.getTransactionConnection(); ProjectSetTypeData[] data = ProjectSetTypeData.select(this, strProjectType); ProjectSetTypeData[] dataProject = ProjectSetTypeData.selectProject(this, strKey); String strProjectPhase = ""; String strProjectTask = ""; // Variables used for Project Scheduling purposes DateFormat DateFormatter = Utility.getDateFormatter(vars); int firstProjectPhase = 0; String strPhaseStartDate = ""; String strPhaseContractDate = ""; String strTaskStartDate = ""; String strTaskContractDate = ""; String strLastContractDate = ""; for (int i = 0; data != null && i < data.length; i++) { strProjectPhase = SequenceIdData.getUUID(); // Calculates the Starting Date of the Phase if (firstProjectPhase == 0) { strPhaseStartDate = strDateFrom; } else { strPhaseStartDate = calculateStartDate(strLastContractDate, DateFormatter); } // Calculates the Contract Date of the Phase strPhaseContractDate = calculateContractDate(strPhaseStartDate, data[i].stdduration, DateFormatter); try { if (ProjectSetTypeData.insertProjectPhase( conn, this, strKey, dataProject[0].adClientId, dataProject[0].adOrgId, vars.getUser(), data[i].description, data[i].mProductId, data[i].cPhaseId, strProjectPhase, data[i].help, data[i].name, data[i].standardqty, strPhaseStartDate, strPhaseContractDate, data[i].seqno) == 1) { strLastContractDate = strPhaseContractDate; ProjectSetTypeData[] data1 = ProjectSetTypeData.selectTask(this, data[i].cPhaseId); int firstProjectTask = 0; for (int j = 0; data1 != null && j < data1.length; j++) { strProjectTask = SequenceIdData.getUUID(); // Calculates the Starting Date of the Task if (firstProjectTask == 0) { strTaskStartDate = strPhaseStartDate; } else { strTaskStartDate = calculateStartDate(strLastContractDate, DateFormatter); } // Calculates the Contract Date of the Task strTaskContractDate = calculateContractDate(strTaskStartDate, data1[j].stdduration, DateFormatter); try { ProjectSetTypeData.insertProjectTask( conn, this, strProjectTask, data1[j].cTaskId, dataProject[0].adClientId, dataProject[0].adOrgId, vars.getUser(), data1[j].seqno, data1[j].name, data1[j].description, data1[j].help, data1[j].mProductId, strProjectPhase, data1[j].standardqty, strTaskStartDate, strTaskContractDate); } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } strLastContractDate = strTaskContractDate; firstProjectTask++; } firstProjectPhase++; } } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } } // Updates project's Type and category String strProjectCategory = ProjectSetTypeData.selectProjectCategory(this, strProjectType); try { ProjectSetTypeData.update( conn, this, vars.getUser(), strProjectType, strProjectCategory, strKey); } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } // Updates project's Starting and Contract Dates ProjectSetTypeData[] dataDates = ProjectSetTypeData.selectDates(this, strKey); String strStartDate = strDateFrom.equals("") ? dataDates[0].startdate : strDateFrom; String strContractDate = strLastContractDate.equals("") ? dataDates[0].datecontract : strLastContractDate; try { ProjectSetTypeData.updateDates( conn, this, vars.getUser(), strStartDate, strContractDate, strKey); } catch (ServletException ex) { myMessage = Utility.translateError(this, vars, vars.getLanguage(), ex.getMessage()); releaseRollbackConnection(conn); return myMessage; } releaseCommitConnection(conn); myMessage.setType("Success"); myMessage.setTitle(Utility.messageBD(this, "Success", vars.getLanguage())); } catch (Exception e) { try { releaseRollbackConnection(conn); } catch (Exception ignored) { } e.printStackTrace(); log4j.warn("Rollback in transaction"); myMessage = Utility.translateError(this, vars, vars.getLanguage(), e.getMessage()); } } return myMessage; }