From fc8bea4b89b9bd048822ae486d22c2768871f119 Mon Sep 17 00:00:00 2001 From: Florian Lambers <fl462057@fh-muenster.de> Date: Wed, 17 Nov 2021 21:38:40 +0100 Subject: [PATCH] added activity flags --- .../migration/MigrationService.java | 64 ++++++++++++------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java index c9059e6..e83ab82 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/migration/MigrationService.java @@ -2,43 +2,31 @@ package de.fhmuenster.masterthesis.Testgenerator.migration; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import java.util.List; import javax.annotation.PostConstruct; -import org.eclipse.emf.common.util.BasicEList; -import org.eclipse.emf.common.util.EList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.fhmuenster.masterthesis.Testgenerator.rest.dto.MigrationResultWrapperDTO; import de.fhmuenster.masterthesis.Testgenerator.rest.service.change.ChangeService; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.test.TestService; import de.fhmuenster.masterthesis.Testgenerator.yaml.MigrationResultStatus; import de.fhmuenster.masterthesis.Testgenerator.yaml.MigrationYaml; import de.fhmuenster.masterthesis.Testgenerator.yaml.YamlReader; import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer; import de.fhmuenster.masterthesis.testgeneratorDSL.Flow; -import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement; import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElementReference; import de.fhmuenster.masterthesis.testgeneratorDSL.ManualTaskFlowElement; import de.fhmuenster.masterthesis.testgeneratorDSL.UserTaskFlowElement; import de.fhmuenster.masterthesis.testgeneratorDSL.SequenceFlowElement; -import de.fhmuenster.masterthesis.testgeneratorDSL.ServiceTaskFlowElement; import de.fhmuenster.masterthesis.testgeneratorDSL.BusinessRuleTaskFlowElement; import de.fhmuenster.masterthesis.testgeneratorDSL.Flag; import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils; -import org.camunda.bpm.model.bpmn.instance.SequenceFlow; -import org.camunda.bpm.model.bpmn.instance.ServiceTask; -import org.camunda.bpm.model.bpmn.instance.ManualTask; @Service public class MigrationService { - - private MigrationYaml yaml; - + @Autowired private ChangeService changeService; @@ -54,7 +42,6 @@ public class MigrationService { //Annahme: Flows sind identisch MigrationResultWrapper migrationResultWrapper = new MigrationResultWrapper(); - List<FlowChangeWrapper> result = new ArrayList<>(); // 1. Schritt: Prüfen, ob in einem Flow neue Elemente hinzugekommen sind List<FlowChangeWrapper> activityAddActionResults = detectActivityAddActions(oldDSL.getFlows(), newDSL.getFlows()); @@ -65,20 +52,18 @@ public class MigrationService { System.out.println("+++ Neu: " + fcw.getFlowElement().getName() + " [" + fcw.getActionType() + "] in Flow " + fcw.getFlow().getName() + " mit Status: " + fcw.getMigrationResult().getPriority()); - try { - newDSL.getFlow(fcw.getFlow().getName()).setFlag(Flag.YELLOW); - - + try { + Flag maxFlag = Flag.NONE; List<FlowElementReference> fers = newDSL.getFlow(fcw.getFlow().getName()).getInclElements(); - for(FlowElementReference fer : fers) { - fer.setFlag(Flag.GREEN); - System.out.println(fer.getRef().getName()); + if(fer.getRef().getName().equals(fcw.getFlowElement().getName())) { + Flag newFlag = this.convertMigrationResultToFlag(fcw.getMigrationResult().getStatus()); + fer.setFlag(newFlag); + maxFlag = this.calcMaxFlag(maxFlag, newFlag); + } } - //newDSL.getFlow(fcw.getFlow().getName()).getInclElements().clear(); - //newDSL.getFlow(fcw.getFlow().getName()).getInclElements().replaceAll(fers); - + newDSL.getFlow(fcw.getFlow().getName()).setFlag(maxFlag); newDSL.serialize(); } catch (IOException e) { @@ -220,4 +205,35 @@ public class MigrationService { return globalPriority; } + + private Flag convertMigrationResultToFlag(MigrationResultStatus status) { + switch(status) { + case GREEN: + return Flag.GREEN; + case YELLOW: + return Flag.YELLOW; + case RED: + return Flag.RED; + default: + return Flag.GREEN; + } + } + + private Flag calcMaxFlag(Flag currentFlag, Flag newFlag) { + if (currentFlag.equals(Flag.NONE) && + (newFlag.equals(Flag.GREEN) || newFlag.equals(Flag.YELLOW) || newFlag.equals(Flag.RED))) { + return newFlag; + } + if (currentFlag.equals(Flag.GREEN) && + (newFlag.equals(Flag.YELLOW) || newFlag.equals(Flag.RED))) { + return newFlag; + } + if (currentFlag.equals(Flag.YELLOW) && + (newFlag.equals(Flag.RED))) { + return newFlag; + } + + return currentFlag; + + } } -- GitLab