Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend into DEVELOP
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java
index 610d505..3fb2a3d 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/GfiGrid.java
@@ -24,8 +24,7 @@
import org.eclipse.openk.gridfailureinformation.constants.Constants;
import org.springframework.stereotype.Component;
-import static org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask.OutputPort.NO;
-import static org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask.OutputPort.YES;
+import static org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask.OutputPort.*;
import static org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState.*;
@Log4j2
@@ -52,6 +51,9 @@
ProcessTask canceledEndpoint = register( CANCELED,
new UIStoreFailureInformationTask( "State CANCELED UI Task", true));
+
+ DecisionTask decidePublished = new DecideFailureInfoPublished();
+ ProcessTask storePubStatusWithdrawnOnCancel = new StorePublishStatusTask(Constants.PUB_STATUS_ZURUECKGEZOGEN);
ProcessTask publishMessage = register( QUALIFIED,
new UIStoreFailureInformationTask( "State QUALIFIED UI Task", true));
@@ -80,7 +82,6 @@
enterMessage.connectOutputTo( storeEditStatusCreated );
// -> nein
storeEditStatusCreated.connectOutputTo( qualifyMessage );
- // TODO Beabreitungsstatus: aktualisiert berücksichtigen: Zweig: Meldung aktualisieren
qualifyMessage.connectOutputTo(decideCanceled);
//Meldung storniert?
decideCanceled.connectOutputTo( YES, storeEditStatusCanceled ); //Status nicht speichern da sonst doppelt, -> nächster Porzessschritt
@@ -88,12 +89,17 @@
storeEditStatusQualified.connectOutputTo(publishMessage);
publishMessage.connectOutputTo(decideUpdated);
- decideUpdated.connectOutputTo(YES, storeEditStatusUpdated);
- //decideUpdated.connectOutputTo(NO, completedEndpoint);
- decideUpdated.connectOutputTo(NO, setEndDate);
+ decideUpdated.connectOutputTo(PORT1, storeEditStatusUpdated);
+ decideUpdated.connectOutputTo(PORT2, setEndDate);
+ decideUpdated.connectOutputTo(PORT3, storeEditStatusCanceled);
setEndDate.connectOutputTo(storePublicationStatusWithdrawn);
storePublicationStatusWithdrawn.connectOutputTo(completedEndpoint);
+ storeEditStatusCanceled.connectOutputTo(decidePublished);
+ decidePublished.connectOutputTo( YES, storePubStatusWithdrawnOnCancel);
+ decidePublished.connectOutputTo( NO, canceledEndpoint);
+ storePubStatusWithdrawnOnCancel.connectOutputTo( canceledEndpoint );
+
storeForceEditStatusQualified.connectOutputTo(publishMessageToChannels);
publishMessageToChannels.connectOutputTo(storePublicationStatusPublished);
storePublicationStatusPublished.connectOutputTo(updateMessage);
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoPublished.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoPublished.java
new file mode 100644
index 0000000..fe76268
--- /dev/null
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoPublished.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2018 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+
+package org.eclipse.openk.gridfailureinformation.bpmn.impl.tasks;
+
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.gridfailureinformation.bpmn.base.ProcessException;
+import org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessSubject;
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
+
+@Log4j2
+public class DecideFailureInfoPublished extends DecisionTask<GfiProcessSubject> {
+
+ public DecideFailureInfoPublished() {
+ super("Decision: Ist die Störungsinformation veröffentlicht?");
+ }
+
+ @Override
+ public OutputPort decide(GfiProcessSubject subject) throws ProcessException {
+ boolean isPublished = Constants.PUB_STATUS_VEROEFFENTLICHT.equals(
+ subject.getFailureInformationDto().getPublicationStatus()
+ );
+
+ String loggerOutput1 = "Decide: ";
+
+ if (isPublished) {
+ log.debug(loggerOutput1 + getDescription() + "\" -> Firing YES");
+ return OutputPort.YES;
+ } else {
+ log.debug(loggerOutput1 + getDescription() + "\" -> Firing NO");
+ return OutputPort.NO;
+ }
+ }
+
+}
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java
index 11538aa..00f03df 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/tasks/DecideFailureInfoUpdated.java
@@ -38,12 +38,18 @@
String loggerOutput1 = "Decide: ";
if (newState == GfiProcessState.UPDATED) {
- log.debug(loggerOutput1 + getDescription() + "\" -> Firing YES");
- return OutputPort.YES;
- } else if (newState == GfiProcessState.COMPLETED) {
- log.debug(loggerOutput1 + getDescription() + "\" -> Firing NO");
- return OutputPort.NO;
- } else {
+ log.debug(loggerOutput1 + getDescription() + "\" -> Firing PORT1");
+ return OutputPort.PORT1;
+ }
+ else if (newState == GfiProcessState.COMPLETED) {
+ log.debug(loggerOutput1 + getDescription() + "\" -> Firing PORT2");
+ return OutputPort.PORT2;
+ }
+ else if (newState == GfiProcessState.CANCELED) {
+ log.debug(( loggerOutput1 + getDescription() + "\" -> Firing PORT3"));
+ return OutputPort.PORT3;
+ }
+ else {
throw new ProcessException(this.getDescription() + ": Invalid status request:" + newState,
new InternalServerErrorException("invalid.status.request"));
}
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/DecideFailureInfoPublishedTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/DecideFailureInfoPublishedTest.java
new file mode 100644
index 0000000..3fe3eb5
--- /dev/null
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/bpmn/impl/DecideFailureInfoPublishedTest.java
@@ -0,0 +1,28 @@
+package org.eclipse.openk.gridfailureinformation.bpmn.impl;
+
+import org.eclipse.openk.gridfailureinformation.bpmn.base.ProcessException;
+import org.eclipse.openk.gridfailureinformation.bpmn.base.tasks.DecisionTask;
+import org.eclipse.openk.gridfailureinformation.bpmn.impl.tasks.DecideFailureInfoPublished;
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
+import org.eclipse.openk.gridfailureinformation.support.MockDataHelper;
+import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class DecideFailureInfoPublishedTest {
+
+
+ @Test
+ public void shouldDecideCorrectly() throws ProcessException {
+ FailureInformationDto fiDto = MockDataHelper.mockFailureInformationDto();
+ fiDto.setPublicationStatus(Constants.PUB_STATUS_VEROEFFENTLICHT);
+ GfiProcessSubject sub = GfiProcessSubject.of(fiDto, null);
+ DecisionTask dtask = new DecideFailureInfoPublished();
+ assertEquals(DecisionTask.OutputPort.YES, dtask.decide(sub));
+
+ sub.getFailureInformationDto().setPublicationStatus(Constants.PUB_STATUS_UNVEROEFFENTLICHT);
+ assertEquals(DecisionTask.OutputPort.NO, dtask.decide(sub));
+ }
+
+}