Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoAnnotationData.java9
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoStrings.java5
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/DispositionTestSuite.launch4
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java6
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoConnectorTest.java42
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidatorTest.java55
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/InternalTestSuite.java6
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoApiImpl.java13
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoConnector.java35
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidator.java21
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoUtil.java3
11 files changed, 170 insertions, 29 deletions
diff --git a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoAnnotationData.java b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoAnnotationData.java
index 626a91d617e..24074077ca2 100644
--- a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoAnnotationData.java
+++ b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoAnnotationData.java
@@ -34,6 +34,7 @@ public class DispoAnnotationData implements Identifiable<String> {
private boolean isResolutionValid;
private String resolutionType;
private boolean isDefault;
+ private boolean isAnalyze;
public DispoAnnotationData() {
@@ -93,6 +94,10 @@ public class DispoAnnotationData implements Identifiable<String> {
return isDefault;
}
+ public boolean getIsAnalyze() {
+ return isAnalyze;
+ }
+
public void setLocationRefs(String locationRefs) {
this.locationRefs = locationRefs;
}
@@ -137,6 +142,10 @@ public class DispoAnnotationData implements Identifiable<String> {
this.isDefault = isDefault;
}
+ public void setIsAnalyze(boolean isAnalyzed) {
+ this.isAnalyze = isAnalyzed;
+ }
+
public boolean isValid() {
return (isConnected || isDefault) && isResolutionValid && isResolutionTypeValid();
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoStrings.java b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoStrings.java
index 66cfa748de5..de07946094f 100644
--- a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoStrings.java
+++ b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoStrings.java
@@ -43,6 +43,7 @@ public class DispoStrings {
public static final String Item_Pass = "PASS";
public static final String Item_Complete = "COMPLETE";
public static final String Item_InComplete = "INCOMPLETE";
+ public static final String Item_Analyzed = "ANALYZED";
public static final String Operation_Import = "Import";
public static final String Operation_MassSendStatus = "MassSendDispoItemStatus";
@@ -64,4 +65,8 @@ public class DispoStrings {
public static final String SCRIPT_NAME = "\t\t\t<Name>%s</Name>\n";
public static final String SCRIPT_PATH = "\t\t\t<Path>%s</Path>\n";
+ public static final String ANALYZE_CODE = "Modify_Code";
+ public static final String ANALYZE_TEST = "Modify_Test";
+ public static final String ANALYZE_REQT = "Modify_Reqt";
+
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/DispositionTestSuite.launch b/plugins/org.eclipse.osee.disposition.rest.test/DispositionTestSuite.launch
index 2e959376f9a..eda50fca5d3 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/DispositionTestSuite.launch
+++ b/plugins/org.eclipse.osee.disposition.rest.test/DispositionTestSuite.launch
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
<setAttribute key="additional_plugins">
-<setEntry value="org.eclipse.equinox.ds:1.4.300.v20150423-1356:default:false"/>
-<setEntry value="org.eclipse.osee.orcs.db.mock:0.24.0.qualifier:default:false"/>
+<setEntry value="org.eclipse.equinox.ds:1.4.400.v20160226-2036:default:false"/>
+<setEntry value="org.eclipse.osee.orcs.db.mock:0.25.4.qualifier:default:false"/>
<setEntry value="org.hsqldb:2.2.9.qualifier:default:false"/>
<setEntry value="org.mockito:1.9.0.qualifier:default:false"/>
</setAttribute>
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java
index d62b94981a7..823f405901d 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java
@@ -45,7 +45,6 @@ import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
-import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
@@ -297,7 +296,6 @@ public class DispoApiTest {
// Only need to createUpdatedItem with updateStatus = True when annotation is valid and current status is INCOMPLETE
annotationToCreate.setResolution("VALID");
when(dispoItem.getStatus()).thenReturn("COMPLETE");
- when(validator.validate(Matchers.any(DispoAnnotationData.class))).thenReturn(true);
String acutal = dispoApi.createDispoAnnotation(branch, itemId.getGuid(), annotationToCreate, "name", false);
assertEquals(expectedId, acutal);
@@ -372,24 +370,22 @@ public class DispoApiTest {
annotations.set(0, origAnnotation);
// Now change Location Refs, disconnector should be called
newAnnotation.setLocationRefs("1-10");
- when(validator.validate(Matchers.any(DispoAnnotationData.class))).thenReturn(false);
actual = dispoApi.editDispoAnnotation(branch, itemId.getGuid(), expectedId, newAnnotation, "name", false);
assertTrue(actual);
annotations.set(0, origAnnotation);
// reset the resolution and change just the resolution type, disconnector and should be called
newAnnotation.setLocationRefs("5-10");
newAnnotation.setResolutionType("TEST");
- when(validator.validate(Matchers.any(DispoAnnotationData.class))).thenReturn(true);
actual = dispoApi.editDispoAnnotation(branch, itemId.getGuid(), expectedId, newAnnotation, "name", false);
assertTrue(actual);
annotations.set(0, origAnnotation);
// Reset resolution type, only change to resolution, disconnector is called
newAnnotation.setResolutionType("CODE");
newAnnotation.setResolution("NEW");
- when(validator.validate(Matchers.any(DispoAnnotationData.class))).thenReturn(true);
actual = dispoApi.editDispoAnnotation(branch, itemId.getGuid(), expectedId, newAnnotation, "name", false);
assertTrue(actual);
+ verify(validator, times(2)).validate(newAnnotation);
verify(dispoConnector, times(3)).connectAnnotation(any(DispoAnnotationData.class), eq(mockDiscrepancies));
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoConnectorTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoConnectorTest.java
index e14f6c01065..9cefe224edc 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoConnectorTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoConnectorTest.java
@@ -114,6 +114,48 @@ public class DispoConnectorTest {
}
@Test
+ public void testConnectAnnotationsStringAnalyze() {
+ // Convert Location Refs to have characters
+ for (Discrepancy discrepancy : dispoItem.getDiscrepanciesList().values()) {
+ discrepancy.setLocation(discrepancy.getLocation() + "zzz");
+ }
+
+ int idsSize = 13;
+ // Create one annotation with every discrepancy covered
+ DispoAnnotationData annotationOne = new DispoAnnotationData();
+ annotationOne.setLocationRefs("1zzz, 2zzz, 3zzz,4zzz,5zzz,12zzz,13zzz,14zzz,15zzz,16zzz,17zzz,18zzz,20zzz");
+ annotationOne.setIsResolutionValid(true);
+ annotationOne.setResolutionType("Modify_Code");
+ annotationOne.setIsAnalyze(true);
+ annotationOne.setId(annotIdOne);
+ List<String> idsOfCoveredDisc = new ArrayList<String>();
+ annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDisc);
+
+ dispoConnector.connectAnnotation(annotationOne, dispoItem.getDiscrepanciesList());
+ List<DispoAnnotationData> annotationsList = new ArrayList<DispoAnnotationData>();
+ annotationsList.add(annotationOne);
+ dispoItem.setAnnotationsList(annotationsList);
+
+ // annotation 1 should be connected to all Discrepancies
+ List<String> idsOfCoveredDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
+ Assert.assertTrue(idsOfCoveredDiscrepancies.size() == idsSize);
+ for (int i = 0; i < idsOfCoveredDiscrepancies.size(); i++) {
+ if (i < 5) {//first 5 discrepancies are from ids array 1-5
+ assertEquals(idsOfCoveredDiscrepancies.get(i), idsForDiscrepancies1_5[i]);
+ } else if (i < 12) {
+ assertEquals(idsOfCoveredDiscrepancies.get(i), idsForDiscrepancies12_18[i - 5]);
+ } else {
+ assertEquals(idsOfCoveredDiscrepancies.get(i), id20);
+ }
+ }
+
+ assertTrue(annotationOne.getIsConnected());
+
+ String actual = dispoConnector.getItemStatus(dispoItem);
+ assertEquals(DispoStrings.Item_Analyzed, actual);
+ }
+
+ @Test
public void testConnectAnnotationsStringIncomplete() {
// Convert Location Refs to have characters
for (Discrepancy discrepancy : dispoItem.getDiscrepanciesList().values()) {
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidatorTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidatorTest.java
new file mode 100644
index 00000000000..5aec7563aca
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidatorTest.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.disposition.rest.internal;
+
+import static org.eclipse.osee.disposition.model.DispoStrings.ANALYZE_CODE;
+import org.eclipse.osee.disposition.model.DispoAnnotationData;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author Angel Avila
+ */
+public class DispoResolutionValidatorTest {
+
+ @Before
+ public void setUp() {
+ }
+
+ @Test
+ public void testValidate() {
+ DispoAnnotationData annotation = new DispoAnnotationData();
+ annotation.setResolutionType(ANALYZE_CODE);
+ annotation.setResolution("");
+
+ DispoResolutionValidator validator = new DispoResolutionValidator();
+
+ validator.validate(annotation);
+
+ Assert.assertTrue(annotation.getIsAnalyze());
+ Assert.assertTrue(!annotation.getIsResolutionValid());
+
+ annotation.setResolution("something");
+ validator.validate(annotation);
+
+ Assert.assertTrue(annotation.getIsAnalyze());
+ Assert.assertTrue(annotation.getIsResolutionValid());
+
+ annotation.setResolutionType("non-essense");
+ validator.validate(annotation);
+
+ Assert.assertTrue(!annotation.getIsAnalyze());
+ Assert.assertTrue(annotation.getIsResolutionValid());
+
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/InternalTestSuite.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/InternalTestSuite.java
index e77d285b22b..90ee653b4b4 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/InternalTestSuite.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/InternalTestSuite.java
@@ -17,7 +17,11 @@ import org.junit.runners.Suite;
* @author Angel Avila
*/
@RunWith(Suite.class)
-@Suite.SuiteClasses({DispoApiTest.class, DispoConnectorTest.class, LocationRangesCompressorTest.class})
+@Suite.SuiteClasses({
+ DispoApiTest.class,
+ DispoConnectorTest.class,
+ LocationRangesCompressorTest.class,
+ DispoResolutionValidatorTest.class})
public class InternalTestSuite {
// Test Suite
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoApiImpl.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoApiImpl.java
index 2ee9e2b2df1..832272a1ff4 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoApiImpl.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoApiImpl.java
@@ -343,10 +343,12 @@ public class DispoApiImpl implements DispoApi {
String newResolution = newAnnotation.getResolution();
String newResolutionType = newAnnotation.getResolutionType();
- if (!origAnnotation.getResolutionType().equals(newResolutionType) || !origAnnotation.getResolution().equals(
- newResolution)) {
- newAnnotation.setIsResolutionValid(validateResolution(newAnnotation));
+ boolean isTypeChange = !origAnnotation.getResolutionType().equals(newResolutionType);
+ boolean isResolutionChange = !origAnnotation.getResolution().equals(newResolution);
+
+ if (isTypeChange || isResolutionChange) {
needToReconnect = true;
+ resolutionValidator.validate(newAnnotation);
}
if (!origAnnotation.getLocationRefs().equals(newLocationRefs)) {
needToReconnect = true;
@@ -357,7 +359,6 @@ public class DispoApiImpl implements DispoApi {
dispoConnector.connectAnnotation(newAnnotation, discrepanciesList);
}
annotationsList.set(indexOfAnnotation, newAnnotation);
- dispoItem.getAnnotationsList().get(0);
ArtifactReadable author = getQuery().findUser();
DispoItemData modifiedDispoItem = DispoUtil.itemArtToItemData(getDispoItemById(branch, itemId), true);
@@ -594,10 +595,6 @@ public class DispoApiImpl implements DispoApi {
return newList;
}
- private boolean validateResolution(DispoAnnotationData annotation) {
- return resolutionValidator.validate(annotation);
- }
-
@Override
public void copyDispoSetCoverage(BranchId sourceBranch, Long sourceCoverageUuid, BranchId destBranch, String destSetId, CopySetParams params) {
Map<String, ArtifactReadable> coverageUnits = getQuery().getCoverageUnits(sourceBranch, sourceCoverageUuid);
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoConnector.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoConnector.java
index 0091a0258c3..f58df801577 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoConnector.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoConnector.java
@@ -12,6 +12,7 @@ package org.eclipse.osee.disposition.rest.internal;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -68,24 +69,38 @@ public class DispoConnector {
if (item.getDiscrepanciesList().size() == 0) {
toReturn = DispoStrings.Item_Pass;
- } else if (allAnnotationsValid(annotations) && allUncoveredDiscprepancies.isEmpty()) {
- toReturn = DispoStrings.Item_Complete;
} else {
- toReturn = DispoStrings.Item_InComplete;
+ Collection<DispoAnnotationData> defaultAnnotations = new HashSet<>();
+ Collection<DispoAnnotationData> invalidAnotations = new HashSet<>();
+ Collection<DispoAnnotationData> analyzeAnnotations = new HashSet<>();
+ parseThroughAnnotations(annotations, defaultAnnotations, invalidAnotations, analyzeAnnotations);
+
+ if (invalidAnotations.isEmpty() && allUncoveredDiscprepancies.isEmpty()) {
+ if (analyzeAnnotations.isEmpty()) {
+ toReturn = DispoStrings.Item_Complete;
+ } else {
+ toReturn = DispoStrings.Item_Analyzed;
+ }
+ } else {
+ toReturn = DispoStrings.Item_InComplete;
+ }
}
return toReturn;
}
- private boolean allAnnotationsValid(List<DispoAnnotationData> annotations) {
- if (annotations != null) {
- for (DispoAnnotationData annotation : annotations) {
- if (!annotation.getIsDefault() && !annotation.isValid()) {
- return false;
- }
+ private void parseThroughAnnotations(Collection<DispoAnnotationData> annotations, Collection<DispoAnnotationData> defaultAnnotations, Collection<DispoAnnotationData> invalidAnnotations, Collection<DispoAnnotationData> analyzeAnnotations) {
+ for (DispoAnnotationData annotation : annotations) {
+ if (annotation.getIsDefault()) {
+ defaultAnnotations.add(annotation);
+ }
+ if (!annotation.isValid()) {
+ invalidAnnotations.add(annotation);
+ }
+ if (annotation.getIsAnalyze()) {
+ analyzeAnnotations.add(annotation);
}
}
- return true;
}
private ArrayList<String> createDiscrepanciesList(Map<String, Discrepancy> discrepancies) {
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidator.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidator.java
index 11476e73034..a546b5e2496 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidator.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidator.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.internal;
+import static org.eclipse.osee.disposition.model.DispoStrings.ANALYZE_CODE;
+import static org.eclipse.osee.disposition.model.DispoStrings.ANALYZE_REQT;
+import static org.eclipse.osee.disposition.model.DispoStrings.ANALYZE_TEST;
import java.util.Map;
import org.eclipse.osee.disposition.model.DispoAnnotationData;
import org.eclipse.osee.framework.jdk.core.util.Strings;
@@ -21,14 +24,12 @@ import org.eclipse.osee.logger.Log;
public class DispoResolutionValidator {
private Log logger;
- private String resolutionRegex;
public void setLogger(Log logger) {
this.logger = logger;
}
public void start(Map<String, Object> properties) {
- resolutionRegex = (String) properties.get("TestScriptResolution");
logger.trace("Starting ResolutionValidator...");
}
@@ -36,7 +37,21 @@ public class DispoResolutionValidator {
logger.trace("Stopping ResolutionValidator...");
}
- public boolean validate(DispoAnnotationData annotation) {
+ public void validate(DispoAnnotationData annotation) {
+ annotation.setIsResolutionValid(isValid(annotation));
+ annotation.setIsAnalyze(isAnalyze(annotation));
+ }
+
+ private boolean isAnalyze(DispoAnnotationData annotation) {
+ String type = annotation.getResolutionType();
+ boolean toReturn = false;
+ if (type.equals(ANALYZE_CODE) || type.equals(ANALYZE_TEST) || type.equals(ANALYZE_REQT)) {
+ toReturn = true;
+ }
+ return toReturn;
+ }
+
+ private boolean isValid(DispoAnnotationData annotation) {
String pcr = annotation.getResolution().toUpperCase().trim();
boolean isValid = false;
if (Strings.isValid(pcr)) {
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoUtil.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoUtil.java
index 3b7d2eb690e..59c79c7d3ec 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoUtil.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoUtil.java
@@ -403,6 +403,9 @@ public final class DispoUtil {
if (object.has("isValid")) {
dispoAnnotation.setIsConnected(object.getBoolean("isValid"));
}
+ if (object.has("isAnalyze")) {
+ dispoAnnotation.setIsAnalyze(object.getBoolean("isAnalyze"));
+ }
if (object.has("developerNotes")) {
dispoAnnotation.setDeveloperNotes(object.getString("developerNotes"));
}

Back to the top