diff options
Diffstat (limited to 'plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/ContinuousIntegrationResource.java')
-rw-r--r-- | plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/ContinuousIntegrationResource.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/ContinuousIntegrationResource.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/ContinuousIntegrationResource.java index ac7d74cdc03..9f643b74a67 100644 --- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/ContinuousIntegrationResource.java +++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/ContinuousIntegrationResource.java @@ -23,9 +23,13 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.eclipse.osee.disposition.model.CiItemData; import org.eclipse.osee.disposition.model.CiSetData; +import org.eclipse.osee.disposition.model.CiTestPoint; +import org.eclipse.osee.disposition.model.Discrepancy; import org.eclipse.osee.disposition.model.DispoAnnotationData; import org.eclipse.osee.disposition.model.DispoItem; +import org.eclipse.osee.disposition.model.DispoItemData; import org.eclipse.osee.disposition.rest.DispoApi; +import org.eclipse.osee.disposition.rest.util.DispoUtil; import org.eclipse.osee.framework.core.data.BranchId; /** @@ -86,6 +90,7 @@ public class ContinuousIntegrationResource { BranchId branch = BranchId.valueOf(data.getSetData().getBranchId()); String itemId = dispoApi.getDispoItemId(branch, data.getSetData().getDispoSetId(), data.getScriptName()); if (itemId != null && !itemId.isEmpty()) { + updateDiscrepencies(data, branch, itemId, userName); dispoApi.deleteAllDispoAnnotation(branch, itemId, userName, true); response = createAndUpdateAnnotation(data, userName, response, branch, itemId); } @@ -95,6 +100,30 @@ public class ContinuousIntegrationResource { return response; } + private void updateDiscrepencies(CiItemData data, BranchId branch, String itemId, String userName) { + CiTestPoint testPoints = data.getTestPoints(); + DispoItem item = dispoApi.getDispoItemById(branch, itemId); + DispoItemData itemData = DispoUtil.itemArtToItemData(item, true); + String asRanges = itemData.getDiscrepanciesAsRanges(); + if (!testPoints.getFail().equals(asRanges)) { + // remove ones that are now passing + List<Integer> ranges = DispoUtil.splitDiscrepancyLocations(testPoints.getPass()); + List<String> discrepToRemove = DispoUtil.findDiscrepancyLocsToRemove(ranges, item); + for (String toRemove : discrepToRemove) { + dispoApi.deleteDispoDiscrepancy(branch, itemId, toRemove, userName); + } + // add ones that are new + ranges = DispoUtil.splitDiscrepancyLocations(testPoints.getFail()); + List<String> discrepToAdd = DispoUtil.findMissingDiscrepancyLocs(ranges, item); + for (String toAdd : discrepToAdd) { + Discrepancy discrepancy = new Discrepancy(); + String discrepancyId = dispoApi.createDispoDiscrepancy(branch, itemId, discrepancy, userName); + discrepancy.setLocation(toAdd); + dispoApi.editDispoDiscrepancy(branch, itemId, discrepancyId, discrepancy, userName); + } + } + } + private Response createAndUpdateAnnotation(CiItemData data, String userName, Response response, BranchId branchId, String itemId) { for (DispoAnnotationData annotation : data.getAnnotations()) { DispoAnnotationData temp = new DispoAnnotationData(); |