From d605ea1ae34a63d1954c620afa02e0c92ca04979 Mon Sep 17 00:00:00 2001 From: Paul Luchyn Date: Mon, 5 Dec 2016 11:22:36 +0200 Subject: [PATCH] Changed functional of logs page Added saving of state between tab changes, code refactor --- .../libreplan/web/logs/IIssueLogModel.java | 5 +- .../org/libreplan/web/logs/IRiskLogModel.java | 4 + .../web/logs/IssueLogCRUDController.java | 13 +++ .../org/libreplan/web/logs/IssueLogModel.java | 5 + .../libreplan/web/logs/LogsController.java | 107 ++++++++++++++++++ .../web/logs/RiskLogCRUDController.java | 11 ++ .../org/libreplan/web/logs/RiskLogModel.java | 5 + .../taskpanels/_tabPanelSubcontract.zul | 1 - 8 files changed, 149 insertions(+), 2 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java index ff3f8bd0b..99da463d8 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IIssueLogModel.java @@ -122,5 +122,8 @@ public interface IIssueLogModel { */ List getByParent(Order order); - + /** + * Setter for {@link IssueLog} + */ + void setIssueLog(IssueLog log); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java index 3d8c0d9b0..6b23340ed 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IRiskLogModel.java @@ -122,5 +122,9 @@ public interface IRiskLogModel { */ List getByParent(Order order); + /** + * Setter for {@link RiskLog} + */ + void setRisklog (RiskLog log); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogCRUDController.java index e4737fb97..02c2f28bb 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogCRUDController.java @@ -69,6 +69,8 @@ public class IssueLogCRUDController extends BaseCRUDController { private Listbox status; + private boolean saved; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); @@ -436,6 +438,7 @@ public class IssueLogCRUDController extends BaseCRUDController { } getIssueLog().setStatus(status.getSelectedItem().getLabel()); issueLogModel.confirmSave(); + saved = true; } @Override @@ -448,5 +451,15 @@ public class IssueLogCRUDController extends BaseCRUDController { issueLogModel.remove(entity); } + public void setIssueLogToModel (IssueLog log) { + this.issueLogModel.setIssueLog(log); + } + public Boolean isIssueLogSaved () { + return saved; + } + + public void setDefaultStatus() { + status.setSelectedIndex(0); + } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java index 8eec515ab..89fd8d22c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/IssueLogModel.java @@ -144,6 +144,11 @@ public class IssueLogModel extends IntegrationEntityModel implements IIssueLogMo return issueLogDAO.getByParent(order); } + @Override + public void setIssueLog(IssueLog log) { + this.issueLog = log; + } + @Override public EntityNameEnum getEntityName() { return EntityNameEnum.ISSUE_LOG; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/LogsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/LogsController.java index 11a3fdb36..3f491da2d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/LogsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/LogsController.java @@ -18,6 +18,11 @@ */ package org.libreplan.web.logs; +import org.libreplan.business.logs.entities.IssueLog; +import org.libreplan.business.logs.entities.RiskLog; +import org.libreplan.business.logs.entities.IssueTypeEnum; +import org.libreplan.business.logs.entities.LowMediumHighEnum; +import org.libreplan.business.logs.entities.RiskScoreStatesEnum; import org.libreplan.business.orders.entities.Order; import org.libreplan.web.common.Util; import org.springframework.beans.factory.config.BeanDefinition; @@ -50,6 +55,10 @@ public class LogsController extends GenericForwardComposer { private static Order order = null; + private IssueLog issueLogInMemory = null; + + private RiskLog riskLogInMemory = null; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); @@ -67,6 +76,28 @@ public class LogsController extends GenericForwardComposer { issueLogController = new IssueLogCRUDController(); } try { + // Saving risk log, if it was created, but not saved + saveRiskLogState(); + + /* + * Code below is needed to save issue log if it was created and changed, but not saved. + * If the issue log was not saved - we set it to issue model and show when user go back to issue log tab. + */ + if (issueLogController.isIssueLogSaved()) { + issueLogInMemory = null; + } + if (issueLogInMemory != null) { + issueLogController.setIssueLogToModel(issueLogInMemory); + issueLogController.doAfterCompose(issueLogWindow); + issueLogController.goToEditForm(issueLogInMemory); + issueLogController.setDefaultStatus(); + return; + } + + /* + * Normal logic flow: no issue log created, and not saved. + * This will show to user issue log list. + */ issueLogController.doAfterCompose(issueLogWindow); } catch (Exception e) { throw new RuntimeException(e); @@ -81,6 +112,27 @@ public class LogsController extends GenericForwardComposer { riskLogController = new RiskLogCRUDController(); } try { + // Saving issue log, if it was created, but not saved. + saveIssueLogState(); + + /* + * Code below is needed to save risk log if it was created and changed, but not saved. + * If the risk log was not saved - we set it to risk model and show when user go back to risk log tab. + */ + if (riskLogController.isRiskLogSaved()) { + riskLogInMemory = null; + } + if (riskLogInMemory != null) { + riskLogController.setRiskLogToModel(riskLogInMemory); + riskLogController.doAfterCompose(riskLogWindow); + riskLogController.goToEditForm(riskLogInMemory); + return; + } + + /* + * Normal logic flow: no risk log created, and not saved. + * This will show to user risk log list. + */ riskLogController.doAfterCompose(riskLogWindow); } catch (Exception e) { throw new RuntimeException(e); @@ -104,4 +156,59 @@ public class LogsController extends GenericForwardComposer { public static Order getOrder() { return order; } + + private boolean isIssueLogChanged() { + if (issueLogController.getIssueLog() != null) { + IssueLog issueLog = issueLogController.getIssueLog(); + + // "Date raised" and "Created by" are not handled + if (!(issueLog.getOrder() == null && + issueLog.getType() == IssueTypeEnum.getDefault() && + "LOW".equals(issueLog.getStatus()) && + issueLog.getDescription() == null && + issueLog.getPriority() == LowMediumHighEnum.getDefault() && + issueLog.getSeverity() == LowMediumHighEnum.getDefault() && + issueLog.getAssignedTo() == null && + issueLog.getDeadline() == null && + issueLog.getDateResolved() == null && + issueLog.getNotes() == null)) { + return true; + } + } + return false; + } + + private boolean isRiskLogChanged() { + if (riskLogController.getRiskLog() != null) { + RiskLog riskLog = riskLogController.getRiskLog(); + + // "Date created" and "Created by" are not handled + if (!(riskLog.getProjectName() == null && + riskLog.getStatus() == null && + riskLog.getProbability() == LowMediumHighEnum.getDefault() && + riskLog.getImpact() == LowMediumHighEnum.getDefault() && + riskLog.getDescription() == null && + riskLog.getCounterMeasures() == null && + riskLog.getScoreAfterCM() == RiskScoreStatesEnum.ZERO && + riskLog.getContingency() == null && + riskLog.getActionWhen() == null && + riskLog.getResponsible() == null && + riskLog.getNotes() == null)) { + return true; + } + } + return false; + } + + private void saveIssueLogState() { + if (issueLogController!=null && issueLogController.getIssueLog()!=null && isIssueLogChanged()) { + issueLogInMemory = issueLogController.getIssueLog(); + } + } + + private void saveRiskLogState() { + if (riskLogController!=null && riskLogController.getRiskLog()!=null && isRiskLogChanged()) { + riskLogInMemory = riskLogController.getRiskLog(); + } + } } \ No newline at end of file diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogCRUDController.java index 879c5b654..75ff58802 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogCRUDController.java @@ -67,6 +67,8 @@ public class RiskLogCRUDController extends BaseCRUDController { private Textbox riskScore; + private boolean saved; + /** * Renders LOW, MEDIUM, HIGH enums. * @@ -416,6 +418,7 @@ public class RiskLogCRUDController extends BaseCRUDController { } riskLogModel.confirmSave(); + saved = true; } @Override @@ -428,4 +431,12 @@ public class RiskLogCRUDController extends BaseCRUDController { riskLogModel.remove(entity); } + public Boolean isRiskLogSaved () { + return saved; + } + + public void setRiskLogToModel (RiskLog log) { + this.riskLogModel.setRisklog(log); + } + } \ No newline at end of file diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java index 3b89bb061..9feed25dd 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/logs/RiskLogModel.java @@ -145,6 +145,11 @@ public class RiskLogModel extends IntegrationEntityModel implements IRiskLogMode return riskLogDAO.getByParent(order); } + @Override + public void setRisklog(RiskLog log) { + this.riskLog = log; + } + @Override public EntityNameEnum getEntityName() { return EntityNameEnum.RISK_LOG; diff --git a/libreplan-webapp/src/main/webapp/planner/taskpanels/_tabPanelSubcontract.zul b/libreplan-webapp/src/main/webapp/planner/taskpanels/_tabPanelSubcontract.zul index c30121b8e..57a4cc061 100644 --- a/libreplan-webapp/src/main/webapp/planner/taskpanels/_tabPanelSubcontract.zul +++ b/libreplan-webapp/src/main/webapp/planner/taskpanels/_tabPanelSubcontract.zul @@ -55,7 +55,6 @@ visible="@{subController.sent}"/> -