Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngel Avila2014-04-08 18:11:08 +0000
committerAngel Avila2014-04-10 02:10:11 +0000
commit5ddfa7ebe2f06ea2c213eb2834de1b8d0b691eab (patch)
tree27a6a298fb97297a71dbdfc6c85801ef38e7640f /plugins
parent720b641a40ae4b692076f3d24e594038198fbb13 (diff)
downloadorg.eclipse.osee-5ddfa7ebe2f06ea2c213eb2834de1b8d0b691eab.tar.gz
org.eclipse.osee-5ddfa7ebe2f06ea2c213eb2834de1b8d0b691eab.tar.xz
org.eclipse.osee-5ddfa7ebe2f06ea2c213eb2834de1b8d0b691eab.zip
refactor[ats_ZSWF7]: Update Dispo Model
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/Discrepancy.java31
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoAnnotationData.java26
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItem.java6
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItemData.java22
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSet.java3
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSetData.java21
-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.launch (renamed from plugins/org.eclipse.osee.disposition.rest.test/DispositionOsgiTestSuite.launch)4
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/DispositionTestSuite.java5
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionIntegrationTest.java (renamed from plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionApiTest.java)27
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionOsgiTestSuite.java2
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/util/DispositionInitializer.java47
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java (renamed from plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispositionApiTest.java)143
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoConnectorTest.java551
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/InternalTestSuite.java2
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressorTest.java38
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/AnnotationResourceTest.java70
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoItemResourceTest.java56
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResourceTest.java28
-rw-r--r--plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoSetResourceTest.java51
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/META-INF/MANIFEST.MF3
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.app.xml2
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.service.xml2
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/OSGI-INF/resolution.validator.service.xml8
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoApi.java18
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoConstants.java8
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoApiImpl.java226
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoConnector.java241
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoDataFactory.java27
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoItemArtifact.java22
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoQuery.java8
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidator.java39
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoSetArtifact.java6
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoWriter.java10
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressor.java83
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/OrcsStorageImpl.java179
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/types/OseeTypes_Dispo.osee45
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoAnnotationMessageWriter.java9
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoSetMessageWriter.java9
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/AnnotationResource.java63
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoAdminResource.java48
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoApplication.java21
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoHtmlOutputStream.java111
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoInitResource.java54
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoItemResource.java55
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResource.java38
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoSetResource.java42
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DiscrepancyComperator.java26
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoHtmlWriter.java287
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoUtil.java74
-rw-r--r--plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/LocationRangeUtil.java3
51 files changed, 1587 insertions, 1318 deletions
diff --git a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/Discrepancy.java b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/Discrepancy.java
index d7f0b2b1aac..564bac5861a 100644
--- a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/Discrepancy.java
+++ b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/Discrepancy.java
@@ -11,22 +11,20 @@
package org.eclipse.osee.disposition.model;
import javax.xml.bind.annotation.XmlRootElement;
-import org.json.JSONArray;
/**
* @author Angel Avila
*/
@XmlRootElement
public class Discrepancy {
- private int id;
+ private String id;
private String text;
- private LocationRange locationRange;
- private JSONArray idsOfCoveringAnnotations;
+ private int location;
public Discrepancy() {
}
- public int getId() {
+ public String getId() {
return id;
}
@@ -34,16 +32,12 @@ public class Discrepancy {
return text;
}
- public LocationRange getLocationRange() {
- return locationRange;
- }
-
- public JSONArray getIdsOfCoveringAnnotations() {
- return idsOfCoveringAnnotations;
+ public int getLocation() {
+ return location;
}
// Setters
- public void setId(int id) {
+ public void setId(String id) {
this.id = id;
}
@@ -51,17 +45,8 @@ public class Discrepancy {
this.text = text;
}
- public void setLocationRange(LocationRange locationRange) {
- this.locationRange = locationRange;
- }
-
- public void setIdsOfCoveringAnnotations(JSONArray idsOfCoveringAnnotations) {
- this.idsOfCoveringAnnotations = idsOfCoveringAnnotations;
- }
-
- // Utils
- public void addCoveringAnnotation(DispoAnnotationData annotation) {
- idsOfCoveringAnnotations.put(annotation.getId());
+ public void setLocation(int location) {
+ this.location = location;
}
}
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 3580d5cd93e..8a8cacc31f5 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
@@ -24,7 +24,8 @@ import org.json.JSONArray;
public class DispoAnnotationData implements Identifiable<String> {
private String id;
- private JSONArray notesList;
+ private int index;
+ private String notes;
private String locationRefs;
private boolean isConnected;
private JSONArray idsOfCoveredDiscrepancies;
@@ -37,7 +38,7 @@ public class DispoAnnotationData implements Identifiable<String> {
@Override
public String getGuid() {
- return id;
+ return String.valueOf(id);
}
@Override
@@ -49,8 +50,12 @@ public class DispoAnnotationData implements Identifiable<String> {
return id;
}
- public JSONArray getNotesList() {
- return notesList;
+ public int getIndex() {
+ return index;
+ }
+
+ public String getNotes() {
+ return notes;
}
public String getLocationRefs() {
@@ -77,14 +82,18 @@ public class DispoAnnotationData implements Identifiable<String> {
this.locationRefs = locationRefs;
}
- public void setNotesList(JSONArray notesList) {
- this.notesList = notesList;
+ public void setNotes(String notes) {
+ this.notes = notes;
}
public void setId(String id) {
this.id = id;
}
+ public void setIndex(int index) {
+ this.index = index;
+ }
+
public void setIsConnected(boolean isConnected) {
this.isConnected = isConnected;
}
@@ -109,6 +118,11 @@ public class DispoAnnotationData implements Identifiable<String> {
return isConnected && isResolutionValid;
}
+ public void disconnect() {
+ this.isConnected = false;
+ this.idsOfCoveredDiscrepancies = new JSONArray();
+ }
+
@Override
public boolean matches(Identity<?>... identities) {
for (Identity<?> identity : identities) {
diff --git a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItem.java b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItem.java
index bfe532cc2bd..550d8fc9102 100644
--- a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItem.java
+++ b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItem.java
@@ -30,7 +30,9 @@ public interface DispoItem extends Identifiable<String> {
String getStatus();
- JSONArray getDiscrepanciesList();
+ String getVersion();
- JSONObject getAnnotationsList();
+ JSONObject getDiscrepanciesList();
+
+ JSONArray getAnnotationsList();
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItemData.java b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItemData.java
index 5dd77eede0e..a4c4f2b1def 100644
--- a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItemData.java
+++ b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoItemData.java
@@ -29,8 +29,9 @@ public class DispoItemData implements DispoItem {
private Date creationDate;
private Date lastUpdate;
private String status;
- private JSONArray discrepanciesList;
- private JSONObject annotationsList;
+ private String version;
+ private JSONObject discrepanciesList;
+ private JSONArray annotationsList;
public DispoItemData() {
@@ -67,12 +68,17 @@ public class DispoItemData implements DispoItem {
}
@Override
- public JSONArray getDiscrepanciesList() {
+ public String getVersion() {
+ return version;
+ }
+
+ @Override
+ public JSONObject getDiscrepanciesList() {
return discrepanciesList;
}
@Override
- public JSONObject getAnnotationsList() {
+ public JSONArray getAnnotationsList() {
return annotationsList;
}
@@ -80,11 +86,11 @@ public class DispoItemData implements DispoItem {
this.name = name;
}
- public void setDiscrepanciesList(JSONArray discrepanciesList) {
+ public void setDiscrepanciesList(JSONObject discrepanciesList) {
this.discrepanciesList = discrepanciesList;
}
- public void setAnnotationsList(JSONObject annotationsList) {
+ public void setAnnotationsList(JSONArray annotationsList) {
this.annotationsList = annotationsList;
}
@@ -92,6 +98,10 @@ public class DispoItemData implements DispoItem {
this.status = status;
}
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
public void setLastUpdate(Date lastUpdate) {
this.lastUpdate = lastUpdate;
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSet.java b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSet.java
index 6f77bb24e4f..995e0933f3a 100644
--- a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSet.java
+++ b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSet.java
@@ -22,10 +22,7 @@ public interface DispoSet extends Identifiable<String> {
String getImportPath();
- String getStatusCount();
-
JSONArray getNotesList();
String getImportState();
-
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSetData.java b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSetData.java
index d13463aff4d..2a7b923c2e0 100644
--- a/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSetData.java
+++ b/plugins/org.eclipse.osee.disposition.rest.model/src/org/eclipse/osee/disposition/model/DispoSetData.java
@@ -22,16 +22,10 @@ import org.json.JSONArray;
@XmlRootElement(name = "DispoSetData")
public class DispoSetData extends DispoSetDescriptorData implements DispoSet {
- public enum DispositionOperationsEnum {
- NEW_IMPORT,
- RE_IMPORT
- }
-
private String guid;
- private DispositionOperationsEnum operation;
+ private String operation;
private JSONArray notesList;
private String importState;
- private String statusCount;
public DispoSetData() {
@@ -46,11 +40,11 @@ public class DispoSetData extends DispoSetDescriptorData implements DispoSet {
this.guid = guid;
}
- public DispositionOperationsEnum getOperation() {
+ public String getOperation() {
return operation;
}
- public void setOperation(DispositionOperationsEnum operation) {
+ public void setOperation(String operation) {
this.operation = operation;
}
@@ -73,15 +67,6 @@ public class DispoSetData extends DispoSetDescriptorData implements DispoSet {
}
@Override
- public String getStatusCount() {
- return statusCount;
- }
-
- public void setStatusCount(String statusCount) {
- this.statusCount = statusCount;
- }
-
- @Override
public boolean matches(Identity<?>... identities) {
for (Identity<?> identity : identities) {
if (equals(identity)) {
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 b49e3103b47..78ab8f3dddf 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
@@ -44,5 +44,10 @@ public class DispoStrings {
public static final String Item_Complete = "COMPLETE";
public static final String Item_InComplete = "INCOMPLETE";
+ public static final String Operation_NewImport = "New_Import";
+ public static final String Operation_ReImport = "Re_Import";
+
+ public static final String DeletedDiscrepancy = "Deleted Discrepancy";
+
public static final String Dispo_Config_Art = "Dispo_Config";
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/DispositionOsgiTestSuite.launch b/plugins/org.eclipse.osee.disposition.rest.test/DispositionTestSuite.launch
index a0a8c87eb3a..4d855520b41 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/DispositionOsgiTestSuite.launch
+++ b/plugins/org.eclipse.osee.disposition.rest.test/DispositionTestSuite.launch
@@ -25,7 +25,7 @@
<booleanAttribute key="includeOptional" value="false"/>
<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionOsgiTestSuite.java"/>
+<listEntry value="/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/DispositionTestSuite.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
@@ -35,7 +35,7 @@
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.osee.disposition.rest.integration.DispositionOsgiTestSuite"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.osee.disposition.rest.DispositionTestSuite"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osee.disposition.rest.test"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/DispositionTestSuite.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/DispositionTestSuite.java
index 57ebb5dfa90..1106b44506e 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/DispositionTestSuite.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/DispositionTestSuite.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest;
-import org.eclipse.osee.disposition.rest.integration.DispositionOsgiTestSuite;
import org.eclipse.osee.disposition.rest.internal.InternalTestSuite;
import org.eclipse.osee.disposition.rest.resources.ResourcesTestSuite;
import org.junit.runner.RunWith;
@@ -20,7 +19,7 @@ import org.junit.runners.Suite;
* @author Angel Avila
*/
@RunWith(Suite.class)
-@Suite.SuiteClasses({ResourcesTestSuite.class, InternalTestSuite.class, DispositionOsgiTestSuite.class})
+@Suite.SuiteClasses({ResourcesTestSuite.class, InternalTestSuite.class,})
public class DispositionTestSuite {
- // Test Suite
+ // Test Suite
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionApiTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionIntegrationTest.java
index bcce504109c..48e4044d058 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionApiTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionIntegrationTest.java
@@ -10,19 +10,18 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.integration;
-import static org.eclipse.osee.disposition.rest.integration.util.DispositionTestUtil.SAW_Bld_1;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.util.List;
import org.eclipse.osee.disposition.model.DispoAnnotationData;
-import org.eclipse.osee.disposition.model.DispoItemData;
+import org.eclipse.osee.disposition.model.DispoItem;
import org.eclipse.osee.disposition.model.DispoProgram;
-import org.eclipse.osee.disposition.model.DispoSetData;
+import org.eclipse.osee.disposition.model.DispoSet;
import org.eclipse.osee.disposition.model.DispoStrings;
import org.eclipse.osee.disposition.rest.DispoApi;
import org.eclipse.osee.disposition.rest.integration.util.DispositionInitializer;
import org.eclipse.osee.disposition.rest.integration.util.DispositionIntegrationRule;
-import org.eclipse.osee.framework.core.data.IOseeBranch;
-import org.eclipse.osee.framework.jdk.core.type.ResultSet;
+import org.eclipse.osee.disposition.rest.integration.util.DispositionTestUtil;
import org.eclipse.osee.orcs.OrcsApi;
import org.eclipse.osee.orcs.db.mock.OsgiService;
import org.junit.Before;
@@ -33,7 +32,7 @@ import org.junit.rules.TestRule;
/**
* @author Angel Avila
*/
-public class DispositionApiTest {
+public class DispositionIntegrationTest {
@Rule
public TestRule rule = DispositionIntegrationRule.integrationRule(this, "osee.demo.hsql");
@@ -54,16 +53,14 @@ public class DispositionApiTest {
public void testDispositionApi() {
// We have one item with discrepancies: 1-10, 12-20, 23, 25, 32-90
- DispoProgram sawProgram = dispoApi.getDispoFactory().createProgram(SAW_Bld_1);
- IOseeBranch dispoProgramBranch = dispoApi.getDispoProgramById(sawProgram);
- DispoProgram program = dispoApi.getDispoFactory().createProgram(dispoProgramBranch);
+ DispoProgram program = dispoApi.getDispoFactory().createProgram(DispositionTestUtil.SAW_Bld_1_FOR_DISPO);
- ResultSet<DispoSetData> dispoSets = dispoApi.getDispoSets(program);
- DispoSetData devSet = dispoSets.getExactlyOne();
+ List<DispoSet> dispoSets = dispoApi.getDispoSets(program);
+ DispoSet devSet = dispoSets.get(0);
String devSetId = devSet.getGuid();
- ResultSet<DispoItemData> dispoItems = dispoApi.getDispoItems(program, devSetId);
- DispoItemData itemOne = dispoItems.getExactlyOne();
+ List<DispoItem> dispoItems = dispoApi.getDispoItems(program, devSetId);
+ DispoItem itemOne = dispoItems.get(0);
String itemOneId = itemOne.getGuid();
assertEquals(5, itemOne.getDiscrepanciesList().length());
@@ -100,10 +97,10 @@ public class DispositionApiTest {
assertEquals(5, itemOne.getDiscrepanciesList().length());
assertEquals(2, itemOne.getAnnotationsList().length());
- DispoAnnotationData actualAnnotation = dispoApi.getDispoAnnotationByIndex(program, itemOneId, createdThreeId);
+ DispoAnnotationData actualAnnotation = dispoApi.getDispoAnnotationById(program, itemOneId, createdThreeId);
assertEquals("23,25,32-90", actualAnnotation.getLocationRefs());
- actualAnnotation = dispoApi.getDispoAnnotationByIndex(program, itemOneId, createdOneId);
+ actualAnnotation = dispoApi.getDispoAnnotationById(program, itemOneId, createdOneId);
assertEquals("1-10", actualAnnotation.getLocationRefs());
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionOsgiTestSuite.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionOsgiTestSuite.java
index 8a690394f07..12723155888 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionOsgiTestSuite.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/DispositionOsgiTestSuite.java
@@ -17,7 +17,7 @@ import org.junit.runners.Suite;
* @author Angel Avila
*/
@RunWith(Suite.class)
-@Suite.SuiteClasses({DispositionApiTest.class})
+@Suite.SuiteClasses({DispositionIntegrationTest.class})
public class DispositionOsgiTestSuite {
// Test Suite
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/util/DispositionInitializer.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/util/DispositionInitializer.java
index 92daa193c2c..f557f446ac8 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/util/DispositionInitializer.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/integration/util/DispositionInitializer.java
@@ -13,14 +13,13 @@ package org.eclipse.osee.disposition.rest.integration.util;
import static org.eclipse.osee.disposition.rest.integration.util.DispositionTestUtil.SAW_Bld_1;
import static org.eclipse.osee.disposition.rest.integration.util.DispositionTestUtil.SAW_Bld_1_FOR_DISPO;
import static org.eclipse.osee.disposition.rest.util.DispoUtil.discrepancyToJsonObj;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
import org.eclipse.osee.disposition.model.Discrepancy;
import org.eclipse.osee.disposition.model.DispoItemData;
import org.eclipse.osee.disposition.model.DispoProgram;
import org.eclipse.osee.disposition.model.DispoSetDescriptorData;
import org.eclipse.osee.disposition.model.DispoStrings;
-import org.eclipse.osee.disposition.model.LocationRange;
import org.eclipse.osee.disposition.rest.DispoApi;
import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
@@ -34,7 +33,6 @@ import org.eclipse.osee.orcs.data.ArtifactId;
import org.eclipse.osee.orcs.data.ArtifactReadable;
import org.eclipse.osee.orcs.search.QueryFactory;
import org.eclipse.osee.orcs.transaction.TransactionBuilder;
-import org.json.JSONArray;
import org.json.JSONObject;
/**
@@ -97,45 +95,40 @@ public class DispositionInitializer {
}
private void createDiscrepancies(DispoProgram program, String itemId) {
- List<JSONObject> discrepanciesToInit = new ArrayList<JSONObject>();
+ Map<String, JSONObject> discrepanciesToInit = new HashMap<String, JSONObject>();
Discrepancy one = new Discrepancy();
- one.setId(0);
- one.setIdsOfCoveringAnnotations(new JSONArray());
+ one.setId("idafd");
one.setText("one");
- one.setLocationRange(new LocationRange(1, 10));
- discrepanciesToInit.add(discrepancyToJsonObj(one));
+ one.setLocation(1);
+ discrepanciesToInit.put(one.getId(), discrepancyToJsonObj(one));
Discrepancy two = new Discrepancy();
- two.setId(1);
- two.setIdsOfCoveringAnnotations(new JSONArray());
+ two.setId("iddf");
two.setText("two");
- two.setLocationRange(new LocationRange(12, 20));
- discrepanciesToInit.add(discrepancyToJsonObj(two));
+ two.setLocation(12);
+ discrepanciesToInit.put(two.getId(), discrepancyToJsonObj(two));
Discrepancy three = new Discrepancy();
- three.setId(2);
- three.setIdsOfCoveringAnnotations(new JSONArray());
+ three.setId("absc");
three.setText("three");
- three.setLocationRange(new LocationRange(23));
- discrepanciesToInit.add(discrepancyToJsonObj(three));
+ three.setLocation(23);
+ discrepanciesToInit.put(three.getId(), discrepancyToJsonObj(three));
Discrepancy four = new Discrepancy();
- four.setId(3);
- four.setIdsOfCoveringAnnotations(new JSONArray());
+ four.setId("cddg");
four.setText("four");
- four.setLocationRange(new LocationRange(25));
- discrepanciesToInit.add(discrepancyToJsonObj(four));
+ four.setLocation(25);
+ discrepanciesToInit.put(four.getId(), discrepancyToJsonObj(four));
Discrepancy five = new Discrepancy();
- five.setId(4);
- five.setIdsOfCoveringAnnotations(new JSONArray());
+ five.setId("yoj");
five.setText("five");
- five.setLocationRange(new LocationRange(32, 90));
- discrepanciesToInit.add(discrepancyToJsonObj(five));
+ five.setLocation(90);
+ discrepanciesToInit.put(five.getId(), discrepancyToJsonObj(five));
- JSONArray array = new JSONArray(discrepanciesToInit);
+ JSONObject discrepanciesList = new JSONObject(discrepanciesToInit);
DispoItemData item = new DispoItemData();
- item.setDiscrepanciesList(array);
+ item.setDiscrepanciesList(discrepanciesList);
dispoApi.editDispoItem(program, itemId, item);
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispositionApiTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java
index 30ea7b07554..0e0a2cc8c6f 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispositionApiTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/DispoApiTest.java
@@ -18,6 +18,7 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -40,7 +41,6 @@ import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
@@ -49,11 +49,13 @@ import org.mockito.stubbing.Answer;
/**
* @author Angel Avila
*/
-public class DispositionApiTest {
+public class DispoApiTest {
@Mock
private Storage storage;
@Mock
+ private DispoResolutionValidator validator;
+ @Mock
private StorageProvider storageProvider;
@Mock
private IOseeBranch mockBranch;
@@ -78,7 +80,7 @@ public class DispositionApiTest {
@Mock
private JSONObject jsonObject;
@Mock
- private JSONObject mockAnnotations;
+ private JSONArray mockAnnotations;
@Mock
private Iterator<String> mockKeys;
@Mock
@@ -105,16 +107,10 @@ public class DispositionApiTest {
dispoApi.setStorageProvider(storageProvider);
dispoApi.setDataFactory(dataFactory);
dispoApi.setDispoConnector(dispoConnector);
+ dispoApi.setResolutionValidator(validator);
}
- @Test
- public void testGetDispoProgramById() {
- when(storage.findProgramId(program)).thenAnswer(newAnswer(mockBranch));
- IOseeBranch actual = dispoApi.getDispoProgramById(program);
- assertEquals(mockBranch, actual);
- }
-
private <T> Answer<T> newAnswer(final T object) {
return new Answer<T>() {
@@ -128,29 +124,27 @@ public class DispositionApiTest {
@Test
public void testGetDispoPrograms() {
ResultSet<IOseeBranch> programsSet = ResultSets.singleton(mockBranch);
- when(storage.findBaselineBranches()).thenAnswer(newAnswer(programsSet));
+ when(storage.getDispoBranches()).thenAnswer(newAnswer(programsSet));
ResultSet<IOseeBranch> actual = dispoApi.getDispoPrograms();
assertEquals(programsSet.iterator().next(), actual.iterator().next());
}
@Test
public void testGetDispoSets() {
- ResultSet<DispoSet> dispoSetArts = ResultSets.singleton(dispoSet);
+ List<DispoSet> dispoSetArts = Collections.singletonList(dispoSet);
when(storage.findDispoSets(program)).thenAnswer(newAnswer(dispoSetArts));
when(dispoSet.getName()).thenReturn("name");
when(dispoSet.getImportPath()).thenReturn("path");
when(dispoSet.getNotesList()).thenReturn(jsonArray);
when(dispoSet.getGuid()).thenReturn("setGuid");
- when(dispoSet.getStatusCount()).thenReturn("count");
- ResultSet<DispoSetData> actualResultSet = dispoApi.getDispoSets(program);
- DispoSetData actualData = actualResultSet.iterator().next();
+ List<DispoSet> actualResultSet = dispoApi.getDispoSets(program);
+ DispoSet actualData = actualResultSet.iterator().next();
assertEquals("setGuid", actualData.getGuid());
assertEquals("name", actualData.getName());
assertEquals("path", actualData.getImportPath());
assertEquals(jsonArray, actualData.getNotesList());
- assertEquals("count", actualData.getStatusCount());
}
@Test
@@ -160,36 +154,34 @@ public class DispositionApiTest {
when(dispoSet.getImportPath()).thenReturn("path");
when(dispoSet.getNotesList()).thenReturn(jsonArray);
when(dispoSet.getGuid()).thenReturn("setGuid");
- when(dispoSet.getStatusCount()).thenReturn("count");
- DispoSetData actual = dispoApi.getDispoSetById(program, setId.getGuid());
+ DispoSet actual = dispoApi.getDispoSetById(program, setId.getGuid());
assertEquals("setGuid", actual.getGuid());
assertEquals("name", actual.getName());
assertEquals("path", actual.getImportPath());
assertEquals(jsonArray, actual.getNotesList());
- assertEquals("count", actual.getStatusCount());
}
@Test
public void testGetDispoItems() {
- ResultSet<DispoItem> dispoItemArts = ResultSets.singleton(dispoItem);
+ List<DispoItem> dispoItemArts = Collections.singletonList(dispoItem);
when(storage.findDipoItems(program, setId.getGuid())).thenReturn(dispoItemArts);
when(dispoItem.getName()).thenReturn("name");
when(dispoItem.getGuid()).thenReturn("itemGuid");
when(dispoItem.getCreationDate()).thenReturn(mockDate);
when(dispoItem.getLastUpdate()).thenReturn(mockDate);
when(dispoItem.getStatus()).thenReturn("status");
- when(dispoItem.getDiscrepanciesList()).thenReturn(jsonArray);
+ when(dispoItem.getDiscrepanciesList()).thenReturn(jsonObject);
when(dispoItem.getAnnotationsList()).thenReturn(mockAnnotations);
- ResultSet<DispoItemData> actualResultSet = dispoApi.getDispoItems(program, setId.getGuid());
- DispoItemData actualData = actualResultSet.iterator().next();
+ List<DispoItem> actualResultSet = dispoApi.getDispoItems(program, setId.getGuid());
+ DispoItem actualData = actualResultSet.iterator().next();
assertEquals("itemGuid", actualData.getGuid());
assertEquals("name", actualData.getName());
assertEquals(mockDate, actualData.getCreationDate());
assertEquals(mockDate, actualData.getLastUpdate());
assertEquals("status", actualData.getStatus());
- assertEquals(jsonArray, actualData.getDiscrepanciesList());
+ assertEquals(jsonObject, actualData.getDiscrepanciesList());
assertEquals(mockAnnotations, actualData.getAnnotationsList());
}
@@ -201,34 +193,33 @@ public class DispositionApiTest {
when(dispoItem.getCreationDate()).thenReturn(mockDate);
when(dispoItem.getLastUpdate()).thenReturn(mockDate);
when(dispoItem.getStatus()).thenReturn("status");
- when(dispoItem.getDiscrepanciesList()).thenReturn(jsonArray);
+ when(dispoItem.getDiscrepanciesList()).thenReturn(jsonObject);
when(dispoItem.getAnnotationsList()).thenReturn(mockAnnotations);
- DispoItemData actualData = dispoApi.getDispoItemById(program, itemId.getGuid());
+ DispoItem actualData = dispoApi.getDispoItemById(program, itemId.getGuid());
assertEquals("itemGuid", actualData.getGuid());
assertEquals("name", actualData.getName());
assertEquals(mockDate, actualData.getCreationDate());
assertEquals(mockDate, actualData.getLastUpdate());
assertEquals("status", actualData.getStatus());
- assertEquals(jsonArray, actualData.getDiscrepanciesList());
+ assertEquals(jsonObject, actualData.getDiscrepanciesList());
assertEquals(mockAnnotations, actualData.getAnnotationsList());
}
@Test
public void getDispoAnnotations() throws JSONException {
- String annotId = "id";
+ String annotId = "dsf";
+ int indexOfAnnot = 0;
when(storage.findDispoItemById(program, itemId.getGuid())).thenReturn(dispoItem);
when(dispoItem.getAnnotationsList()).thenReturn(mockAnnotations);
- when(mockAnnotations.keys()).thenReturn(mockKeys);
- when(mockKeys.hasNext()).thenReturn(true, false);
- when(mockKeys.next()).thenReturn(annotId);
- when(mockAnnotations.getJSONObject(annotId)).thenReturn(jsonObject);
+ when(mockAnnotations.length()).thenReturn(1);
+ when(mockAnnotations.getJSONObject(indexOfAnnot)).thenReturn(jsonObject);
when(jsonObject.has("id")).thenReturn(true);
when(jsonObject.getString("id")).thenReturn(annotId);
when(jsonObject.has("locationRefs")).thenReturn(true);
when(jsonObject.getString("locationRefs")).thenReturn("1-10");
- ResultSet<DispoAnnotationData> actualResultSet = dispoApi.getDispoAnnotations(program, itemId.getGuid());
+ List<DispoAnnotationData> actualResultSet = dispoApi.getDispoAnnotations(program, itemId.getGuid());
DispoAnnotationData actualData = actualResultSet.iterator().next();
assertEquals(annotId, actualData.getId());
@@ -237,16 +228,18 @@ public class DispositionApiTest {
@Test
public void getDispoAnnotationByIndex() throws JSONException {
- String idOfAnnot = "idW";
+ String idOfAnnot = "432";
+ int indexOfAnnot = 0;
when(storage.findDispoItemById(program, itemId.getGuid())).thenReturn(dispoItem);
when(dispoItem.getAnnotationsList()).thenReturn(mockAnnotations);
- when(mockAnnotations.has(idOfAnnot)).thenReturn(true);
- when(mockAnnotations.getJSONObject(idOfAnnot)).thenReturn(jsonObject);
+ when(mockAnnotations.length()).thenReturn(1);
+ when(mockAnnotations.getJSONObject(indexOfAnnot)).thenReturn(jsonObject);
when(jsonObject.has("id")).thenReturn(true);
when(jsonObject.getString("id")).thenReturn(idOfAnnot);
when(jsonObject.has("locationRefs")).thenReturn(true);
when(jsonObject.getString("locationRefs")).thenReturn("1-10");
- DispoAnnotationData actualData = dispoApi.getDispoAnnotationByIndex(program, itemId.getGuid(), idOfAnnot);
+ DispoAnnotationData actualData = dispoApi.getDispoAnnotationById(program, itemId.getGuid(), idOfAnnot);
+ dispoApi.getDispoAnnotationById(program, itemId.getGuid(), idOfAnnot);
assertEquals(idOfAnnot, actualData.getId());
assertEquals("1-10", actualData.getLocationRefs());
@@ -286,33 +279,32 @@ public class DispositionApiTest {
}
@Test
- public void testCreateDispositionAnnotation() {
- ArgumentCaptor<Boolean> captor = ArgumentCaptor.forClass(Boolean.class);
+ public void testCreateDispositionAnnotation() throws JSONException {
String expectedId = "dfs";
DispoAnnotationData annotationToCreate = new DispoAnnotationData();
when(storage.findDispoItemById(program, itemId.getGuid())).thenReturn(dispoItem);
when(dataFactory.getNewId()).thenReturn(expectedId);
when(dispoItem.getAnnotationsList()).thenReturn(mockAnnotations);
- when(dispoItem.getDiscrepanciesList()).thenReturn(jsonArray);
- when(dataFactory.createUpdatedItem(eq(jsonObject), eq(jsonArray), Matchers.anyBoolean())).thenReturn(dispoItem);
- when(dispoConnector.connectAnnotation(annotationToCreate, jsonArray)).thenReturn(false);
+ when(dispoItem.getDiscrepanciesList()).thenReturn(jsonObject);
+ when(dataFactory.createUpdatedItem(eq(jsonArray), eq(jsonObject))).thenReturn(dispoItem);
+ when(dispoConnector.connectAnnotation(annotationToCreate, jsonObject)).thenReturn(false);
annotationToCreate.setIsConnected(true); //Assume this Annotation was connected
// Only need to createUpdatedItem with updateStatus = True when annotation is valid and current status is INCOMPLETE
annotationToCreate.setResolution("VALID");
- when(dispoItem.getStatus()).thenReturn("COMPLETE"); // captor(0)
+ when(dispoItem.getStatus()).thenReturn("COMPLETE");
String acutal = dispoApi.createDispoAnnotation(program, itemId.getGuid(), annotationToCreate);
assertEquals(expectedId, acutal);
- when(dispoItem.getStatus()).thenReturn("PASS"); // captor(1)
+ when(dispoItem.getStatus()).thenReturn("PASS");
acutal = dispoApi.createDispoAnnotation(program, itemId.getGuid(), annotationToCreate);
assertEquals(expectedId, acutal);
- when(dispoItem.getStatus()).thenReturn("INCOMPLETE"); // captor(2)
+ when(dispoItem.getStatus()).thenReturn("INCOMPLETE");
acutal = dispoApi.createDispoAnnotation(program, itemId.getGuid(), annotationToCreate);
assertEquals(expectedId, acutal);
- annotationToCreate.setResolution("INVALID"); // captor(3)
+ annotationToCreate.setResolution("INVALID");
acutal = dispoApi.createDispoAnnotation(program, itemId.getGuid(), annotationToCreate);
assertEquals(expectedId, acutal);
@@ -320,13 +312,7 @@ public class DispositionApiTest {
acutal = dispoApi.createDispoAnnotation(program, itemId.getGuid(), annotationToCreate);
assertEquals("", acutal);
- verify(dispoConnector, times(3)).connectAnnotation(annotationToCreate, jsonArray);// Only tried to connect 3 times, excluded when annotations was invalid
- verify(dataFactory, times(4)).createUpdatedItem(eq(mockAnnotations), eq(jsonArray), captor.capture());
- List<Boolean> booleanList = captor.getAllValues();
- assertFalse(booleanList.get(0));
- assertFalse(booleanList.get(1));
- assertTrue(booleanList.get(2));
- assertFalse(booleanList.get(3));
+ verify(dispoConnector, times(4)).connectAnnotation(annotationToCreate, jsonObject);// Only tried to connect 3 times, excluded when annotations was invalid
}
@Test
@@ -354,23 +340,20 @@ public class DispositionApiTest {
@Test
public void testEditDispoItem() {
- ArgumentCaptor<JSONArray> captor = ArgumentCaptor.forClass(JSONArray.class);
DispoItemData newItem = new DispoItemData();
when(storage.findDispoItemById(program, itemId.getGuid())).thenReturn(dispoItem);
- when(dispoItem.getDiscrepanciesList()).thenReturn(jsonArray);
+ when(dispoItem.getDiscrepanciesList()).thenReturn(jsonObject);
boolean actual = dispoApi.editDispoItem(program, itemId.getGuid(), newItem);
assertTrue(actual);
- JSONArray discrepanciesList = new JSONArray();
+ JSONObject discrepanciesList = new JSONObject();
newItem.setDiscrepanciesList(discrepanciesList);
actual = dispoApi.editDispoItem(program, itemId.getGuid(), newItem);
- assertTrue(actual);
- // Only should have merged Json Arrays once since the first newSet didn't have a Json Array
- verify(dataFactory, times(1)).mergeJsonArrays(eq(jsonArray), captor.capture());
+ assertFalse(actual);
- newItem.setAnnotationsList(jsonObject);
+ newItem.setAnnotationsList(jsonArray);
actual = dispoApi.editDispoItem(program, itemId.getGuid(), newItem);
assertFalse(actual);
}
@@ -380,14 +363,18 @@ public class DispositionApiTest {
DispoAnnotationData newAnnotation = new DispoAnnotationData();
DispoProgram programUuid = program;
String itemUuid = itemId.getGuid();
- String expectedId = "1";
+ String expectedId = "faf";
when(storage.findDispoItemById(programUuid, itemUuid)).thenReturn(dispoItem);
- when(dispoItem.getAnnotationsList()).thenReturn(jsonObject);
- when(dispoItem.getDiscrepanciesList()).thenReturn(jsonArray);
+ when(dispoItem.getAnnotationsList()).thenReturn(jsonArray);
+ when(dispoItem.getDiscrepanciesList()).thenReturn(jsonObject);
when(jsonObject.getJSONObject(expectedId)).thenReturn(jsonObject);
+ when(jsonArray.length()).thenReturn(1);
+ when(jsonArray.getJSONObject(0)).thenReturn(jsonObject);
// mocks for data util translation
- when(jsonObject.has("id")).thenReturn(false);
+ when(jsonObject.has("id")).thenReturn(true);
+ when(jsonObject.getString("id")).thenReturn(expectedId);
+ when(jsonObject.has("index")).thenReturn(false);
when(jsonObject.has("locationRefs")).thenReturn(false);
when(jsonObject.has("idsOfCoveredDiscrepancies")).thenReturn(false);
when(jsonObject.has("notesList")).thenReturn(false);
@@ -395,18 +382,17 @@ public class DispositionApiTest {
when(jsonObject.getBoolean("isResolutionValid")).thenReturn(true); // We'll have the old annotation have a valid resolution to start
// end
- // add location Ref to newAnnotation so that disconnect and connect are invoked
newAnnotation.setLocationRefs("1-10");
boolean actual = dispoApi.editDispoAnnotation(program, itemId.getGuid(), expectedId, newAnnotation);
assertTrue(actual);
// reset loc ref to null and set new (invalid) resolution
newAnnotation.setLocationRefs(null);
- newAnnotation.setResolution("PCR 13"); // Since PCR validation isn't hooked up yet, only valid resolution is "VALID"
+ when(validator.validate(newAnnotation)).thenReturn(true);
+ newAnnotation.setResolution("PCR 13");
actual = dispoApi.editDispoAnnotation(program, itemId.getGuid(), expectedId, newAnnotation);
assertTrue(actual);
- // set to invalid, make sure connect is not invoked
newAnnotation.setResolution("VALID"); // Since PCR validation isn't hooked up yet, only valid resolution is "VALID"
actual = dispoApi.editDispoAnnotation(program, itemId.getGuid(), expectedId, newAnnotation);
assertTrue(actual);
@@ -414,14 +400,11 @@ public class DispositionApiTest {
// notes are the only thing being modified, no need to disconnect or connect
newAnnotation.setLocationRefs(null);
newAnnotation.setResolution(null);
- JSONArray newNotes = new JSONArray();
- newAnnotation.setNotesList(newNotes);
+ newAnnotation.setNotes("");
actual = dispoApi.editDispoAnnotation(program, itemId.getGuid(), expectedId, newAnnotation);
assertTrue(actual);
- verify(dispoConnector, times(3)).disconnectAnnotation(any(DispoAnnotationData.class), eq(jsonArray));
- verify(dispoConnector, times(2)).connectAnnotation(any(DispoAnnotationData.class), eq(jsonArray));
- verify(dataFactory, times(1)).mergeJsonArrays(any(JSONArray.class), any(JSONArray.class));
+ verify(dispoConnector, times(3)).connectAnnotation(any(DispoAnnotationData.class), eq(jsonObject));
}
@Test
@@ -431,10 +414,14 @@ public class DispositionApiTest {
String expectedId = "1";
when(storage.findDispoItemById(programUuid, itemUuid)).thenReturn(dispoItem);
- when(dispoItem.getAnnotationsList()).thenReturn(jsonObject);
- when(dispoItem.getDiscrepanciesList()).thenReturn(jsonArray);
+ when(dispoItem.getAnnotationsList()).thenReturn(jsonArray);
+ when(dispoItem.getDiscrepanciesList()).thenReturn(jsonObject);
+ when(jsonArray.length()).thenReturn(1);
+ when(jsonArray.getJSONObject(0)).thenReturn(jsonObject);
// mocks for data util translation
- when(jsonObject.has("id")).thenReturn(false);
+ when(jsonObject.has("id")).thenReturn(true);
+ when(jsonObject.getString("id")).thenReturn(expectedId);
+ when(jsonObject.has("index")).thenReturn(false);
when(jsonObject.has("locationRefs")).thenReturn(false);
when(jsonObject.has("idsOfCoveredDiscrepancies")).thenReturn(false);
when(jsonObject.has("isValid")).thenReturn(false);
@@ -446,17 +433,13 @@ public class DispositionApiTest {
when(jsonObject.getJSONObject(expectedId)).thenReturn(annotationInvalid);
boolean actual = dispoApi.deleteDispoAnnotation(program, itemId.getGuid(), expectedId);
- verify(dispoConnector).disconnectAnnotation(any(DispoAnnotationData.class), eq(jsonArray));
- verify(jsonObject).remove(expectedId);
- verify(dataFactory).createUpdatedItem(eq(jsonObject), eq(jsonArray), eq(false));
assertTrue(actual);
- //
JSONObject annotationValid = new JSONObject();
annotationValid.put("isValid", true);
when(jsonObject.getJSONObject(expectedId)).thenReturn(annotationValid);
actual = dispoApi.deleteDispoAnnotation(program, itemId.getGuid(), expectedId);
- verify(dataFactory).createUpdatedItem(eq(jsonObject), eq(jsonArray), eq(true));
+ verify(dataFactory, times(2)).createUpdatedItem(any(JSONArray.class), eq(jsonObject));
assertTrue(actual);
}
}
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 8e1cd9bb4b3..c67031780c9 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
@@ -13,7 +13,6 @@ package org.eclipse.osee.disposition.rest.internal;
import static org.eclipse.osee.disposition.rest.util.DispoUtil.annotationToJsonObj;
import static org.eclipse.osee.disposition.rest.util.DispoUtil.discrepancyToJsonObj;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.HashMap;
@@ -23,12 +22,12 @@ import org.eclipse.osee.disposition.model.Discrepancy;
import org.eclipse.osee.disposition.model.DispoAnnotationData;
import org.eclipse.osee.disposition.model.DispoItemData;
import org.eclipse.osee.disposition.model.DispoStrings;
-import org.eclipse.osee.disposition.model.LocationRange;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
+
/**
* @author Angel Avila
*/
@@ -37,551 +36,339 @@ public class DispoConnectorTest {
private DispoItemData dispoItem;
private DispoConnector dispoConnector;
- int idZero = 0;
- int idOne = 1;
- int idTwo = 2;
- int idThree = 3;
+ String[] idsForDiscrepancies1_5 = {"adf", "ads", "acc", "abc", "ace"};
+
+ String[] idsForDiscrepancies12_18 = {"cbb", "bcd", "cca", "ccd", "ccbb", "cabb", "cqqq"};
+
+ String id20 = "gdd";
- String annotIdOne = "id1";
- String annotIdTwo = "id2";
- String annotIdThree = "id3";
- String annotIdFour = "id4";
- String annotIdFive = "id5";
+ String annotIdOne = "annotId0";
+ String annotIdTwo = "annotId1";
+ String annotIdThree = "annotId2";
+ String annotIdFour = "annotId3";
+ String annotIdFive = "annotId4";
@Before
public void setUp() {
- // MockitoAnnotations.initMocks(this);
dispoItem = new DispoItemData();
dispoConnector = new DispoConnector();
- List<JSONObject> discrepancies = new ArrayList<JSONObject>();
-
- Discrepancy discrepancyOne = new Discrepancy();
- LocationRange rangeOne = new LocationRange(1, 10);
- discrepancyOne.setLocationRange(rangeOne);
- discrepancyOne.setId(idZero);
- discrepancyOne.setIdsOfCoveringAnnotations(new JSONArray());
- discrepancies.add(discrepancyToJsonObj(discrepancyOne));
-
- Discrepancy discrepancyTwo = new Discrepancy();
- LocationRange rangeTwo = new LocationRange(12, 20);
- discrepancyTwo.setLocationRange(rangeTwo);
- discrepancyTwo.setId(idOne);
- discrepancyTwo.setIdsOfCoveringAnnotations(new JSONArray());
- discrepancies.add(discrepancyToJsonObj(discrepancyTwo));
-
- Discrepancy discrepancyThree = new Discrepancy();
- LocationRange rangeThree = new LocationRange(23);
- discrepancyThree.setLocationRange(rangeThree);
- discrepancyThree.setId(idTwo);
- discrepancyThree.setIdsOfCoveringAnnotations(new JSONArray());
- discrepancies.add(discrepancyToJsonObj(discrepancyThree));
-
- Discrepancy discrepancyFour = new Discrepancy();
- LocationRange rangeFour = new LocationRange(25);
- discrepancyFour.setLocationRange(rangeFour);
- discrepancyFour.setId(idThree);
- discrepancyFour.setIdsOfCoveringAnnotations(new JSONArray());
- discrepancies.add(discrepancyToJsonObj(discrepancyFour));
-
- JSONArray discrepanciesAsArray = new JSONArray(discrepancies);
- dispoItem.setDiscrepanciesList(discrepanciesAsArray);
+ Map<String, JSONObject> discrepancies = new HashMap<String, JSONObject>();
+
+ for (int i = 1; i <= 5; i++) {
+ Discrepancy discrepancy = new Discrepancy();
+ discrepancy.setLocation(i);
+ discrepancy.setId(idsForDiscrepancies1_5[i - 1]);
+ discrepancies.put(discrepancy.getId(), discrepancyToJsonObj(discrepancy));
+ }
+
+ for (int i = 12; i <= 18; i++) {
+ Discrepancy discrepancy = new Discrepancy();
+ discrepancy.setLocation(i);
+ discrepancy.setId(idsForDiscrepancies12_18[i - 12]);
+ discrepancies.put(discrepancy.getId(), discrepancyToJsonObj(discrepancy));
+ }
+
+ Discrepancy discrepancy20 = new Discrepancy();
+ discrepancy20.setLocation(20);
+ discrepancy20.setId(id20);
+ discrepancies.put(discrepancy20.getId(), discrepancyToJsonObj(discrepancy20));
+
+ JSONObject discrepanciesList = new JSONObject(discrepancies);
+ dispoItem.setDiscrepanciesList(discrepanciesList);
}
@Test
public void testConnectAnnotationsSingleCompelete() throws JSONException {
// Create one annotation with every discrepancy covered
DispoAnnotationData annotationOne = new DispoAnnotationData();
- annotationOne.setLocationRefs("1-10, 12-20, 23, 25");
+ annotationOne.setLocationRefs("1-5, 12-18, 20");
+ annotationOne.setIsResolutionValid(true);
annotationOne.setId(annotIdOne);
JSONArray idsOfCoveredDisc = new JSONArray();
annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDisc);
dispoConnector.connectAnnotation(annotationOne, dispoItem.getDiscrepanciesList());
+ JSONArray annotationsList = new JSONArray();
+ annotationsList.put(annotationToJsonObj(annotationOne));
+ dispoItem.setAnnotationsList(annotationsList);
// annotation 1 should be connected to all Discrepancies
JSONArray idsOfCoveredDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveredDiscrepancies.getInt(0), idZero);
- assertEquals(idsOfCoveredDiscrepancies.getInt(1), idOne);
- assertEquals(idsOfCoveredDiscrepancies.getInt(2), idTwo);
- assertEquals(idsOfCoveredDiscrepancies.getInt(3), idThree);
+ for (int i = 0; i < 13; i++) {
+ if (i < 5) {//first 5 discrepancies are from ids array 1-5
+ assertEquals(idsOfCoveredDiscrepancies.getString(i), idsForDiscrepancies1_5[i]);
+ } else if (i < 12) {
+ assertEquals(idsOfCoveredDiscrepancies.getString(i), idsForDiscrepancies12_18[i - 5]);
+ } else {
+ assertEquals(idsOfCoveredDiscrepancies.getString(i), id20);
+ }
+ }
+
assertTrue(annotationOne.getIsConnected());
- // Each discrepancy should only be connected to the one annotation
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
- JSONObject jsonObject = discrepanciesList.getJSONObject(0);
- JSONArray jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(1);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(2);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(3);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
+ String actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
+ assertEquals(DispoStrings.Item_Complete, actual);
}
@Test
public void testConnectAnnotationsSingleIncomplete() throws JSONException {
// This will test a single annotation that covers most but not all discrepancies
DispoAnnotationData annotationOne = new DispoAnnotationData();
- annotationOne.setLocationRefs("1-10, 12-20, 23");
+ annotationOne.setLocationRefs("1-5, 12-18");
annotationOne.setId(annotIdOne);
JSONArray idsOfCoveredDisc = new JSONArray();
annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDisc);
dispoConnector.connectAnnotation(annotationOne, dispoItem.getDiscrepanciesList());
+ JSONArray annotationsList = new JSONArray();
+ annotationsList.put(annotationToJsonObj(annotationOne));
+ dispoItem.setAnnotationsList(annotationsList);
- // annotation 1 should be connected to all Discrepancies but idThree which is '25'
+ // annotation 1 should be connected to all Discrepancies
JSONArray idsOfCoveredDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveredDiscrepancies.getInt(0), idZero);
- assertEquals(idsOfCoveredDiscrepancies.getInt(1), idOne);
- assertEquals(idsOfCoveredDiscrepancies.getInt(2), idTwo);
+ for (int i = 0; i < 13; i++) {
+ if (i < 5) {//first 5 discrepancies are from ids array 1-5
+ assertEquals(idsOfCoveredDiscrepancies.getString(i), idsForDiscrepancies1_5[i]);
+ } else if (i < 12) {
+ assertEquals(idsOfCoveredDiscrepancies.getString(i), idsForDiscrepancies12_18[i - 5]);
+ }
+ }
assertTrue(annotationOne.getIsConnected());
- // Each discrepancy should only be connected to the one annotation except the last one
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
- JSONObject jsonObject = discrepanciesList.getJSONObject(0);
- JSONArray jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(1);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(2);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(3);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 0);
+ String actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
+ assertEquals(DispoStrings.Item_InComplete, actual);
}
@Test
public void testConnectAnnotationsMultipleComplete() throws JSONException {
DispoAnnotationData annotationOne = new DispoAnnotationData();
- annotationOne.setLocationRefs("1-10");
+ annotationOne.setLocationRefs("1-5");
annotationOne.setId(annotIdOne);
JSONArray idsOfCoveredDiscOne = new JSONArray();
annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscOne);
DispoAnnotationData annotationTwo = new DispoAnnotationData();
- annotationTwo.setLocationRefs("12-15");
+ annotationTwo.setLocationRefs("12-14");
annotationTwo.setId(annotIdTwo);
JSONArray idsOfCoveredDiscTwo = new JSONArray();
annotationTwo.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscTwo);
DispoAnnotationData annotationThree = new DispoAnnotationData();
- annotationThree.setLocationRefs("16, 25, 23, 18");
+ annotationThree.setLocationRefs("16, 20, 18");
annotationThree.setId(annotIdThree);
JSONArray idsOfCoveredDiscThree = new JSONArray();
annotationThree.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscThree);
DispoAnnotationData annotationFour = new DispoAnnotationData();
- annotationFour.setLocationRefs("17-19, 25");
- annotationFour.setId(annotIdFour);
- JSONArray idsOfCoveredDiscFour = new JSONArray();
- annotationFour.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscFour);
-
- DispoAnnotationData annotationFive = new DispoAnnotationData();
- annotationFive.setLocationRefs("23, 20");
- annotationFive.setId(annotIdFive);
+ annotationFour.setLocationRefs("15, 17");
+ annotationFour.setId(annotIdFive);
JSONArray idsOfCoveredDiscFive = new JSONArray();
- annotationFive.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscFive);
+ annotationFour.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscFive);
- JSONArray discrepanciesArray = dispoItem.getDiscrepanciesList();
+ JSONObject discrepanciesArray = dispoItem.getDiscrepanciesList();
dispoConnector.connectAnnotation(annotationOne, discrepanciesArray);
dispoConnector.connectAnnotation(annotationTwo, discrepanciesArray);
dispoConnector.connectAnnotation(annotationThree, discrepanciesArray);
dispoConnector.connectAnnotation(annotationFour, discrepanciesArray);
- dispoConnector.connectAnnotation(annotationFive, discrepanciesArray);
- JSONArray idsOfCoveringDiscrepancies;
+ JSONArray idsOfCoveredDiscrepancies;
assertTrue(annotationOne.getIsConnected());
- idsOfCoveringDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 1);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idZero);
+ idsOfCoveredDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
+ assertEquals(idsOfCoveredDiscrepancies.length(), 5);
+ for (int i = 0; i < 5; i++) {
+ assertEquals(idsOfCoveredDiscrepancies.getString(i), idsForDiscrepancies1_5[i]);
+ }
assertTrue(annotationTwo.getIsConnected());
- idsOfCoveringDiscrepancies = annotationTwo.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 1);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
+ idsOfCoveredDiscrepancies = annotationTwo.getIdsOfCoveredDiscrepancies();
+ assertEquals(idsOfCoveredDiscrepancies.length(), 3);
+ assertEquals(idsOfCoveredDiscrepancies.getString(0), idsForDiscrepancies12_18[0]);
+ assertEquals(idsOfCoveredDiscrepancies.getString(1), idsForDiscrepancies12_18[1]);
+ assertEquals(idsOfCoveredDiscrepancies.getString(2), idsForDiscrepancies12_18[2]);
assertTrue(annotationThree.getIsConnected());
- idsOfCoveringDiscrepancies = annotationThree.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 3);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idTwo);
- assertEquals(idsOfCoveringDiscrepancies.getInt(2), idThree);
+ idsOfCoveredDiscrepancies = annotationThree.getIdsOfCoveredDiscrepancies();
+ assertEquals(idsOfCoveredDiscrepancies.length(), 3);
+ assertEquals(idsOfCoveredDiscrepancies.getString(0), idsForDiscrepancies12_18[4]);
+ assertEquals(idsOfCoveredDiscrepancies.getString(1), idsForDiscrepancies12_18[6]);
+ assertEquals(idsOfCoveredDiscrepancies.getString(2), id20);
assertTrue(annotationFour.getIsConnected());
- idsOfCoveringDiscrepancies = annotationFour.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 2);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idThree);
-
- assertTrue(annotationFive.getIsConnected());
- idsOfCoveringDiscrepancies = annotationFive.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 2);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idTwo);
-
- // Test Discrepancies
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
- JSONObject jsonObject = discrepanciesList.getJSONObject(0);
- JSONArray jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 1);
- assertEquals(jsonArray.getString(0), annotIdOne);
-
- jsonObject = discrepanciesList.getJSONObject(1);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 4);
- assertEquals(jsonArray.getString(0), annotIdTwo);
- assertEquals(jsonArray.getString(1), annotIdThree);
- assertEquals(jsonArray.getString(2), annotIdFour);
- assertEquals(jsonArray.getString(3), annotIdFive);
-
- jsonObject = discrepanciesList.getJSONObject(2);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 2);
- assertEquals(jsonArray.getString(0), annotIdThree);
- assertEquals(jsonArray.getString(1), annotIdFive);
-
- jsonObject = discrepanciesList.getJSONObject(3);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 2);
- assertEquals(jsonArray.getString(0), annotIdThree);
- assertEquals(jsonArray.getString(1), annotIdFour);
+ idsOfCoveredDiscrepancies = annotationFour.getIdsOfCoveredDiscrepancies();
+ assertEquals(idsOfCoveredDiscrepancies.length(), 2);
+ assertEquals(idsOfCoveredDiscrepancies.getString(0), idsForDiscrepancies12_18[3]);
+ assertEquals(idsOfCoveredDiscrepancies.getString(1), idsForDiscrepancies12_18[5]);
}
@Test
- public void testAllDiscrepanciesAnnotatedOneComplete() {
- Map<String, JSONObject> annotationsAsMap = new HashMap<String, JSONObject>();
+ public void testAllDiscrepanciesAnnotatedOneComplete() throws JSONException {
+ JSONArray annotationsAsList = new JSONArray();
// Create one annotation with every discrepancy covered
DispoAnnotationData annotationOne = new DispoAnnotationData();
- annotationOne.setLocationRefs("1-10, 12-20, 23, 25");
+ annotationOne.setLocationRefs("1-5, 12-18, 20");
JSONArray idsOfCoveredDisc = new JSONArray();
annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDisc);
+ annotationOne.setIsResolutionValid(true);
annotationOne.setId(annotIdOne);
- annotationsAsMap.put(annotIdOne, annotationToJsonObj(annotationOne));
-
- JSONObject annotations = new JSONObject(annotationsAsMap);
- dispoItem.setAnnotationsList(annotations);
dispoConnector.connectAnnotation(annotationOne, dispoItem.getDiscrepanciesList());
+ annotationsAsList.put(annotationToJsonObj(annotationOne));
+ dispoItem.setAnnotationsList(annotationsAsList);
String actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
assertEquals(DispoStrings.Item_Complete, actual);
}
@Test
- public void testAllDiscrepanciesAnnotatedManyComplete() {
- Map<String, JSONObject> annotationsAsMap = new HashMap<String, JSONObject>();
+ public void testAllDiscrepanciesAnnotatedManyComplete() throws JSONException {
+ List<JSONObject> annotationsAsList = new ArrayList<JSONObject>();
// Create 4 annotations, one for every discrepancy covered
DispoAnnotationData annotationOne = new DispoAnnotationData();
- annotationOne.setLocationRefs("1-10");
+ annotationOne.setLocationRefs("1-5");
annotationOne.setId(annotIdOne);
+ annotationOne.setIsResolutionValid(true);
JSONArray idsOfCoveredDiscOne = new JSONArray();
annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscOne);
- // annotationsAsList.add(annotationToJsonObj(annotationOne));
- annotationsAsMap.put(annotIdOne, annotationToJsonObj(annotationOne));
+ annotationsAsList.add(annotationToJsonObj(annotationOne));
DispoAnnotationData annotationTwo = new DispoAnnotationData();
- annotationTwo.setLocationRefs("12-20");
+ annotationTwo.setLocationRefs("12-18");
annotationTwo.setId(annotIdTwo);
+ annotationTwo.setIsResolutionValid(true);
JSONArray idsOfCoveredDiscTwo = new JSONArray();
annotationTwo.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscTwo);
- // annotationsAsList.add(annotationToJsonObj(annotationTwo));
- annotationsAsMap.put(annotIdTwo, annotationToJsonObj(annotationTwo));
+ annotationsAsList.add(annotationToJsonObj(annotationTwo));
DispoAnnotationData annotationThree = new DispoAnnotationData();
- annotationThree.setLocationRefs("23, 25");
+ annotationThree.setLocationRefs("20");
annotationThree.setId(annotIdThree);
+ annotationThree.setIsResolutionValid(true);
JSONArray idsOfCoveredDiscThree = new JSONArray();
annotationThree.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscThree);
- // annotationsAsList.add(annotationToJsonObj(annotationThree));
- annotationsAsMap.put(annotIdThree, annotationToJsonObj(annotationThree));
+ annotationsAsList.add(annotationToJsonObj(annotationThree));
- JSONObject annotationsAsArray = new JSONObject(annotationsAsMap);
- dispoItem.setAnnotationsList(annotationsAsArray);
+ JSONArray annotationsList = new JSONArray(annotationsAsList);
+ dispoItem.setAnnotationsList(annotationsList);
- JSONArray discrepanciesArray = dispoItem.getDiscrepanciesList();
+ JSONObject discrepanciesList = dispoItem.getDiscrepanciesList();
- dispoConnector.connectAnnotation(annotationOne, discrepanciesArray);
+ dispoConnector.connectAnnotation(annotationOne, discrepanciesList);
+ annotationsList.put(0, annotationToJsonObj(annotationOne));
+ dispoItem.setAnnotationsList(annotationsList);
+ annotationsList.put(0, annotationToJsonObj(annotationOne));
+ dispoItem.setAnnotationsList(annotationsList);
String actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
assertEquals(DispoStrings.Item_InComplete, actual);
- dispoConnector.connectAnnotation(annotationTwo, discrepanciesArray);
+ dispoConnector.connectAnnotation(annotationTwo, discrepanciesList);
+ annotationsList.put(1, annotationToJsonObj(annotationTwo));
+ dispoItem.setAnnotationsList(annotationsList);
+ annotationsList.put(1, annotationToJsonObj(annotationTwo));
+ dispoItem.setAnnotationsList(annotationsList);
actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
assertEquals(DispoStrings.Item_InComplete, actual);
- dispoConnector.connectAnnotation(annotationThree, discrepanciesArray);
+ dispoConnector.connectAnnotation(annotationThree, discrepanciesList);
+ annotationsList.put(2, annotationToJsonObj(annotationThree));
+ dispoItem.setAnnotationsList(annotationsList);
+ annotationsList.put(2, annotationToJsonObj(annotationThree));
+ dispoItem.setAnnotationsList(annotationsList);
actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
assertEquals(DispoStrings.Item_Complete, actual);
}
@Test
- public void testDisconnect() throws JSONException {
- // Create one annotation with every discrepancy covered
- DispoAnnotationData annotationOne = new DispoAnnotationData();
- annotationOne.setLocationRefs("12-20, 23, 25");
- annotationOne.setId(annotIdOne);
- JSONArray idsOfCoveredDisc = new JSONArray();
- annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDisc);
-
- DispoAnnotationData annotationTwo = new DispoAnnotationData();
- annotationTwo.setLocationRefs("1-10, 23");
- annotationTwo.setId(annotIdTwo);
- JSONArray idsOfCoveredDiscTwo = new JSONArray();
- annotationTwo.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscTwo);
-
- dispoConnector.connectAnnotation(annotationOne, dispoItem.getDiscrepanciesList());
- dispoConnector.connectAnnotation(annotationTwo, dispoItem.getDiscrepanciesList());
-
- // annotation 1 should be connected to 3 Discrepancies
- JSONArray idsOfCoveredDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
- assertEquals(3, idsOfCoveredDiscrepancies.length());
- assertEquals(idsOfCoveredDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveredDiscrepancies.getInt(1), idTwo);
- assertEquals(idsOfCoveredDiscrepancies.getInt(2), idThree);
- assertTrue(annotationOne.getIsConnected());
-
- // annotation 2 should be connected to discrepancy idZero
- JSONArray idsOfCoveredDiscrepanciesTwo = annotationTwo.getIdsOfCoveredDiscrepancies();
- assertEquals(2, idsOfCoveredDiscrepanciesTwo.length());
- assertEquals(idsOfCoveredDiscrepanciesTwo.getInt(0), idZero);
- assertEquals(idsOfCoveredDiscrepanciesTwo.getInt(1), idTwo);
- assertTrue(annotationTwo.getIsConnected());
-
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
- JSONObject jsonObject = discrepanciesList.getJSONObject(0);
- JSONArray jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdTwo);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(1);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- jsonObject = discrepanciesList.getJSONObject(2);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 2);
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.getString(1), annotIdTwo);
-
- jsonObject = discrepanciesList.getJSONObject(3);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.getString(0), annotIdOne);
- assertEquals(jsonArray.length(), 1);
-
- // Disconect the annotaiton
- dispoConnector.disconnectAnnotation(annotationOne, discrepanciesList);
-
- idsOfCoveredDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
- assertEquals(0, idsOfCoveredDiscrepancies.length());
- assertFalse(annotationOne.getIsConnected());
-
- // discrepanciesList = dispoItem.getDiscrepanciesList();
-
- jsonObject = discrepanciesList.getJSONObject(0);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(1, jsonArray.length());
-
- jsonObject = discrepanciesList.getJSONObject(1);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(0, jsonArray.length());
-
- jsonObject = discrepanciesList.getJSONObject(2);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(1, jsonArray.length());
-
- jsonObject = discrepanciesList.getJSONObject(3);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(0, jsonArray.length());
- }
-
- @Test
public void testZComplexCase() throws JSONException {
- Map<String, JSONObject> annotationsAsMap = new HashMap<String, JSONObject>();
+ JSONArray annotationsList = new JSONArray();
DispoAnnotationData annotationOne = new DispoAnnotationData();
- annotationOne.setLocationRefs("10, 1-9");
+ annotationOne.setLocationRefs("5, 1-3");
annotationOne.setId(annotIdOne);
+ annotationOne.setIsResolutionValid(true);
JSONArray idsOfCoveredDiscOne = new JSONArray();
annotationOne.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscOne);
- annotationsAsMap.put(annotIdOne, annotationToJsonObj(annotationOne));
DispoAnnotationData annotationTwo = new DispoAnnotationData();
annotationTwo.setLocationRefs("12-15");
annotationTwo.setId(annotIdTwo);
+ annotationTwo.setIsResolutionValid(true);
JSONArray idsOfCoveredDiscTwo = new JSONArray();
annotationTwo.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscTwo);
- annotationsAsMap.put(annotIdTwo, annotationToJsonObj(annotationTwo));
DispoAnnotationData annotationThree = new DispoAnnotationData();
- annotationThree.setLocationRefs("16, 25, 23, 18, 20");
+ annotationThree.setLocationRefs("16, 20");
annotationThree.setId(annotIdThree);
JSONArray idsOfCoveredDiscThree = new JSONArray();
+ annotationThree.setIsResolutionValid(true);
annotationThree.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscThree);
- annotationsAsMap.put(annotIdThree, annotationToJsonObj(annotationThree));
DispoAnnotationData annotationFour = new DispoAnnotationData();
- annotationFour.setLocationRefs("17-19, 25");
+ annotationFour.setLocationRefs("4, 20");
annotationFour.setId(annotIdFour);
JSONArray idsOfCoveredDiscFour = new JSONArray();
+ annotationFour.setIsResolutionValid(true);
annotationFour.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscFour);
- annotationsAsMap.put(annotIdFour, annotationToJsonObj(annotationFour));
DispoAnnotationData annotationFive = new DispoAnnotationData();
- annotationFive.setLocationRefs("23, 20");
+ annotationFive.setLocationRefs("18, 16, 17, 4");
annotationFive.setId(annotIdFive);
JSONArray idsOfCoveredDiscFive = new JSONArray();
+ annotationFive.setIsResolutionValid(true);
annotationFive.setIdsOfCoveredDiscrepancies(idsOfCoveredDiscFive);
- annotationsAsMap.put(annotIdFive, annotationToJsonObj(annotationFive));
- JSONArray discrepanciesArray = dispoItem.getDiscrepanciesList();
- dispoConnector.connectAnnotation(annotationOne, discrepanciesArray);
- dispoConnector.connectAnnotation(annotationTwo, discrepanciesArray);
- dispoConnector.connectAnnotation(annotationThree, discrepanciesArray);
- dispoConnector.connectAnnotation(annotationFour, discrepanciesArray);
- dispoConnector.connectAnnotation(annotationFive, discrepanciesArray);
+ JSONObject discrepanciesList = dispoItem.getDiscrepanciesList();
+ dispoConnector.connectAnnotation(annotationOne, discrepanciesList);
+ annotationsList.put(annotationToJsonObj(annotationOne));
+ dispoConnector.connectAnnotation(annotationTwo, discrepanciesList);
+ annotationsList.put(annotationToJsonObj(annotationTwo));
+ dispoConnector.connectAnnotation(annotationThree, discrepanciesList);
+ annotationsList.put(annotationToJsonObj(annotationThree));
+ dispoConnector.connectAnnotation(annotationFour, discrepanciesList);
+ annotationsList.put(annotationToJsonObj(annotationFour));
+ dispoConnector.connectAnnotation(annotationFive, discrepanciesList);
+ annotationsList.put(annotationToJsonObj(annotationFive));
- JSONObject annotationsAsArray = new JSONObject(annotationsAsMap);
- dispoItem.setAnnotationsList(annotationsAsArray);
+ dispoItem.setAnnotationsList(annotationsList);
JSONArray idsOfCoveringDiscrepancies;
assertTrue(annotationOne.getIsConnected());
idsOfCoveringDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 1);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idZero);
+ assertEquals(idsOfCoveringDiscrepancies.length(), 4);
+ assertEquals(idsOfCoveringDiscrepancies.getString(0), idsForDiscrepancies1_5[0]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(1), idsForDiscrepancies1_5[1]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(2), idsForDiscrepancies1_5[2]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(3), idsForDiscrepancies1_5[4]);
assertTrue(annotationTwo.getIsConnected());
idsOfCoveringDiscrepancies = annotationTwo.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 1);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
+ assertEquals(idsOfCoveringDiscrepancies.length(), 4);
+ assertEquals(idsOfCoveringDiscrepancies.getString(0), idsForDiscrepancies12_18[0]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(1), idsForDiscrepancies12_18[1]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(2), idsForDiscrepancies12_18[2]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(3), idsForDiscrepancies12_18[3]);
assertTrue(annotationThree.getIsConnected());
idsOfCoveringDiscrepancies = annotationThree.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 3);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idTwo);
- assertEquals(idsOfCoveringDiscrepancies.getInt(2), idThree);
+ assertEquals(idsOfCoveringDiscrepancies.length(), 2);
+ assertEquals(idsOfCoveringDiscrepancies.getString(0), idsForDiscrepancies12_18[4]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(1), id20);
assertTrue(annotationFour.getIsConnected());
idsOfCoveringDiscrepancies = annotationFour.getIdsOfCoveredDiscrepancies();
assertEquals(idsOfCoveringDiscrepancies.length(), 2);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idThree);
+ assertEquals(idsOfCoveringDiscrepancies.getString(0), idsForDiscrepancies1_5[3]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(1), id20);
assertTrue(annotationFive.getIsConnected());
idsOfCoveringDiscrepancies = annotationFive.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 2);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idTwo);
-
- // Test Discrepancies
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
- JSONObject jsonObject = discrepanciesList.getJSONObject(0);
- JSONArray jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 1);
- assertEquals(jsonArray.getString(0), annotIdOne);
-
- jsonObject = discrepanciesList.getJSONObject(1);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 4);
- assertEquals(jsonArray.getString(0), annotIdTwo);
- assertEquals(jsonArray.getString(1), annotIdThree);
- assertEquals(jsonArray.getString(2), annotIdFour);
- assertEquals(jsonArray.getString(3), annotIdFive);
-
- jsonObject = discrepanciesList.getJSONObject(2);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 2);
- assertEquals(jsonArray.getString(0), annotIdThree);
- assertEquals(jsonArray.getString(1), annotIdFive);
-
- jsonObject = discrepanciesList.getJSONObject(3);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 2);
- assertEquals(jsonArray.getString(0), annotIdThree);
- assertEquals(jsonArray.getString(1), annotIdFour);
+ assertEquals(idsOfCoveringDiscrepancies.length(), 4);
+ assertEquals(idsOfCoveringDiscrepancies.getString(0), idsForDiscrepancies1_5[3]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(1), idsForDiscrepancies12_18[4]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(2), idsForDiscrepancies12_18[5]);
+ assertEquals(idsOfCoveringDiscrepancies.getString(3), idsForDiscrepancies12_18[6]);
String actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
assertEquals(DispoStrings.Item_Complete, actual);
-
- // Disconnect Annotation Five. All discrep. should still be covered since annotationThree has the locRefs that annotationFive had
- dispoConnector.disconnectAnnotation(annotationFive, discrepanciesList);
- assertTrue(annotationOne.getIsConnected());
- idsOfCoveringDiscrepancies = annotationOne.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 1);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idZero);
-
- assertTrue(annotationTwo.getIsConnected());
- idsOfCoveringDiscrepancies = annotationTwo.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 1);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
-
- assertTrue(annotationThree.getIsConnected());
- idsOfCoveringDiscrepancies = annotationThree.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 3);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idTwo);
- assertEquals(idsOfCoveringDiscrepancies.getInt(2), idThree);
-
- assertTrue(annotationFour.getIsConnected());
- idsOfCoveringDiscrepancies = annotationFour.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 2);
- assertEquals(idsOfCoveringDiscrepancies.getInt(0), idOne);
- assertEquals(idsOfCoveringDiscrepancies.getInt(1), idThree);
-
- // disconnected
- assertFalse(annotationFive.getIsConnected());
- idsOfCoveringDiscrepancies = annotationFive.getIdsOfCoveredDiscrepancies();
- assertEquals(idsOfCoveringDiscrepancies.length(), 0);
-
- // Discrepancies
- discrepanciesList = dispoItem.getDiscrepanciesList();
- jsonObject = discrepanciesList.getJSONObject(0);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 1);
- assertEquals(jsonArray.getString(0), annotIdOne);
-
- // Size is now just 3
- jsonObject = discrepanciesList.getJSONObject(1);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 3);
- assertEquals(jsonArray.getString(0), annotIdTwo);
- assertEquals(jsonArray.getString(1), annotIdThree);
- assertEquals(jsonArray.getString(2), annotIdFour);
-
- // size is now just 1
- jsonObject = discrepanciesList.getJSONObject(2);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 1);
- assertEquals(jsonArray.getString(0), annotIdThree);
-
- jsonObject = discrepanciesList.getJSONObject(3);
- jsonArray = jsonObject.getJSONArray("idsOfCoveringAnnotations");
- assertEquals(jsonArray.length(), 2);
- assertEquals(jsonArray.getString(0), annotIdThree);
- assertEquals(jsonArray.getString(1), annotIdFour);
-
- // Should still be complete
- actual = dispoConnector.allDiscrepanciesAnnotated(dispoItem);
- assertEquals(DispoStrings.Item_Complete, actual);
}
}
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 cdcd9dcd652..e77d285b22b 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,7 @@ import org.junit.runners.Suite;
* @author Angel Avila
*/
@RunWith(Suite.class)
-@Suite.SuiteClasses({DispositionApiTest.class, DispoConnectorTest.class})
+@Suite.SuiteClasses({DispoApiTest.class, DispoConnectorTest.class, LocationRangesCompressorTest.class})
public class InternalTestSuite {
// Test Suite
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressorTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressorTest.java
new file mode 100644
index 00000000000..84e50dc99ce
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressorTest.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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 java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author Angel Avila
+ */
+public class LocationRangesCompressorTest {
+
+ @Test
+ public void testRangeCompressor() {
+ List<Integer> locationPoints = new ArrayList<Integer>();
+ locationPoints.add(83);
+ locationPoints.add(84);
+ locationPoints.add(1);
+ locationPoints.add(3);
+ locationPoints.add(4);
+ locationPoints.add(21);
+ locationPoints.add(2);
+ String result = LocationRangesCompressor.compress(locationPoints);
+
+ Assert.assertEquals("1-4, 21, 83-84", result);
+ }
+}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/AnnotationResourceTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/AnnotationResourceTest.java
index 30318e0d695..dc18fc1ce23 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/AnnotationResourceTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/AnnotationResourceTest.java
@@ -12,16 +12,18 @@ package org.eclipse.osee.disposition.rest.resources;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import javax.ws.rs.core.Response;
import org.eclipse.osee.disposition.model.DispoAnnotationData;
+import org.eclipse.osee.disposition.model.DispoItemData;
import org.eclipse.osee.disposition.model.DispoMessages;
import org.eclipse.osee.disposition.model.DispoProgram;
+import org.eclipse.osee.disposition.model.DispoStrings;
import org.eclipse.osee.disposition.rest.DispoApi;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
import org.eclipse.osee.framework.jdk.core.type.Identifiable;
-import org.eclipse.osee.framework.jdk.core.type.ResultSet;
-import org.eclipse.osee.framework.jdk.core.type.ResultSets;
-import org.json.JSONArray;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
@@ -35,7 +37,9 @@ public class AnnotationResourceTest {
@Mock
private DispoApi dispositionApi;
@Mock
- private HtmlWriter htmlWriter;
+ private DispoItemData dispoItem;
+ @Mock
+ private DispoHtmlWriter htmlWriter;
@Mock
private Identifiable<String> id1;
@Mock
@@ -61,12 +65,12 @@ public class AnnotationResourceTest {
annotationToCreate.setId(mockId);
when(dispositionApi.createDispoAnnotation(program, "itemId", annotationToCreate)).thenReturn(mockId);
- when(dispositionApi.getDispoAnnotationByIndex(program, "itemId", mockId)).thenReturn(annotationToCreate);
+ when(dispositionApi.getDispoAnnotationById(program, "itemId", mockId)).thenReturn(annotationToCreate);
DispoAnnotationData expectedAnnotation = new DispoAnnotationData();
expectedAnnotation.setLocationRefs(annotationToCreate.getLocationRefs());
expectedAnnotation.setId(mockId);
- when(dispositionApi.getDispoAnnotationByIndex(program, id1.getGuid(), mockId)).thenReturn(expectedAnnotation);
+ when(dispositionApi.getDispoAnnotationById(program, id1.getGuid(), mockId)).thenReturn(expectedAnnotation);
Response postResponse = resource.postDispoAnnotation(annotationToCreate);
DispoAnnotationData returnedEntity = (DispoAnnotationData) postResponse.getEntity();
@@ -87,24 +91,25 @@ public class AnnotationResourceTest {
}
@Test
- public void testGetAllAsHtml() {
- // No Annotations3
- ResultSet<DispoAnnotationData> emptyResultSet = ResultSets.emptyResultSet();
+ public void testGetAllAsHtml() throws IOException {
+ // No Annotations
+ List<DispoAnnotationData> emptyResultSet = new ArrayList<DispoAnnotationData>();
when(dispositionApi.getDispoAnnotations(program, "itemId")).thenReturn(emptyResultSet);
+ when(htmlWriter.createSubTable(emptyResultSet)).thenReturn("htmlFromWriter");
Response noAnnotationsReponse = resource.getAllDispoAnnotations();
- String messageActual = (String) noAnnotationsReponse.getEntity();
- assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noAnnotationsReponse.getStatus());
- assertEquals(DispoMessages.Annotation_NoneFound, messageActual);
+ assertEquals(Response.Status.OK.getStatusCode(), noAnnotationsReponse.getStatus());
+ String html = (String) noAnnotationsReponse.getEntity();
+ assertEquals("htmlFromWriter", html);
DispoAnnotationData annotation = new DispoAnnotationData();
annotation.setId(mockId);
annotation.setLocationRefs("1-10");
- ResultSet<DispoAnnotationData> resultSet = ResultSets.singleton(annotation);
+ List<DispoAnnotationData> resultSet = new ArrayList<DispoAnnotationData>();
when(dispositionApi.getDispoAnnotations(program, "itemId")).thenReturn(resultSet);
- when(htmlWriter.createDispositionPage("Annotations", "annotation/", resultSet)).thenReturn("htmlFromWriter");
+ when(htmlWriter.createSubTable(resultSet)).thenReturn("htmlFromWriter");
Response oneSetResponse = resource.getAllDispoAnnotations();
- String html = (String) oneSetResponse.getEntity();
+ html = (String) oneSetResponse.getEntity();
assertEquals(Response.Status.OK.getStatusCode(), oneSetResponse.getStatus());
assertEquals("htmlFromWriter", html);
}
@@ -112,7 +117,7 @@ public class AnnotationResourceTest {
@Test
public void testGetSingleAsJson() {
// No items
- when(dispositionApi.getDispoAnnotationByIndex(program, "itemId", mockId)).thenReturn(null);
+ when(dispositionApi.getDispoAnnotationById(program, "itemId", mockId)).thenReturn(null);
Response noAnnotationsResponse = resource.getAnnotationByIdJson(mockId);
String messageActual = (String) noAnnotationsResponse.getEntity();
assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noAnnotationsResponse.getStatus());
@@ -121,7 +126,7 @@ public class AnnotationResourceTest {
DispoAnnotationData expectedAnnotation = new DispoAnnotationData();
expectedAnnotation.setId(mockId);
expectedAnnotation.setLocationRefs("1-10");
- when(dispositionApi.getDispoAnnotationByIndex(program, "itemId", expectedAnnotation.getId())).thenReturn(
+ when(dispositionApi.getDispoAnnotationById(program, "itemId", expectedAnnotation.getId())).thenReturn(
expectedAnnotation);
Response oneSetResponse = resource.getAnnotationByIdJson(expectedAnnotation.getId());
DispoAnnotationData returnedItem = (DispoAnnotationData) oneSetResponse.getEntity();
@@ -130,29 +135,6 @@ public class AnnotationResourceTest {
}
@Test
- public void testGetSingleAsHtml() {
- // No Items
- when(dispositionApi.getDispoAnnotationByIndex(program, "itemId", mockId)).thenReturn(null);
- Response noItemsResponse = resource.getAnnotationByIdHtml(mockId);
- String messageActual = (String) noItemsResponse.getEntity();
- assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noItemsResponse.getStatus());
- assertEquals(DispoMessages.Annotation_NotFound, messageActual);
-
- DispoAnnotationData expectedAnnotation = new DispoAnnotationData();
- expectedAnnotation.setId(mockId);
- expectedAnnotation.setLocationRefs("1-10");
- JSONArray notes = new JSONArray();
- expectedAnnotation.setNotesList(notes);
- when(dispositionApi.getDispoAnnotationByIndex(program, "itemId", expectedAnnotation.getId())).thenReturn(
- expectedAnnotation);
- when(htmlWriter.createDispoPage(expectedAnnotation.getName(), "", "", "[]")).thenReturn("htmlFromWriter");
- Response response = resource.getAnnotationByIdHtml(expectedAnnotation.getId());
- String returnedHtml = (String) response.getEntity();
- assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
- assertEquals("htmlFromWriter", returnedHtml);
- }
-
- @Test
public void testPut() {
DispoAnnotationData newAnnotation = new DispoAnnotationData();
newAnnotation.setLocationRefs("2-11");
@@ -160,8 +142,11 @@ public class AnnotationResourceTest {
annotationToEdit.setId(mockId);
when(dispositionApi.editDispoAnnotation(program, "itemId", annotationToEdit.getId(), newAnnotation)).thenReturn(
true);
+ when(dispositionApi.getDispoItemById(program, "itemId")).thenReturn(dispoItem);
+ when(dispoItem.getStatus()).thenReturn(DispoStrings.Item_Complete);
Response response = resource.putDispoAnnotation(annotationToEdit.getId(), newAnnotation);
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+ assertEquals(DispoStrings.Item_Complete, response.getEntity());
when(dispositionApi.editDispoAnnotation(program, "itemId", annotationToEdit.getId(), newAnnotation)).thenReturn(
false);
@@ -174,8 +159,11 @@ public class AnnotationResourceTest {
DispoAnnotationData annotationToEdit = new DispoAnnotationData();
annotationToEdit.setId(mockId);
when(dispositionApi.deleteDispoAnnotation(program, "itemId", annotationToEdit.getId())).thenReturn(true);
+ when(dispositionApi.getDispoItemById(program, "itemId")).thenReturn(dispoItem);
+ when(dispoItem.getStatus()).thenReturn(DispoStrings.Item_InComplete);
Response response = resource.deleteDispoAnnotation(annotationToEdit.getId());
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
+ assertEquals(DispoStrings.Item_InComplete, response.getEntity());
when(dispositionApi.deleteDispoAnnotation(program, "itemId", annotationToEdit.getId())).thenReturn(false);
response = resource.deleteDispoAnnotation(annotationToEdit.getId());
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoItemResourceTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoItemResourceTest.java
index aa369b07a39..f0657f6613f 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoItemResourceTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoItemResourceTest.java
@@ -12,16 +12,20 @@ package org.eclipse.osee.disposition.rest.resources;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import javax.ws.rs.core.Response;
-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.model.DispoMessages;
import org.eclipse.osee.disposition.model.DispoProgram;
import org.eclipse.osee.disposition.rest.DispoApi;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
import org.eclipse.osee.framework.jdk.core.type.Identifiable;
-import org.eclipse.osee.framework.jdk.core.type.ResultSet;
-import org.eclipse.osee.framework.jdk.core.type.ResultSets;
import org.eclipse.osee.orcs.data.ArtifactReadable;
import org.junit.Before;
import org.junit.Test;
@@ -36,7 +40,7 @@ public class DispoItemResourceTest {
@Mock
private DispoApi dispositionApi;
@Mock
- private HtmlWriter htmlWriter;
+ private DispoHtmlWriter htmlWriter;
@Mock
private Identifiable<String> id1;
@Mock
@@ -58,26 +62,19 @@ public class DispoItemResourceTest {
}
@Test
- public void testGetAllAsHtml() {
+ public void testGetAllAsHtml() throws Exception {
// No Items
- ResultSet<DispoItemData> emptyResultSet = ResultSets.emptyResultSet();
+ List<DispoItem> emptyResultSet = new ArrayList<DispoItem>();
when(dispositionApi.getDispoItems(program, "setId")).thenReturn(emptyResultSet);
Response noItemsResponse = resource.getAllDispoItems();
- String messageActual = (String) noItemsResponse.getEntity();
- assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noItemsResponse.getStatus());
- assertEquals(DispoMessages.Item_NoneFound, messageActual);
+ assertEquals(Response.Status.OK.getStatusCode(), noItemsResponse.getStatus());
- DispoItemData item = new DispoItemData();
- item.setGuid(id1.getGuid());
- item.setName("Item");
- ResultSet<DispoItemData> resultSet = ResultSets.singleton(item);
+ DispoItem item = new DispoItemData();
+ List<DispoItem> resultSet = Collections.singletonList(item);
when(dispositionApi.getDispoItems(program, "setId")).thenReturn(resultSet);
- when(htmlWriter.createDispositionPage("Dispositionable Items", "item/", resultSet)).thenReturn("htmlFromWriter");
Response oneSetResponse = resource.getAllDispoItems();
- String html = (String) oneSetResponse.getEntity();
assertEquals(Response.Status.OK.getStatusCode(), oneSetResponse.getStatus());
- assertEquals("htmlFromWriter", html);
}
@Test
@@ -100,31 +97,6 @@ public class DispoItemResourceTest {
}
@Test
- public void testGetSingleSetAsHtml() {
- // No Items
- when(dispositionApi.getDispoItemById(program, id2.getGuid())).thenReturn(null);
- Response noItemsResponse = resource.getDispoItemsByIdHtml(id2.getGuid());
- String messageActual = (String) noItemsResponse.getEntity();
- assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noItemsResponse.getStatus());
- assertEquals(DispoMessages.Item_NotFound, messageActual);
-
- DispoItemData item = new DispoItemData();
- item.setGuid(id1.getGuid());
- item.setName("item");
- ResultSet<DispoAnnotationData> emptyResultSet = ResultSets.emptyResultSet();
- ResultSet<DispoAnnotationData> resultAnnotations = emptyResultSet;
- when(dispositionApi.getDispoItemById(program, item.getGuid())).thenReturn(item);
- when(dispositionApi.getDispoAnnotations(program, id1.getGuid())).thenReturn(resultAnnotations);
- String prefixPath = item.getGuid() + "/annotation";
- String subTitle = "Annotations";
- when(htmlWriter.createDispoPage(item.getName(), prefixPath, subTitle, "[]")).thenReturn("htmlFromWriter");
- Response response = resource.getDispoItemsByIdHtml(item.getGuid());
- String returnedHtml = (String) response.getEntity();
- assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
- assertEquals("htmlFromWriter", returnedHtml);
- }
-
- @Test
public void testPut() {
DispoItemData newItem = new DispoItemData();
DispoItemData itemToEdt = new DispoItemData();
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResourceTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResourceTest.java
index 4c2dd51fe22..e5c40e6d449 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResourceTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResourceTest.java
@@ -17,7 +17,7 @@ import org.eclipse.osee.disposition.model.DispoMessages;
import org.eclipse.osee.disposition.model.DispoProgram;
import org.eclipse.osee.disposition.rest.DispoApi;
import org.eclipse.osee.disposition.rest.util.DispoFactory;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.data.TokenFactory;
import org.eclipse.osee.framework.jdk.core.type.ResultSet;
@@ -35,7 +35,7 @@ public class DispoProgramResourceTest {
@Mock
private DispoApi dispoApi;
@Mock
- private HtmlWriter htmlWriter;
+ private DispoHtmlWriter htmlWriter;
@Mock
private DispoProgram id1;
@Mock
@@ -67,32 +67,10 @@ public class DispoProgramResourceTest {
ResultSet<IOseeBranch> branchList = ResultSets.singleton(branch);
when(dispoApi.getDispoPrograms()).thenReturn(branchList);
- when(htmlWriter.createDispositionPage("Programs", "", branchList)).thenReturn("htmlFromWriter");
+ when(htmlWriter.createSelectPrograms(branchList)).thenReturn("htmlFromWriter");
Response oneSetResponse = resource.getAllPrograms();
String html = (String) oneSetResponse.getEntity();
assertEquals(Response.Status.OK.getStatusCode(), oneSetResponse.getStatus());
assertEquals("htmlFromWriter", html);
}
-
- @Test
- public void testGetProgramById() {
- // No Sets
- when(dispoApi.getDispoProgramById(id2)).thenReturn(null);
- Response noSetsResponse = resource.getProgramById(String.valueOf(id2.getUuid()));
- String messageActual = (String) noSetsResponse.getEntity();
- assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noSetsResponse.getStatus());
- assertEquals(DispoMessages.Program_NotFound, messageActual);
-
- IOseeBranch testBranch = TokenFactory.createBranch(id1.getUuid(), "testBranch");
- when(dispoFactory.createProgram(String.valueOf(id1.getUuid()))).thenReturn(id1);
- when(dispoApi.getDispoProgramById(id1)).thenReturn(testBranch);
- String prefixPath = testBranch.getUuid() + "/set";
- String subTitle = "Disposition Sets";
- when(htmlWriter.createDispoPage(testBranch.getName(), prefixPath, subTitle, "[]")).thenReturn("htmlFromWriter");
-
- Response response = resource.getProgramById(String.valueOf(testBranch.getUuid()));
- String returnedHtml = (String) response.getEntity();
- assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
- assertEquals("htmlFromWriter", returnedHtml);
- }
}
diff --git a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoSetResourceTest.java b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoSetResourceTest.java
index 169c89b08d4..ecfe4433b97 100644
--- a/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoSetResourceTest.java
+++ b/plugins/org.eclipse.osee.disposition.rest.test/src/org/eclipse/osee/disposition/rest/resources/DispoSetResourceTest.java
@@ -12,18 +12,18 @@ package org.eclipse.osee.disposition.rest.resources;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import javax.ws.rs.core.Response;
-import org.eclipse.osee.disposition.model.DispoItemData;
import org.eclipse.osee.disposition.model.DispoMessages;
import org.eclipse.osee.disposition.model.DispoProgram;
+import org.eclipse.osee.disposition.model.DispoSet;
import org.eclipse.osee.disposition.model.DispoSetData;
import org.eclipse.osee.disposition.model.DispoSetDescriptorData;
import org.eclipse.osee.disposition.rest.DispoApi;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
import org.eclipse.osee.framework.jdk.core.type.Identifiable;
-import org.eclipse.osee.framework.jdk.core.type.ResultSet;
-import org.eclipse.osee.framework.jdk.core.type.ResultSets;
-import org.json.JSONArray;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
@@ -37,7 +37,7 @@ public class DispoSetResourceTest {
@Mock
private DispoApi dispositionApi;
@Mock
- private HtmlWriter htmlWriter;
+ private DispoHtmlWriter htmlWriter;
@Mock
private Identifiable<String> id1;
@Mock
@@ -116,20 +116,18 @@ public class DispoSetResourceTest {
@Test
public void testGetAllAsHtml() {
// No Sets
- ResultSet<DispoSetData> emptyResultSet = ResultSets.emptyResultSet();
+ List<DispoSet> emptyResultSet = new ArrayList<DispoSet>();
when(dispositionApi.getDispoSets(program)).thenReturn(emptyResultSet);
Response noSetsResponse = resource.getAllDispoSets();
String messageActual = (String) noSetsResponse.getEntity();
assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noSetsResponse.getStatus());
assertEquals(DispoMessages.Set_NoneFound, messageActual);
- DispoSetData set = new DispoSetData();
- set.setGuid(id1.getGuid());
- set.setName("Set");
- ResultSet<DispoSetData> resultSet = ResultSets.singleton(set);
+ DispoSet set = new DispoSetData();
+ List<DispoSet> resultSet = Collections.singletonList(set);
when(dispositionApi.getDispoSets(program)).thenReturn(resultSet);
- when(htmlWriter.createDispositionPage("Disposition Sets", "set/", resultSet)).thenReturn("htmlFromWriter");
+ when(htmlWriter.createSelectSet(resultSet)).thenReturn("htmlFromWriter");
Response oneSetResponse = resource.getAllDispoSets();
String html = (String) oneSetResponse.getEntity();
assertEquals(Response.Status.OK.getStatusCode(), oneSetResponse.getStatus());
@@ -152,34 +150,7 @@ public class DispoSetResourceTest {
Response oneSetResponse = resource.getDispoSetByIdJson(expectedSet.getGuid());
DispoSetData returnedSet = (DispoSetData) oneSetResponse.getEntity();
assertEquals(Response.Status.OK.getStatusCode(), oneSetResponse.getStatus());
- assertEquals(expectedSet, returnedSet);
- }
-
- @Test
- public void testGetSingleSetAsHtml() {
- // No Sets
- when(dispositionApi.getDispoSetById(program, id2.getGuid())).thenReturn(null);
- Response noSetsResponse = resource.getDispoSetByIdHtml(id2.getGuid());
- String messageActual = (String) noSetsResponse.getEntity();
- assertEquals(Response.Status.NOT_FOUND.getStatusCode(), noSetsResponse.getStatus());
- assertEquals(DispoMessages.Set_NotFound, messageActual);
-
- DispoSetData set = new DispoSetData();
- set.setGuid(id1.getGuid());
- set.setName("set");
- JSONArray notesArray = new JSONArray();
- set.setNotesList(notesArray);
- ResultSet<DispoItemData> emptyResultSet = ResultSets.emptyResultSet();
- ResultSet<DispoItemData> resultListItems = emptyResultSet;
- when(dispositionApi.getDispoSetById(program, id1.getGuid())).thenReturn(set);
- when(dispositionApi.getDispoItems(program, id1.getGuid())).thenReturn(resultListItems);
- String prefixPath = set.getGuid() + "/item";
- String subTitle = "Dispositionable Items";
- when(htmlWriter.createDispoPage(set.getName(), prefixPath, subTitle, "[]")).thenReturn("htmlFromWriter");
- Response response = resource.getDispoSetByIdHtml(set.getGuid());
- String returnedHtml = (String) response.getEntity();
- assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
- assertEquals("htmlFromWriter", returnedHtml);
+ assertEquals(expectedSet.getGuid(), returnedSet.getGuid());
}
@Test
diff --git a/plugins/org.eclipse.osee.disposition.rest/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.disposition.rest/META-INF/MANIFEST.MF
index 979cfca71f2..bd71f52e234 100644
--- a/plugins/org.eclipse.osee.disposition.rest/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.disposition.rest/META-INF/MANIFEST.MF
@@ -7,15 +7,18 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-Vendor: Eclipse Open System Engineering Environment
Service-Component: OSGI-INF/*.xml
Import-Package:
+ com.google.common.collect,
javax.ws.rs,
javax.ws.rs.core,
javax.ws.rs.ext,
org.eclipse.osee.disposition.model,
+ org.eclipse.osee.executor.admin,
org.eclipse.osee.framework.core.data,
org.eclipse.osee.framework.core.enums,
org.eclipse.osee.framework.core.model,
org.eclipse.osee.framework.jdk.core.type,
org.eclipse.osee.framework.jdk.core.util,
+ org.eclipse.osee.framework.jdk.core.util.io.xml,
org.eclipse.osee.framework.resource.management,
org.eclipse.osee.framework.resource.management.util,
org.eclipse.osee.logger,
diff --git a/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.app.xml b/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.app.xml
index 27a82c01251..40cddb3d382 100644
--- a/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.app.xml
+++ b/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.app.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0">
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop">
<implementation class="org.eclipse.osee.disposition.rest.resources.DispoApplication"/>
<service>
<provide interface="javax.ws.rs.core.Application"/>
diff --git a/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.service.xml b/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.service.xml
index e3f2a1b70d8..e04df0dd7b0 100644
--- a/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.service.xml
+++ b/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/disposition.service.xml
@@ -8,4 +8,6 @@
<reference bind="setDataFactory" cardinality="1..1" interface="org.eclipse.osee.disposition.rest.internal.DispoDataFactory" name="DispoDataFactory" policy="static"/>
<reference bind="setDispoConnector" cardinality="1..1" interface="org.eclipse.osee.disposition.rest.internal.DispoConnector" name="DispoConnector" policy="static"/>
<reference bind="setLogger" cardinality="1..1" interface="org.eclipse.osee.logger.Log" name="Log" policy="static"/>
+ <reference bind="setResolutionValidator" cardinality="1..1" interface="org.eclipse.osee.disposition.rest.internal.DispoResolutionValidator" name="DispoResolutionValidator" policy="static"/>
+ <reference bind="setExecutor" cardinality="1..1" interface="org.eclipse.osee.executor.admin.ExecutorAdmin" name="ExecutorAdmin" policy="static"/>
</scr:component>
diff --git a/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/resolution.validator.service.xml b/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/resolution.validator.service.xml
new file mode 100644
index 00000000000..70a334d0ac9
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest/OSGI-INF/resolution.validator.service.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop">
+ <implementation class="org.eclipse.osee.disposition.rest.internal.DispoResolutionValidator"/>
+ <service>
+ <provide interface="org.eclipse.osee.disposition.rest.internal.DispoResolutionValidator"/>
+ </service>
+ <reference bind="setLogger" cardinality="1..1" interface="org.eclipse.osee.logger.Log" name="Log" policy="static"/>
+</scr:component>
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoApi.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoApi.java
index c368d21418d..13c9b50dfdd 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoApi.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoApi.java
@@ -10,9 +10,12 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest;
+import java.util.List;
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.model.DispoProgram;
+import org.eclipse.osee.disposition.model.DispoSet;
import org.eclipse.osee.disposition.model.DispoSetData;
import org.eclipse.osee.disposition.model.DispoSetDescriptorData;
import org.eclipse.osee.disposition.rest.util.DispoFactory;
@@ -26,22 +29,19 @@ import org.eclipse.osee.framework.jdk.core.type.ResultSet;
public interface DispoApi {
// Queries
-
- IOseeBranch getDispoProgramById(DispoProgram program);
-
ResultSet<IOseeBranch> getDispoPrograms();
- ResultSet<DispoSetData> getDispoSets(DispoProgram program);
+ List<DispoSet> getDispoSets(DispoProgram program);
- DispoSetData getDispoSetById(DispoProgram program, String dispoSetId);
+ DispoSet getDispoSetById(DispoProgram program, String dispoSetId);
- ResultSet<DispoItemData> getDispoItems(DispoProgram program, String dispoSetId);
+ List<DispoItem> getDispoItems(DispoProgram program, String dispoSetId);
- DispoItemData getDispoItemById(DispoProgram program, String itemId);
+ DispoItem getDispoItemById(DispoProgram program, String itemId);
- ResultSet<DispoAnnotationData> getDispoAnnotations(DispoProgram program, String itemId);
+ List<DispoAnnotationData> getDispoAnnotations(DispoProgram program, String itemId);
- DispoAnnotationData getDispoAnnotationByIndex(DispoProgram program, String itemId, String annotationId);
+ DispoAnnotationData getDispoAnnotationById(DispoProgram program, String itemId, String annotationId);
// Writes
Identifiable<String> createDispoSet(DispoProgram program, DispoSetDescriptorData descriptor);
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoConstants.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoConstants.java
index 04cc23945d5..5a4e9a07d13 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoConstants.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/DispoConstants.java
@@ -12,9 +12,7 @@ package org.eclipse.osee.disposition.rest;
import org.eclipse.osee.framework.core.data.IArtifactType;
import org.eclipse.osee.framework.core.data.IAttributeType;
-import org.eclipse.osee.framework.core.data.IRelationTypeSide;
import org.eclipse.osee.framework.core.data.TokenFactory;
-import org.eclipse.osee.framework.core.enums.RelationSide;
import org.eclipse.osee.orcs.data.ArtifactId;
import org.eclipse.osee.orcs.utility.OrcsUtil;
@@ -28,7 +26,6 @@ public final class DispoConstants {
public static final IArtifactType DispoItem = TokenFactory.createArtifactType(0x0000000000000328, "Dispositionable Item");
public static final IAttributeType ImportPath= TokenFactory.createAttributeType(0x1000000000000389L, "dispo.Import Path");
- public static final IAttributeType StatusCount= TokenFactory.createAttributeType(0x1000000000000390L, "dispo.Status Count");
public static final IAttributeType ImportState= TokenFactory.createAttributeType(0x3000000000000196L, "dispo.Import State");
public static final IAttributeType DispoAnnotationsJson = TokenFactory.createAttributeType(0x1000000000000386L, "dispo.Annotations JSON");
public static final IAttributeType DispoDiscrepanciesJson = TokenFactory.createAttributeType(0x1000000000000387L, "dispo.Discrepancies JSON");
@@ -36,10 +33,9 @@ public final class DispoConstants {
public static final IAttributeType DispoDateCreated = TokenFactory.createAttributeType(0x1000000000000391L, "dispo.Date Created");
public static final IAttributeType DispoLastUpdated = TokenFactory.createAttributeType(0x1000000000000392L, "dispo.Last Updated");
public static final IAttributeType DispoItemStatus = TokenFactory.createAttributeType(0x3000000000000198L, "dispo.Item Status");
+ public static final IAttributeType DispoItemVersion = TokenFactory.createAttributeType(0x3000000000000200L, "dispo.Item Version");
+ public static final IAttributeType DispoItemAssignee = TokenFactory.createAttributeType(0x3000000000000201L, "dispo.Assignee");
- public static final IRelationTypeSide DispoAssigned_Item = TokenFactory.createRelationTypeSide(RelationSide.SIDE_A, 0x2000000000000181L, "dispo.Assigned");
- public static final IRelationTypeSide DispoAssigned_Assignee = DispoAssigned_Item.getOpposite();
-
public static final ArtifactId DispoTypesArtifact = OrcsUtil.newArtifactId("BEQGMZJDBHPd4OeWg6AA", "DispositionTypes");
// @formatter:on
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 901f5d3d1e5..93995cc6857 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
@@ -10,10 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.internal;
-import static org.eclipse.osee.disposition.model.DispoStrings.Item_Complete;
-import static org.eclipse.osee.disposition.model.DispoStrings.Item_Pass;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.eclipse.osee.disposition.model.DispoAnnotationData;
import org.eclipse.osee.disposition.model.DispoItem;
@@ -25,11 +22,11 @@ import org.eclipse.osee.disposition.model.DispoSetDescriptorData;
import org.eclipse.osee.disposition.rest.DispoApi;
import org.eclipse.osee.disposition.rest.util.DispoFactory;
import org.eclipse.osee.disposition.rest.util.DispoUtil;
+import org.eclipse.osee.executor.admin.ExecutorAdmin;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.jdk.core.type.Identifiable;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.type.ResultSet;
-import org.eclipse.osee.framework.jdk.core.type.ResultSets;
import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.data.ArtifactReadable;
import org.json.JSONArray;
@@ -42,11 +39,18 @@ import org.json.JSONObject;
public class DispoApiImpl implements DispoApi {
+ private ExecutorAdmin executor;
+
private Log logger;
private StorageProvider storageProvider;
private DispoDataFactory dataFactory;
private DispoConnector dispoConnector;
private DispoFactory dispoFactory;
+ private DispoResolutionValidator resolutionValidator;
+
+ public void setExecutor(ExecutorAdmin executor) {
+ this.executor = executor;
+ }
public void setLogger(Log logger) {
this.logger = logger;
@@ -64,6 +68,10 @@ public class DispoApiImpl implements DispoApi {
this.storageProvider = storageProvider;
}
+ public void setResolutionValidator(DispoResolutionValidator resolutionValidator) {
+ this.resolutionValidator = resolutionValidator;
+ }
+
public void start() {
logger.trace("Starting DispoApiImpl...");
dispoFactory = new DispoFactoryImpl();
@@ -106,36 +114,34 @@ public class DispoApiImpl implements DispoApi {
String idOfNewAnnotation = "";
DispoItem dispoItem = getQuery().findDispoItemById(program, itemId);
if (dispoItem != null) {
- dataFactory.initAnnotation(annotationToCreate);
- idOfNewAnnotation = dataFactory.getNewId();
- annotationToCreate.setId(idOfNewAnnotation);
-
- boolean isValidResolution = false;
- String resolution = annotationToCreate.getResolution();
- if (resolution != null) {
- isValidResolution = validateResolution(resolution);
- }
- annotationToCreate.setIsResolutionValid(isValidResolution);
+ try {
+ JSONArray annotationsList = dispoItem.getAnnotationsList();
+ dataFactory.initAnnotation(annotationToCreate);
+ idOfNewAnnotation = dataFactory.getNewId();
+ annotationToCreate.setId(idOfNewAnnotation);
+ int indexOfAnnotation = annotationsList.length();
+ annotationToCreate.setIndex(indexOfAnnotation);
+
+ boolean isValidResolution = false;
+ String resolution = annotationToCreate.getResolution();
+ if (resolution != null) {
+ isValidResolution = validateResolution(annotationToCreate);
+ }
+ annotationToCreate.setIsResolutionValid(isValidResolution);
+
+ JSONObject discrepanciesList = dispoItem.getDiscrepanciesList();
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
- if (isValidResolution) {
dispoConnector.connectAnnotation(annotationToCreate, discrepanciesList);
- }
- JSONObject annotationsList = dispoItem.getAnnotationsList();
- try {
- annotationsList.put(idOfNewAnnotation, DispoUtil.annotationToJsonObj(annotationToCreate));
+
+ annotationsList.put(indexOfAnnotation, DispoUtil.annotationToJsonObj(annotationToCreate));
+
+ DispoItem updatedItem;
+ updatedItem = dataFactory.createUpdatedItem(annotationsList, discrepanciesList);
+ ArtifactReadable author = getQuery().findUser();
+ getWriter().updateDispoItem(author, program, dispoItem.getGuid(), updatedItem);
} catch (JSONException ex) {
throw new OseeCoreException(ex);
}
-
- String currentStatus = dispoItem.getStatus();
- boolean updateStatus = false;
- if (!currentStatus.equals(Item_Complete) && !currentStatus.equals(Item_Pass) && annotationToCreate.isValid()) {
- updateStatus = true;
- }
- DispoItem updatedItem = dataFactory.createUpdatedItem(annotationsList, discrepanciesList, updateStatus);
- ArtifactReadable author = getQuery().findUser();
- getWriter().updateDispoItem(author, program, dispoItem.getGuid(), updatedItem);
}
return idOfNewAnnotation;
}
@@ -152,7 +158,7 @@ public class DispoApiImpl implements DispoApi {
}
if (newSet.getOperation() != null) {
- runOperation(dispSetToEdit, newSet);
+ runOperation(program, dispSetToEdit, newSet);
}
ArtifactReadable author = getQuery().findUser();
@@ -173,15 +179,7 @@ public class DispoApiImpl implements DispoApi {
boolean wasUpdated = false;
DispoItem dispoItemToEdit = getQuery().findDispoItemById(program, itemId);
- if (dispoItemToEdit != null && newDispoItem.getAnnotationsList() == null) { // We will not allow them to do mass edit of Annotations
- // Check to see if we are editing the discrepancies
- if (newDispoItem.getDiscrepanciesList() != null) {
- JSONArray mergedDiscrepanciesList =
- dataFactory.mergeJsonArrays(dispoItemToEdit.getDiscrepanciesList(), newDispoItem.getDiscrepanciesList());
- newDispoItem.setDiscrepanciesList(mergedDiscrepanciesList);
- newDispoItem.setStatus(dispoConnector.allDiscrepanciesAnnotated(newDispoItem));
- }
-
+ if (dispoItemToEdit != null && newDispoItem.getAnnotationsList() == null && newDispoItem.getDiscrepanciesList() == null) { // We will not allow the user to do mass edit of Annotations or discrepancies
ArtifactReadable author = getQuery().findUser();
getWriter().updateDispoItem(author, program, dispoItemToEdit.getGuid(), newDispoItem);
wasUpdated = true;
@@ -200,19 +198,18 @@ public class DispoApiImpl implements DispoApi {
boolean wasUpdated = false;
DispoItem dispoItem = getQuery().findDispoItemById(program, itemId);
if (dispoItem != null) {
- JSONObject annotationsList = dispoItem.getAnnotationsList();
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
+ JSONArray annotationsList = dispoItem.getAnnotationsList();
+ JSONObject discrepanciesList = dispoItem.getDiscrepanciesList();
try {
DispoAnnotationData oldAnnotation =
- DispoUtil.jsonObjToDispoAnnotationData(annotationsList.getJSONObject(annotationId));
+ DispoUtil.jsonObjToDispoAnnotationData(DispoUtil.getById(annotationsList, annotationId));
+ int indexOfAnnotation = oldAnnotation.getIndex();
DispoAnnotationData consolidatedAnnotation = oldAnnotation;
// Check if newAnnotation has notes, if it does then merge with old notes
- JSONArray newNotes = newAnnotation.getNotesList();
- if (newNotes != null) {
- consolidatedAnnotation.setNotesList(dataFactory.mergeJsonArrays(oldAnnotation.getNotesList(), newNotes));
- }
+ String newNotes = newAnnotation.getNotes();
+ consolidatedAnnotation.setNotes(newNotes);
// now if the new Annotation modified the location Reference or resolution then disconnect the annotation and try to match it to discrepancies again
String newLocationRefs = newAnnotation.getLocationRefs();
@@ -220,22 +217,20 @@ public class DispoApiImpl implements DispoApi {
if (newLocationRefs != null || newResolution != null) {
if (newResolution != null) {
consolidatedAnnotation.setResolution(newResolution);
- consolidatedAnnotation.setIsResolutionValid(validateResolution(newResolution));
+ consolidatedAnnotation.setIsResolutionValid(validateResolution(consolidatedAnnotation));
}
if (newLocationRefs != null) {
consolidatedAnnotation.setLocationRefs(newLocationRefs);
}
- dispoConnector.disconnectAnnotation(consolidatedAnnotation, discrepanciesList);
- if (consolidatedAnnotation.getIsResolutionValid()) {
- dispoConnector.connectAnnotation(consolidatedAnnotation, discrepanciesList);
- }
+ consolidatedAnnotation.disconnect();
+ dispoConnector.connectAnnotation(consolidatedAnnotation, discrepanciesList);
}
JSONObject annotationAsJsonObject = DispoUtil.annotationToJsonObj(consolidatedAnnotation);
- annotationsList.put(annotationId, annotationAsJsonObject);
+ annotationsList.put(indexOfAnnotation, annotationAsJsonObject);
- DispoItem updatedItem = dataFactory.createUpdatedItem(annotationsList, discrepanciesList, true);
+ DispoItem updatedItem = dataFactory.createUpdatedItem(annotationsList, discrepanciesList);
ArtifactReadable author = getQuery().findUser();
getWriter().updateDispoItem(author, program, dispoItem.getGuid(), updatedItem);
wasUpdated = true;
@@ -251,20 +246,17 @@ public class DispoApiImpl implements DispoApi {
boolean wasUpdated = false;
DispoItem dispoItem = getQuery().findDispoItemById(program, itemId);
if (dispoItem != null) {
- JSONObject annotationsList = dispoItem.getAnnotationsList();
- JSONArray discrepanciesList = dispoItem.getDiscrepanciesList();
+ JSONArray annotationsList = dispoItem.getAnnotationsList();
+ JSONObject discrepanciesList = dispoItem.getDiscrepanciesList();
try {
DispoAnnotationData annotationToRemove =
- DispoUtil.jsonObjToDispoAnnotationData(annotationsList.getJSONObject(annotationId));
- // No need to update status for new item if the deleted annotation was invalid, status would remain the same
- boolean updateStatus = false;
- if (annotationToRemove.getIsConnected()) {
- updateStatus = true;
- }
- dispoConnector.disconnectAnnotation(annotationToRemove, discrepanciesList);
- annotationsList.remove(annotationId);
+ DispoUtil.jsonObjToDispoAnnotationData(DispoUtil.getById(annotationsList, annotationId));
+ annotationToRemove.disconnect();
+
+ // collapse list so there are no gaps
+ JSONArray newAnnotationsList = collapseList(annotationsList, annotationToRemove.getIndex());
- DispoItem updatedItem = dataFactory.createUpdatedItem(annotationsList, discrepanciesList, updateStatus);
+ DispoItem updatedItem = dataFactory.createUpdatedItem(newAnnotationsList, discrepanciesList);
ArtifactReadable author = getQuery().findUser();
getWriter().updateDispoItem(author, program, dispoItem.getGuid(), updatedItem);
@@ -278,74 +270,53 @@ public class DispoApiImpl implements DispoApi {
@Override
public ResultSet<IOseeBranch> getDispoPrograms() {
- List<IOseeBranch> results = new ArrayList<IOseeBranch>();
- ResultSet<? extends IOseeBranch> baselineBranches = getQuery().findBaselineBranches();
- for (IOseeBranch baselinebBranch : baselineBranches) {
- results.add(baselinebBranch);
- }
- return ResultSets.newResultSet(results);
+ return getQuery().getDispoBranches();
}
@Override
- public IOseeBranch getDispoProgramById(DispoProgram program) {
- return getQuery().findProgramId(program);
+ public List<DispoSet> getDispoSets(DispoProgram program) throws OseeCoreException {
+ return getQuery().findDispoSets(program);
}
@Override
- public ResultSet<DispoSetData> getDispoSets(DispoProgram program) throws OseeCoreException {
- return translateAllToDispoSetData(getQuery().findDispoSets(program));
+ public DispoSet getDispoSetById(DispoProgram program, String setId) throws OseeCoreException {
+ return getQuery().findDispoSetsById(program, setId);
}
@Override
- public DispoSetData getDispoSetById(DispoProgram program, String setId) throws OseeCoreException {
- return DispoUtil.setArtToSetData(getQuery().findDispoSetsById(program, setId));
+ public List<DispoItem> getDispoItems(DispoProgram program, String setArtId) {
+ return getQuery().findDipoItems(program, setArtId);
}
@Override
- public ResultSet<DispoItemData> getDispoItems(DispoProgram program, String setArtId) {
- return translateAllToDispoItemData(getQuery().findDipoItems(program, setArtId));
+ public DispoItem getDispoItemById(DispoProgram program, String itemId) {
+ return getQuery().findDispoItemById(program, itemId);
}
@Override
- public DispoItemData getDispoItemById(DispoProgram program, String itemId) {
- DispoItemData dispositionableItem;
- DispoItem result = getQuery().findDispoItemById(program, itemId);
- if (result != null) {
- dispositionableItem = DispoUtil.itemArtToItemData(result);
- } else {
- dispositionableItem = null;
- }
- return dispositionableItem;
- }
-
- @Override
- public ResultSet<DispoAnnotationData> getDispoAnnotations(DispoProgram program, String itemId) {
+ public List<DispoAnnotationData> getDispoAnnotations(DispoProgram program, String itemId) {
List<DispoAnnotationData> toReturn = new ArrayList<DispoAnnotationData>();
DispoItem dispoItem = getQuery().findDispoItemById(program, itemId);
- JSONObject annotationsList = dispoItem.getAnnotationsList();
- @SuppressWarnings("unchecked")
- Iterator<String> keys = annotationsList.keys();
+ JSONArray annotationsList = dispoItem.getAnnotationsList();
try {
- while (keys.hasNext()) {
- toReturn.add(DispoUtil.jsonObjToDispoAnnotationData(annotationsList.getJSONObject(keys.next())));
+ for (int i = 0; i < annotationsList.length(); i++) {
+ toReturn.add(DispoUtil.jsonObjToDispoAnnotationData(annotationsList.getJSONObject(i)));
}
} catch (JSONException ex) {
throw new OseeCoreException(ex);
}
- return ResultSets.newResultSet(toReturn);
+ return toReturn;
}
@Override
- public DispoAnnotationData getDispoAnnotationByIndex(DispoProgram program, String itemId, String annotationId) {
+ public DispoAnnotationData getDispoAnnotationById(DispoProgram program, String itemId, String annotationId) {
DispoAnnotationData toReturn = new DispoAnnotationData();
DispoItem dispoItem = getQuery().findDispoItemById(program, itemId);
- JSONObject annotationsList = dispoItem.getAnnotationsList();
- if (annotationsList.has(annotationId)) {
- try {
- toReturn = DispoUtil.jsonObjToDispoAnnotationData(annotationsList.getJSONObject(annotationId));
- } catch (JSONException ex) {
- throw new OseeCoreException(ex);
- }
+ JSONArray annotationsList = dispoItem.getAnnotationsList();
+ JSONObject annotationInList = DispoUtil.getById(annotationsList, annotationId);
+ if (annotationInList != null) {
+ toReturn = DispoUtil.jsonObjToDispoAnnotationData(annotationInList);
+
} else {
toReturn = null;
}
@@ -353,40 +324,37 @@ public class DispoApiImpl implements DispoApi {
}
@Override
- public boolean isUniqueSetName(DispoProgram program, String name) {
- return getQuery().isUniqueSetName(program, name);
- }
-
- @Override
public boolean isUniqueItemName(DispoProgram program, String setId, String name) {
return getQuery().isUniqueItemName(program, setId, name);
}
- private ResultSet<DispoItemData> translateAllToDispoItemData(ResultSet<DispoItem> list) {
- List<DispoItemData> toReturn = new ArrayList<DispoItemData>();
- for (DispoItem item : list) {
- toReturn.add(DispoUtil.itemArtToItemData(item));
- }
-
- return ResultSets.newResultSet(toReturn);
+ @Override
+ public boolean isUniqueSetName(DispoProgram program, String name) {
+ return getQuery().isUniqueSetName(program, name);
}
- private ResultSet<DispoSetData> translateAllToDispoSetData(ResultSet<DispoSet> list) {
- List<DispoSetData> toReturn = new ArrayList<DispoSetData>();
- for (DispoSet set : list) {
- toReturn.add(DispoUtil.setArtToSetData(set));
- }
-
- return ResultSets.newResultSet(toReturn);
+ private void runOperation(DispoProgram program, DispoSet setToEdit, DispoSetData newSet) {
+ //do nothing
}
- private void runOperation(DispoSet setToEdit, DispoSetData newSet) {
- // Add operation Functionality here
+ private JSONArray collapseList(JSONArray oldList, int indexRemoved) throws JSONException {
+ // JSONArray's remove(index) leaves a gap so this method was created to get around that
+ // If the implementation is changed and remove(index) collapses the list, then this method can be removed
+ JSONArray newList = new JSONArray();
+ for (int i = 0; i < indexRemoved; i++) {
+ newList.put(i, oldList.getJSONObject(i));
+ }
+ for (int i = indexRemoved + 1; i < oldList.length(); i++) {
+ JSONObject annotationObject = oldList.getJSONObject(i);
+ DispoAnnotationData annotation = DispoUtil.jsonObjToDispoAnnotationData(annotationObject);
+ annotation.setIndex(annotation.getIndex() - 1);
+ newList.put(annotation.getIndex(), DispoUtil.annotationToJsonObj(annotation));
+ }
+ return newList;
}
- private boolean validateResolution(String resolution) {
- return resolution.equals("VALID");
- // Add PCR validation Functionality here
+ private boolean validateResolution(DispoAnnotationData annotation) {
+ return resolutionValidator.validate(annotation);
}
@Override
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 17a1144143a..d2b85dcb9fa 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,9 @@ package org.eclipse.osee.disposition.rest.internal;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Stack;
import java.util.StringTokenizer;
@@ -20,11 +23,9 @@ import org.eclipse.osee.disposition.model.DispoAnnotationData;
import org.eclipse.osee.disposition.model.DispoItem;
import org.eclipse.osee.disposition.model.DispoStrings;
import org.eclipse.osee.disposition.model.LocationRange;
-import org.eclipse.osee.disposition.rest.util.DiscrepancyComperator;
import org.eclipse.osee.disposition.rest.util.DispoUtil;
import org.eclipse.osee.disposition.rest.util.LocationRangeComparator;
import org.eclipse.osee.disposition.rest.util.LocationRangeUtil;
-import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.logger.Log;
import org.json.JSONArray;
import org.json.JSONException;
@@ -50,91 +51,139 @@ public class DispoConnector {
logger.trace("Stopping DispoConnector...");
}
- public String allDiscrepanciesAnnotated(DispoItem item) {
+ public String allDiscrepanciesAnnotated(DispoItem item) throws JSONException {
String toReturn;
- JSONArray discrepancies = item.getDiscrepanciesList();
- JSONObject annotations = item.getAnnotationsList();
+ JSONObject discrepancies = item.getDiscrepanciesList();
+ JSONArray annotatinos = item.getAnnotationsList();
+ HashSet<Integer> allCoveredDiscrepancies = getAllCoveredDiscrepanciesFromAnnotations(discrepancies, annotatinos);
+ ArrayList<Integer> allDiscrepancies = createDiscrepanciesList(discrepancies);
- int discrepanciesSize = discrepancies.length();
- if (discrepanciesSize == 0) {
- toReturn = DispoStrings.Item_Pass;
+ allDiscrepancies.removeAll(allCoveredDiscrepancies);
+
+ boolean allDiscrepanciesCovered = false;
+ if (allDiscrepancies.isEmpty()) {
+ allDiscrepanciesCovered = true;
} else {
- boolean allDiscrepanciesCovered = true; // Assume everything is covered, on first false we break and return false
- for (int i = 0; i < discrepanciesSize; i++) {
- try {
- JSONObject discrepancyObject = discrepancies.getJSONObject(i);
- Discrepancy discrepancy = DispoUtil.jsonObjToDiscrepancy(discrepancyObject);
- List<LocationRange> locRefsAsSortedList = getAllLocRefsAsSortedList(annotations, discrepancy);
- if (!LocationRangeUtil.isCovered(discrepancy.getLocationRange(), locRefsAsSortedList)) {
- allDiscrepanciesCovered = false;
- // We found a discrepancy that hasn't been fully covered
- break;
- }
- } catch (JSONException ex) {
- throw new OseeCoreException(ex);
- }
+ allDiscrepanciesCovered = false;
+ }
+
+ if (allAnnotationsValid(annotatinos) && allDiscrepanciesCovered) {
+ toReturn = DispoStrings.Item_Complete;
+ } else {
+ toReturn = DispoStrings.Item_InComplete;
+ }
+
+ return toReturn;
+ }
+
+ private boolean allAnnotationsValid(JSONArray annotatinos) throws JSONException {
+ int length = annotatinos.length();
+ for (int i = 0; i < length; i++) {
+ JSONObject annotationAsJson = annotatinos.getJSONObject(i);
+ DispoAnnotationData annotation = DispoUtil.jsonObjToDispoAnnotationData(annotationAsJson);
+ if (!annotation.isValid()) {
+ return false;
}
+ }
- if (allDiscrepanciesCovered) {
- toReturn = DispoStrings.Item_Complete;
- } else {
- toReturn = DispoStrings.Item_InComplete;
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ private ArrayList<Integer> createDiscrepanciesList(JSONObject discrepancies) throws JSONException {
+ ArrayList<Integer> toReturn = new ArrayList<Integer>();
+ Iterator<String> iterator = discrepancies.keys();
+ while (iterator.hasNext()) {
+ String key = iterator.next();
+ JSONObject discrepancyAsJson = discrepancies.getJSONObject(key);
+ Discrepancy discrepancy = DispoUtil.jsonObjToDiscrepancy(discrepancyAsJson);
+ toReturn.add(discrepancy.getLocation());
+ }
+
+ return toReturn;
+ }
+
+ private HashSet<Integer> getAllCoveredDiscrepanciesFromAnnotations(JSONObject discrepancies, JSONArray annotations) throws JSONException {
+ HashSet<Integer> toReturn = new HashSet<Integer>();
+ int length = annotations.length();
+ for (int j = 0; j < length; j++) {
+ JSONObject annotationAsObject = annotations.getJSONObject(j);
+ DispoAnnotationData annotation = DispoUtil.jsonObjToDispoAnnotationData(annotationAsObject);
+ JSONArray idsOfCoveredDiscrepancies = annotation.getIdsOfCoveredDiscrepancies();
+ for (int i = 0; i < idsOfCoveredDiscrepancies.length(); i++) {
+ String id = idsOfCoveredDiscrepancies.getString(i);
+ if (discrepancies.has(id)) {
+ JSONObject discrepancyAsJson = discrepancies.getJSONObject(id);
+ Discrepancy discrepancy = DispoUtil.jsonObjToDiscrepancy(discrepancyAsJson);
+ toReturn.add(discrepancy.getLocation());
+ } else {
+ String justTestPoint = id.replaceAll(DispoStrings.DeletedDiscrepancy, "");
+ toReturn.add(Integer.valueOf(justTestPoint));
+ }
}
}
return toReturn;
}
- public boolean connectAnnotation(DispoAnnotationData annotation, JSONArray discrepanciesArray) {
+ public boolean connectAnnotation(DispoAnnotationData annotation, JSONObject discrepanciesList) throws JSONException {
boolean isAllLocRefValid = true;
- List<Discrepancy> sortedDiscrepanciesList = arrayToSortedList(discrepanciesArray);
+ HashMap<Integer, String> testPointNumberToId = getPointNumbersToIds(discrepanciesList);
List<LocationRange> listOfLocationRefs = sortList(annotation.getLocationRefs());
- int startIndexForNextMatch = 0;
- int idOfPreviousMatched = -1;
+ List<String> workingIdsOfCovered = new ArrayList<String>();
for (LocationRange singleLocationRef : listOfLocationRefs) {
- try {
- Discrepancy matchedDiscrepancy =
- matchToDiscrepancy(annotation, singleLocationRef, sortedDiscrepanciesList, startIndexForNextMatch);
- if (matchedDiscrepancy == null) {
+ if (singleLocationRef.getStart() != singleLocationRef.getEnd()) {
+ for (int i = singleLocationRef.getStart(); i <= singleLocationRef.getEnd(); i++) {
+ if (!tryToAddDiscrepancyForTestPoint(testPointNumberToId, i, workingIdsOfCovered)) {
+ isAllLocRefValid = false;
+ break;
+ }
+ }
+ } else {
+ if (!tryToAddDiscrepancyForTestPoint(testPointNumberToId, singleLocationRef.getStart(), workingIdsOfCovered)) {
isAllLocRefValid = false;
break;
- } else {
- int idOfMatched = matchedDiscrepancy.getId();
- // only update discrepancy and annotation if we found a different matching discrepancy
- if (idOfPreviousMatched != idOfMatched) {
- idOfPreviousMatched = idOfMatched;
- startIndexForNextMatch = idOfMatched;
- matchedDiscrepancy.addCoveringAnnotation(annotation);
- JSONObject discrepancyAsObject = DispoUtil.discrepancyToJsonObj(matchedDiscrepancy);
- annotation.addCoveredDiscrepancyIndex(matchedDiscrepancy);
- discrepanciesArray.put(idOfMatched, discrepancyAsObject);
- //on next search start at the previously matched one since both discrepancies and annotations are in order
- }
}
- } catch (JSONException ex) {
- throw new OseeCoreException(ex);
}
}
+ // Do this every time, if nothing else will ensure Loc Refs are always ordered
annotation.setLocationRefs(getLocRefsAsString(listOfLocationRefs));
- annotation.setIsConnected(isAllLocRefValid);
+
+ if (isAllLocRefValid) {
+ annotation.setIsConnected(true);
+ annotation.setIdsOfCoveredDiscrepancies(new JSONArray(workingIdsOfCovered));
+ } else {
+ annotation.setIsConnected(false);
+ }
return isAllLocRefValid;
}
- public void disconnectAnnotation(DispoAnnotationData annotation, JSONArray discrepanciesList) throws JSONException {
- JSONArray discrepanciesConnected = annotation.getIdsOfCoveredDiscrepancies();
- int size = discrepanciesConnected.length();
- for (int i = 0; i < size; i++) {
- int indexOfDiscrepancy = discrepanciesConnected.getInt(i); // the discrepancy to remove the annotation from, index in discrepanciesList
- JSONObject discrepancyAsObject = discrepanciesList.getJSONObject(indexOfDiscrepancy);
- Discrepancy discrepancyAsData = DispoUtil.jsonObjToDiscrepancy(discrepancyAsObject);
- JSONArray indexesOfAnnotations = discrepancyAsData.getIdsOfCoveringAnnotations();
- removeElementFromArray(indexesOfAnnotations, annotation.getId());
+ private boolean tryToAddDiscrepancyForTestPoint(HashMap<Integer, String> testPointNumberToId, int testPoint, List<String> workingList) {
+ String idOfMatched = testPointNumberToId.get(testPoint);
+ if (idOfMatched == null) {
+ return false;
+ } else {
+ workingList.add(idOfMatched);
}
- // clear list of connected discrepancies for this annotation
- annotation.setIdsOfCoveredDiscrepancies(new JSONArray());
- annotation.setIsConnected(false);
+
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ private HashMap<Integer, String> getPointNumbersToIds(JSONObject discrepancies) throws JSONException {
+ HashMap<Integer, String> toReturn = new HashMap<Integer, String>();
+ Iterator<String> iterator = discrepancies.keys();
+ while (iterator.hasNext()) {
+ String key = iterator.next();
+ JSONObject discrepancyAsJson = discrepancies.getJSONObject(key);
+ Discrepancy discrepancy = DispoUtil.jsonObjToDiscrepancy(discrepancyAsJson);
+ int pointNumber = discrepancy.getLocation();
+ toReturn.put(pointNumber, discrepancy.getId());
+ }
+
+ return toReturn;
}
// Not currently used. May implement if users want to see what discrepancies are left to cover
@@ -183,42 +232,6 @@ public class DispoConnector {
return allUncovered;
}
- private List<LocationRange> getAllLocRefsAsSortedList(JSONObject annotations, Discrepancy discrepancy) {
- StringBuilder sb = new StringBuilder();
- JSONArray indexesOfCoveringAnnotations = discrepancy.getIdsOfCoveringAnnotations();
- int size = indexesOfCoveringAnnotations.length();
- for (int i = 0; i < size; i++) {
- try {
- if (sb.length() > 0) {
- sb.append(",");
- }
- String annotationId = indexesOfCoveringAnnotations.getString(i);
- JSONObject annotationAsJsonObj = annotations.getJSONObject(annotationId);
- DispoAnnotationData annotationAsData = DispoUtil.jsonObjToDispoAnnotationData(annotationAsJsonObj);
- sb.append(annotationAsData.getLocationRefs());
- } catch (JSONException ex) {
- throw new OseeCoreException(ex);
- }
- }
-
- return sortList(sb.toString());
-
- }
-
- private void removeElementFromArray(JSONArray listToRemoveFrom, String element) throws JSONException {
- int size = listToRemoveFrom.length();
- List<Integer> indexOfElementsToRemove = new ArrayList<Integer>();
- for (int i = 0; i < size; i++) {
- if (listToRemoveFrom.getString(i).equals(element)) {
- indexOfElementsToRemove.add(i);
- }
- }
-
- for (Integer index : indexOfElementsToRemove) {
- listToRemoveFrom.remove(index);
- }
- }
-
private static String getLocRefsAsString(List<LocationRange> list) {
StringBuilder sb = new StringBuilder();
for (LocationRange range : list) {
@@ -245,38 +258,4 @@ public class DispoConnector {
return toReturn;
}
- private List<Discrepancy> arrayToSortedList(JSONArray array) {
- List<Discrepancy> discrepanciesAsList = new ArrayList<Discrepancy>();
- int size = array.length();
- for (int i = 0; i < size; i++) {
- try {
- discrepanciesAsList.add(DispoUtil.jsonObjToDiscrepancy(array.getJSONObject(i)));
- } catch (JSONException ex) {
- throw new OseeCoreException(ex);
- }
- }
- Collections.sort(discrepanciesAsList, new DiscrepancyComperator());
- return discrepanciesAsList;
- }
-
- private Discrepancy matchToDiscrepancy(DispoAnnotationData annotation, LocationRange singleLocationRangeRef, List<Discrepancy> discrepanciesList, int startIndex) {
- Discrepancy matchedDiscrepancy = null;
- int sizeOfList = discrepanciesList.size();
- int firstUnCovered = singleLocationRangeRef.getStart();
-
- for (int i = startIndex; i < sizeOfList; i++) {
- // want to guarantee that the discrepancy we're starting at has starting index <= to the first uncovered part of the location ref
- Discrepancy discrepancy = discrepanciesList.get(i);
- if (discrepancy.getLocationRange().getStart() > firstUnCovered) {
- break;
- } else {
- if (LocationRangeUtil.isLocRefWithinRange(discrepancy.getLocationRange(), singleLocationRangeRef)) {
- matchedDiscrepancy = discrepancy;
- break;
- }
- }
- }
-
- return matchedDiscrepancy;
- }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoDataFactory.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoDataFactory.java
index 77391f77bc5..be8e28ba568 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoDataFactory.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoDataFactory.java
@@ -11,12 +11,12 @@
package org.eclipse.osee.disposition.rest.internal;
-import java.util.Date;
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.model.DispoSetData;
import org.eclipse.osee.disposition.model.DispoSetDescriptorData;
+import org.eclipse.osee.disposition.model.DispoStrings;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.GUID;
import org.eclipse.osee.logger.Log;
@@ -54,34 +54,35 @@ public class DispoDataFactory {
newSet.setName(descriptor.getName());
newSet.setImportPath(descriptor.getImportPath());
newSet.setImportState("NONE");
- newSet.setStatusCount("0/0");
newSet.setNotesList(new JSONArray());
return newSet;
}
public void initDispoItem(DispoItemData itemToInit) {
- itemToInit.setAnnotationsList(new JSONObject());
- itemToInit.setDiscrepanciesList(new JSONArray());
- itemToInit.setStatus("PASS");
+ itemToInit.setAnnotationsList(new JSONArray());
+ if (itemToInit.getDiscrepanciesList() == null) {
+ itemToInit.setDiscrepanciesList(new JSONObject());
+ }
- Date date = new Date();
- itemToInit.setCreationDate(date);
- itemToInit.setLastUpdate(date);
+ if (itemToInit.getDiscrepanciesList().length() == 0) {
+ itemToInit.setStatus(DispoStrings.Item_Pass);
+ } else {
+ itemToInit.setStatus(DispoStrings.Item_InComplete);
+ }
}
public void initAnnotation(DispoAnnotationData annotationToInit) {
annotationToInit.setIdsOfCoveredDiscrepancies(new JSONArray());
- annotationToInit.setNotesList(new JSONArray());
+ annotationToInit.setNotes("--Enter Notes--");
+ annotationToInit.setResolution("");
}
- public DispoItem createUpdatedItem(JSONObject annotationsList, JSONArray discrepanciesList, boolean updateStatus) {
+ public DispoItem createUpdatedItem(JSONArray annotationsList, JSONObject discrepanciesList) throws JSONException {
DispoItemData newItem = new DispoItemData();
newItem.setAnnotationsList(annotationsList);
newItem.setDiscrepanciesList(discrepanciesList);
- if (updateStatus) {
- newItem.setStatus(dispoConnector.allDiscrepanciesAnnotated(newItem));
- }
+ newItem.setStatus(dispoConnector.allDiscrepanciesAnnotated(newItem));
return newItem;
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoItemArtifact.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoItemArtifact.java
index 5aa5f4086ea..c83c1c64124 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoItemArtifact.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoItemArtifact.java
@@ -38,15 +38,15 @@ public class DispoItemArtifact extends BaseIdentity<String> implements DispoItem
}
@Override
- public JSONArray getDiscrepanciesList() {
- String discrepanciesJson = artifact.getSoleAttributeAsString(DispoConstants.DispoDiscrepanciesJson, "[]");
- return DispoUtil.asJSONArray(discrepanciesJson);
+ public JSONObject getDiscrepanciesList() {
+ String discrepanciesJson = artifact.getSoleAttributeAsString(DispoConstants.DispoDiscrepanciesJson, "{}");
+ return DispoUtil.asJSONObject(discrepanciesJson);
}
@Override
- public JSONObject getAnnotationsList() {
+ public JSONArray getAnnotationsList() {
String annotationsList = artifact.getSoleAttributeAsString(DispoConstants.DispoAnnotationsJson, "[]");
- return DispoUtil.asJSONOjbect(annotationsList);
+ return DispoUtil.asJSONArray(annotationsList);
}
@Override
@@ -56,12 +56,7 @@ public class DispoItemArtifact extends BaseIdentity<String> implements DispoItem
@Override
public String getAssignee() {
- ArtifactReadable assignee = artifact.getRelated(DispoConstants.DispoAssigned_Item).getAtMostOneOrNull();
- if (assignee == null) {
- return "unassigned";
- } else {
- return assignee.getName();
- }
+ return artifact.getSoleAttributeAsString(DispoConstants.DispoItemAssignee, "");
}
@Override
@@ -81,6 +76,11 @@ public class DispoItemArtifact extends BaseIdentity<String> implements DispoItem
}
@Override
+ public String getVersion() {
+ return artifact.getSoleAttributeAsString(DispoConstants.DispoItemVersion);
+ }
+
+ @Override
public int compareTo(Named other) {
if (other != null && other.getName() != null && getName() != null) {
return getName().compareTo(other.getName());
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoQuery.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoQuery.java
index 0a10518c848..a43eea4c885 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoQuery.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoQuery.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.internal;
+import java.util.List;
import org.eclipse.osee.disposition.model.DispoItem;
import org.eclipse.osee.disposition.model.DispoProgram;
import org.eclipse.osee.disposition.model.DispoSet;
@@ -32,15 +33,14 @@ public interface DispoQuery {
boolean isUniqueItemName(DispoProgram program, String setId, String name);
- ResultSet<DispoSet> findDispoSets(DispoProgram program);
+ List<DispoSet> findDispoSets(DispoProgram program);
DispoSet findDispoSetsById(DispoProgram program, String id);
- ResultSet<DispoItem> findDipoItems(DispoProgram program, String setId);
+ List<DispoItem> findDipoItems(DispoProgram program, String setId);
DispoItem findDispoItemById(DispoProgram program, String itemId);
- ResultSet<? extends IOseeBranch> findBaselineBranches();
+ ResultSet<IOseeBranch> getDispoBranches();
- IOseeBranch findProgramId(DispoProgram program);
} \ No newline at end of file
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
new file mode 100644
index 00000000000..0b458cb93a4
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoResolutionValidator.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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 org.eclipse.osee.disposition.model.DispoAnnotationData;
+import org.eclipse.osee.logger.Log;
+
+/**
+ * @author Angel Avila
+ */
+public class DispoResolutionValidator {
+
+ private Log logger;
+
+ public void setLogger(Log logger) {
+ this.logger = logger;
+ }
+
+ public void start() {
+ logger.trace("Starting ResolutionValidator...");
+ }
+
+ public void stop() {
+ logger.trace("Stopping ResolutionValidator...");
+ }
+
+ public boolean validate(DispoAnnotationData annotation) {
+ String pcr = annotation.getResolution();
+ return pcr.matches("^\\s*[CTR]\\d{4,5}\\s*$");
+ }
+}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoSetArtifact.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoSetArtifact.java
index 205b139b967..caa8b896931 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoSetArtifact.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoSetArtifact.java
@@ -18,6 +18,7 @@ import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.orcs.data.ArtifactReadable;
import org.json.JSONArray;
import org.json.JSONException;
+
/**
* @author Angel Avila
*/
@@ -41,11 +42,6 @@ public class DispoSetArtifact extends BaseIdentity<String> implements DispoSet,
}
@Override
- public String getStatusCount() {
- return artifact.getSoleAttributeAsString(DispoConstants.StatusCount, "0/0");
- }
-
- @Override
public JSONArray getNotesList() {
String notesJson = artifact.getSoleAttributeAsString(DispoConstants.DispoNotesJson, "[]");
try {
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoWriter.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoWriter.java
index 306c242bd06..d38bda3be9e 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoWriter.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/DispoWriter.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013 Boeing.
+ * Copyright (c) 2014 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
@@ -10,11 +10,11 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.internal;
+import java.util.List;
import org.eclipse.osee.disposition.model.DispoItem;
import org.eclipse.osee.disposition.model.DispoProgram;
import org.eclipse.osee.disposition.model.DispoSet;
import org.eclipse.osee.framework.jdk.core.type.Identifiable;
-import org.eclipse.osee.orcs.data.ArtifactId;
import org.eclipse.osee.orcs.data.ArtifactReadable;
/**
@@ -30,9 +30,11 @@ public interface DispoWriter {
Identifiable<String> createDispoItem(ArtifactReadable author, DispoProgram program, DispoSet parentSet, DispoItem itemToCreate, ArtifactReadable assigneeId);
- void updateDispoItem(ArtifactReadable author, DispoProgram program, String itemToEditId, DispoItem itemToCreate);
+ void createDispoItems(ArtifactReadable author, DispoProgram program, DispoSet parentSet, List<DispoItem> data, String assignee);
+
+ void updateDispoItems(ArtifactReadable author, DispoProgram program, String itemToEditId, List<DispoItem> itemsToUpdate);
boolean deleteDispoItem(ArtifactReadable author, DispoProgram program, String itemId);
- void createAnnotation(ArtifactReadable author, DispoProgram program, ArtifactId dispoItem, String annotationsJson);
+ void updateDispoItem(ArtifactReadable author, DispoProgram program, String dispoItemId, DispoItem data);
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressor.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressor.java
new file mode 100644
index 00000000000..d271fc9edc8
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/LocationRangesCompressor.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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 java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.osee.disposition.model.LocationRange;
+
+/**
+ * @author Angel Avila
+ */
+public class LocationRangesCompressor {
+
+ public static String compress(List<Integer> locationPoints) {
+ Collections.sort(locationPoints);
+ StringBuilder workingLocRefs = new StringBuilder();
+
+ boolean isRange = false;
+ boolean endOfRange = false;
+ int startOfRange = -1;
+ int previous = -1;
+
+ Iterator<Integer> iterator = locationPoints.iterator();
+
+ while (iterator.hasNext()) {
+ int currentTestPoint = iterator.next();
+ boolean isLastElement = !iterator.hasNext();
+
+ // Starting a Range
+ if (previous == (currentTestPoint - 1) && startOfRange == -1) { // if the previous is 1 less than our current we are in a range
+ isRange = true;
+ endOfRange = false;
+ startOfRange = previous;
+ int lastIndexOf = workingLocRefs.lastIndexOf(",");
+ if (lastIndexOf > 0) {
+ workingLocRefs.replace(lastIndexOf, workingLocRefs.length(), "");
+ } else {
+ workingLocRefs.setLength(0);
+ }
+ }
+ if (isRange && (previous != (currentTestPoint - 1) || isLastElement)) { // End Range
+ endOfRange = true;
+ }
+
+ StringBuilder toAppend = new StringBuilder();
+
+ if (!isRange) { // If we are not in a range just add the single point
+ toAppend.append(currentTestPoint);
+ } else if (endOfRange) { // other wise check to see if we ended the range
+ if (isLastElement) {
+ toAppend.append(new LocationRange(startOfRange, currentTestPoint).toString()); // append the range ending with the previous point and append this current point
+ } else {
+ toAppend.append(new LocationRange(startOfRange, previous).toString()); // append the range ending with the previous point and append this current point
+ toAppend.append(", ");
+ toAppend.append(currentTestPoint);
+ }
+
+ isRange = false;
+ startOfRange = -1;
+ }
+
+ if (toAppend.length() != 0) {
+ if (workingLocRefs.length() > 0) {
+ workingLocRefs.append(", ");
+ }
+ workingLocRefs.append(toAppend);
+ }
+
+ previous = currentTestPoint;
+ }
+ return workingLocRefs.toString();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/OrcsStorageImpl.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/OrcsStorageImpl.java
index f86e53b730b..5b5079cb62e 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/OrcsStorageImpl.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/OrcsStorageImpl.java
@@ -28,6 +28,7 @@ import org.eclipse.osee.framework.core.data.IArtifactType;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.data.TokenFactory;
import org.eclipse.osee.framework.core.enums.BranchType;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
import org.eclipse.osee.framework.core.enums.CoreBranches;
import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
@@ -54,7 +55,6 @@ import org.json.JSONObject;
* @author Angel Avila
*/
public class OrcsStorageImpl implements Storage {
-
private final Log logger;
private final OrcsApi orcsApi;
@@ -134,12 +134,9 @@ public class OrcsStorageImpl implements Storage {
return getQuery().fromBranch(getAdminBranch()).andGuid(userId).getResults().getExactlyOne();
}
- @SuppressWarnings("unchecked")
@Override
public ArtifactReadable findUnassignedUser() {
- // return getQuery().fromBranch(getAdminBranch()).andNameEquals("Unassigned").getResults().getExactlyOne(); COMMENTED OUT TEMP
- return getQuery().fromBranch(getAdminBranch()).andIds(SystemUser.OseeSystem).getResults().getExactlyOne();
-
+ return getQuery().fromBranch(getAdminBranch()).andNameEquals("UnAssigned").andTypeEquals(CoreArtifactTypes.User).getResults().getExactlyOne();
}
@Override
@@ -161,7 +158,7 @@ public class OrcsStorageImpl implements Storage {
@Override
public boolean isUniqueItemName(DispoProgram program, String setId, String name) {
IOseeBranch branch = getProgramBranch(program);
- ArtifactReadable setArt = findDispoArtifact(branch, setId, DispoConstants.DispoSet);
+ ArtifactReadable setArt = findDispoArtifact(program, setId, DispoConstants.DispoSet);
ResultSet<ArtifactReadable> results = getQuery()//
.fromBranch(branch)//
.andRelatedTo(CoreRelationTypes.Default_Hierarchical__Parent, setArt)//
@@ -173,10 +170,9 @@ public class OrcsStorageImpl implements Storage {
}
@Override
- public ResultSet<DispoSet> findDispoSets(DispoProgram program) {
- IOseeBranch branch = getProgramBranch(program);
+ public List<DispoSet> findDispoSets(DispoProgram program) {
ResultSet<ArtifactReadable> results = getQuery()//
- .fromBranch(branch)//
+ .fromBranch(TokenFactory.createBranch(program.getUuid(), program.getName()))//
.andTypeEquals(DispoConstants.DispoSet)//
.getResults();
@@ -184,45 +180,32 @@ public class OrcsStorageImpl implements Storage {
for (ArtifactReadable art : results) {
toReturn.add(new DispoSetArtifact(art));
}
- return ResultSets.newResultSet(toReturn);
+ return toReturn;
}
@Override
public DispoSet findDispoSetsById(DispoProgram program, String setId) {
- IOseeBranch branch = getProgramBranch(program);
- ArtifactReadable result = findDispoArtifact(branch, setId, DispoConstants.DispoSet);
+ ArtifactReadable result = findDispoArtifact(program, setId, DispoConstants.DispoSet);
return new DispoSetArtifact(result);
}
- private ArtifactReadable findDispoArtifact(IOseeBranch branch, String setId, IArtifactType type) {
+ private ArtifactReadable findDispoArtifact(DispoProgram program, String setId, IArtifactType type) {
return getQuery()//
- .fromBranch(branch)//
+ .fromBranch(TokenFactory.createBranch(program.getUuid(), program.getName()))//
.andTypeEquals(type)//
.andGuid(setId)//
.getResults().getOneOrNull();
}
@Override
- public ResultSet<DispoItem> findDipoItems(DispoProgram program, String setId) {
- IOseeBranch branch = getProgramBranch(program);
- ArtifactReadable setArt = findDispoArtifact(branch, setId, DispoConstants.DispoSet);
- ResultSet<ArtifactReadable> results = setArt.getRelated(CoreRelationTypes.Default_Hierarchical__Child);
+ public List<DispoItem> findDipoItems(DispoProgram program, String setId) {
+ ArtifactReadable setArt = findDispoArtifact(program, setId, DispoConstants.DispoSet);
+ ResultSet<ArtifactReadable> results = setArt.getChildren();
List<DispoItem> toReturn = new ArrayList<DispoItem>();
for (ArtifactReadable art : results) {
toReturn.add(new DispoItemArtifact(art));
}
- return ResultSets.newResultSet(toReturn);
- }
-
- @Override
- public DispoItem findDispoItemById(DispoProgram program, String itemId) {
- DispoItem toReturn = null;
- IOseeBranch branch = getProgramBranch(program);
- ArtifactReadable dispoArtifact = findDispoArtifact(branch, itemId, DispoConstants.DispoItem);
- if (dispoArtifact != null) {
- toReturn = new DispoItemArtifact(dispoArtifact);
- }
return toReturn;
}
@@ -233,7 +216,6 @@ public class OrcsStorageImpl implements Storage {
ArtifactId creatdArtId = tx.createArtifact(DispoConstants.DispoSet, descriptor.getName());
tx.setSoleAttributeFromString(creatdArtId, DispoConstants.ImportPath, descriptor.getImportPath());
tx.setSoleAttributeFromString(creatdArtId, DispoConstants.ImportState, descriptor.getImportState());
- tx.setSoleAttributeFromString(creatdArtId, DispoConstants.StatusCount, descriptor.getStatusCount());
tx.setSoleAttributeFromString(creatdArtId, DispoConstants.DispoNotesJson, descriptor.getNotesList().toString());
tx.commit();
return creatdArtId;
@@ -252,7 +234,7 @@ public class OrcsStorageImpl implements Storage {
private boolean deleteDispoEntityArtifact(ArtifactReadable author, DispoProgram program, String entityId, IArtifactType type) {
boolean toReturn = false;
IOseeBranch branch = getProgramBranch(program);
- ArtifactReadable dispoArtifact = findDispoArtifact(branch, entityId, type);
+ ArtifactReadable dispoArtifact = findDispoArtifact(program, entityId, type);
if (dispoArtifact != null) {
TransactionBuilder tx = getTxFactory().createTransaction(branch, author, "Delete Dispo Artifact");
tx.deleteArtifact(dispoArtifact);
@@ -266,7 +248,7 @@ public class OrcsStorageImpl implements Storage {
@Override
public void updateDispoSet(ArtifactReadable author, DispoProgram program, String setId, DispoSet newData) {
IOseeBranch branch = getProgramBranch(program);
- ArtifactReadable dispoSet = findDispoArtifact(branch, setId, DispoConstants.DispoSet);
+ ArtifactReadable dispoSet = findDispoArtifact(program, setId, DispoConstants.DispoSet);
String name = newData.getName();
String importPath = newData.getImportPath();
@@ -293,7 +275,7 @@ public class OrcsStorageImpl implements Storage {
@Override
public Identifiable<String> createDispoItem(ArtifactReadable author, DispoProgram program, DispoSet parentSet, DispoItem data, ArtifactReadable assignee) {
IOseeBranch branch = getProgramBranch(program);
- ArtifactReadable parentSetArt = findDispoArtifact(branch, parentSet.getGuid(), DispoConstants.DispoSet);
+ ArtifactReadable parentSetArt = findDispoArtifact(program, parentSet.getGuid(), DispoConstants.DispoSet);
TransactionBuilder tx = getTxFactory().createTransaction(branch, author, "Create Dispoable Item");
ArtifactId createdItem = tx.createArtifact(DispoConstants.DispoItem, data.getName());
@@ -313,74 +295,125 @@ public class OrcsStorageImpl implements Storage {
}
@Override
- public void createAnnotation(ArtifactReadable author, DispoProgram program, ArtifactId disposition, String annotationsJson) {
- IOseeBranch branch = getProgramBranch(program);
- TransactionBuilder tx = getTxFactory().createTransaction(branch, author, "Create Dispo Annotation");
+ public void createDispoItems(ArtifactReadable author, DispoProgram program, DispoSet parentSet, List<DispoItem> data, String assignee) {
+ IOseeBranch branch = TokenFactory.createBranch(program.getUuid(), "");
+ ArtifactReadable parentSetArt = findDispoArtifact(program, parentSet.getGuid(), DispoConstants.DispoSet);
+ TransactionBuilder tx = getTxFactory().createTransaction(branch, author, "Create Dispoable Item");
+
+ for (DispoItem item : data) {
+ ArtifactId createdItem = tx.createArtifact(DispoConstants.DispoItem, item.getName());
+
+ tx.setSoleAttributeValue(createdItem, DispoConstants.DispoDateCreated, item.getCreationDate());
+ tx.setSoleAttributeValue(createdItem, DispoConstants.DispoLastUpdated, item.getLastUpdate());
- tx.setSoleAttributeFromString(disposition, DispoConstants.DispoAnnotationsJson, annotationsJson);
+ tx.setSoleAttributeValue(createdItem, DispoConstants.DispoItemStatus, item.getStatus());
+ tx.setSoleAttributeFromString(createdItem, DispoConstants.DispoDiscrepanciesJson,
+ item.getDiscrepanciesList().toString());
+ tx.setSoleAttributeFromString(createdItem, DispoConstants.DispoAnnotationsJson,
+ item.getAnnotationsList().toString());
+ tx.setSoleAttributeFromString(createdItem, DispoConstants.DispoItemVersion, item.getVersion());
+ tx.setSoleAttributeFromString(createdItem, DispoConstants.DispoItemAssignee, assignee);
+
+ tx.relate(parentSetArt, CoreRelationTypes.Default_Hierarchical__Child, createdItem);
+ }
tx.commit();
}
@Override
public void updateDispoItem(ArtifactReadable author, DispoProgram program, String dispoItemId, DispoItem data) {
- boolean wasEdited = false;
IOseeBranch branch = getProgramBranch(program);
- ArtifactId dispoItemArt = findDispoArtifact(branch, dispoItemId, DispoConstants.DispoItem);
- String assigneeId = data.getAssignee();
-
- TransactionBuilder tx = getTxFactory().createTransaction(branch, author, "Edit Dispoable Item");
+ ArtifactId dispoItemArt = findDispoArtifact(program, dispoItemId, DispoConstants.DispoItem);
+ Date lastUpdate = data.getLastUpdate();
String name = data.getName();
- JSONArray discrepanciesList = data.getDiscrepanciesList();
- JSONObject annotationsList = data.getAnnotationsList();
+ JSONObject discrepanciesList = data.getDiscrepanciesList();
+ JSONArray annotationsList = data.getAnnotationsList();
String status = data.getStatus();
+ String assignee = data.getAssignee();
+
+ TransactionBuilder tx = getTxFactory().createTransaction(branch, author, "Edit Dispoable Item");
+
if (name != null) {
tx.setName(dispoItemArt, name);
- wasEdited = true;
}
if (discrepanciesList != null) {
tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoDiscrepanciesJson,
discrepanciesList.toString());
- wasEdited = true;
}
if (annotationsList != null) {
tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoAnnotationsJson, annotationsList.toString());
- wasEdited = true;
}
- if (assigneeId != null) {
- ArtifactReadable userAsArt = findUser(assigneeId);
- tx.relate(dispoItemArt, DispoConstants.DispoAssigned_Assignee, userAsArt);
- wasEdited = true;
+ if (assignee != null) {
+ tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoItemAssignee, assignee);
}
if (status != null) {
tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoItemStatus, status);
- wasEdited = true;
}
- if (wasEdited) {
- tx.setSoleAttributeValue(dispoItemArt, DispoConstants.DispoLastUpdated, new Date());
+ if (lastUpdate != null) {
+ tx.setSoleAttributeValue(dispoItemArt, DispoConstants.DispoLastUpdated, lastUpdate);
}
tx.commit();
}
@Override
- public IOseeBranch findProgramId(DispoProgram program) {
- IOseeBranch toReturn = null;
+ public void updateDispoItems(ArtifactReadable author, DispoProgram program, String dispoItemId, List<DispoItem> data) {
+ IOseeBranch branch = TokenFactory.createBranch(program.getUuid(), "");
+ TransactionBuilder tx = getTxFactory().createTransaction(branch, author, "Edit Dispoable Item");
+
+ for (DispoItem item : data) {
+ ArtifactId dispoItemArt = findDispoArtifact(program, dispoItemId, DispoConstants.DispoItem);
+ String assignee = item.getAssignee();
+ Date lastUpdate = item.getLastUpdate();
+ String name = item.getName();
+ JSONObject discrepanciesList = item.getDiscrepanciesList();
+ JSONArray annotationsList = item.getAnnotationsList();
+ String status = item.getStatus();
+
+ if (name != null) {
+ tx.setName(dispoItemArt, name);
+ }
+ if (discrepanciesList != null) {
+ tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoDiscrepanciesJson,
+ discrepanciesList.toString());
+ }
+ if (annotationsList != null) {
+ tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoAnnotationsJson, annotationsList.toString());
+ }
+ if (assignee != null) {
+ tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoItemAssignee, assignee);
+ }
+ if (status != null) {
+ tx.setSoleAttributeFromString(dispoItemArt, DispoConstants.DispoItemStatus, status);
+ }
+ if (lastUpdate != null) {
+ tx.setSoleAttributeValue(dispoItemArt, DispoConstants.DispoLastUpdated, lastUpdate);
+ }
+ }
+
+ tx.commit();
+ }
+
+ private String getDispoConfigContents() {
BranchReadable branchRead = getQuery().branchQuery().andIds(CoreBranches.COMMON).getResults().getExactlyOne();
ArtifactReadable configArt =
getQuery().fromBranch(branchRead).andNameEquals(Dispo_Config_Art).getResults().getExactlyOne();
- String configContents = configArt.getSoleAttributeAsString(CoreAttributeTypes.GeneralStringData);
+ return configArt.getSoleAttributeAsString(CoreAttributeTypes.GeneralStringData);
+ }
- Pattern regex = Pattern.compile(program.getUuid() + "\\s*:\\s*.*");
+ private IOseeBranch convertToDispoBranch(String configContents, IOseeBranch baselineBranch) {
+ IOseeBranch toReturn = null;
+
+ Pattern regex = Pattern.compile(baselineBranch.getUuid() + "\\s*:\\s*.*");
Matcher matcher = regex.matcher(configContents);
String guid = null;
if (matcher.find()) {
String match = matcher.group();
String[] split = match.split(":");
- guid = split[1];
+ toReturn = TokenFactory.createBranch(split[1], baselineBranch.getName());
}
- regex = Pattern.compile(program.getUuid() + "\\s*:\\s*.*");
+ regex = Pattern.compile(baselineBranch.getGuid() + "\\s*:\\s*.*");
matcher = regex.matcher(configContents);
Long uuid = null;
if (matcher.find()) {
@@ -393,7 +426,29 @@ public class OrcsStorageImpl implements Storage {
}
@Override
- public ResultSet<? extends IOseeBranch> findBaselineBranches() {
- return getQuery().branchQuery().andIsOfType(BranchType.BASELINE).getResults();
+ public ResultSet<IOseeBranch> getDispoBranches() {
+ ResultSet<BranchReadable> baselineBranches =
+ getQuery().branchQuery().andIsOfType(BranchType.BASELINE).getResults();
+
+ String configContents = getDispoConfigContents();
+
+ List<IOseeBranch> results = new ArrayList<IOseeBranch>();
+ for (BranchReadable baselineBranch : baselineBranches) {
+ IOseeBranch dispoBranch = convertToDispoBranch(configContents, baselineBranch);
+ if (dispoBranch != null) {
+ results.add(dispoBranch);
+ }
+ }
+ return ResultSets.newResultSet(results);
+ }
+
+ @Override
+ public DispoItem findDispoItemById(DispoProgram program, String itemId) {
+ DispoItem toReturn = null;
+ ArtifactReadable dispoArtifact = findDispoArtifact(program, itemId, DispoConstants.DispoItem);
+ if (dispoArtifact != null) {
+ toReturn = new DispoItemArtifact(dispoArtifact);
+ }
+ return toReturn;
}
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/types/OseeTypes_Dispo.osee b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/types/OseeTypes_Dispo.osee
index 3ed6a3e03b7..8cc15f95df6 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/types/OseeTypes_Dispo.osee
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/internal/types/OseeTypes_Dispo.osee
@@ -7,8 +7,8 @@ artifactType "Disposition Set" extends "Artifact" {
attribute "dispo.Import Path"
attribute "dispo.Notes JSON"
attribute "dispo.Date Created"
- attribute "dispo.Status Count"
attribute "dispo.Import State"
+ attribute "dispo.Summary Count"
}
artifactType "dispo.Dispositionable Item" extends "Artifact" {
@@ -18,7 +18,9 @@ artifactType "dispo.Dispositionable Item" extends "Artifact" {
attribute "dispo.Discrepancies JSON"
attribute "dispo.Date Created"
attribute "dispo.Item Status"
+ attribute "dispo.Item Version"
attribute "dispo.Last Updated"
+ attribute "dispo.Assignee"
}
attributeType "dispo.Annotations JSON" extends StringAttribute {
@@ -27,7 +29,7 @@ attributeType "dispo.Annotations JSON" extends StringAttribute {
min 1
max 1
taggerId DefaultAttributeTaggerProvider
- defaultValue "[]"
+ defaultValue "{}"
fileExtension "txt"
mediaType "text/plain"
}
@@ -64,12 +66,12 @@ attributeType "dispo.Import Path" extends StringAttribute {
mediaType "text/plain"
}
-attributeType "dispo.Status Count" extends StringAttribute {
- uuid 0x1000000000000390
+attributeType "dispo.Summary Count" extends StringAttribute {
+ uuid 0x1000000000000203
dataProvider DefaultAttributeDataProvider
min 0
max 1
- fileExtension "txt"
+ defaultValue "0/0"
mediaType "text/plain"
}
@@ -102,8 +104,29 @@ attributeType "dispo.Item Status" extends EnumeratedAttribute {
dataProvider DefaultAttributeDataProvider
min 0
max 1
+ taggerId DefaultAttributeTaggerProvider
enumType "enum.dispo.item status"
- defaultValue "No Import"
+ defaultValue "Unspecified"
+ mediaType "text/plain"
+}
+
+attributeType "dispo.Item Version" extends StringAttribute {
+ uuid 0x3000000000000200
+ dataProvider DefaultAttributeDataProvider
+ min 0
+ max 1
+ taggerId DefaultAttributeTaggerProvider
+ defaultValue "0.0"
+ mediaType "text/plain"
+}
+
+attributeType "dispo.Assignee" extends StringAttribute {
+ uuid 0x3000000000000201
+ dataProvider DefaultAttributeDataProvider
+ min 0
+ max 1
+ taggerId DefaultAttributeTaggerProvider
+ defaultValue "UnAssinged"
mediaType "text/plain"
}
@@ -135,13 +158,3 @@ attributeType "dispo.Last Updated" extends DateAttribute {
max 1
mediaType "text/calendar"
}
-
-relationType "dispo.Assigned" {
- uuid 0x2000000000000181
- sideAName "dispoableItem"
- sideAArtifactType "dispo.Dispositionable Item"
- sideBName "user"
- sideBArtifactType "User"
- defaultOrderType Unordered
- multiplicity MANY_TO_ONE
-}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoAnnotationMessageWriter.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoAnnotationMessageWriter.java
index f398b6c2df6..4673827925c 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoAnnotationMessageWriter.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoAnnotationMessageWriter.java
@@ -20,7 +20,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
import org.eclipse.osee.disposition.model.DispoAnnotationData;
-import org.json.JSONException;
+import org.eclipse.osee.disposition.rest.util.DispoUtil;
import org.json.JSONObject;
/**
@@ -40,12 +40,7 @@ public class DispoAnnotationMessageWriter implements MessageBodyWriter<DispoAnno
@Override
public void writeTo(DispoAnnotationData dispoAnnotation, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
- JSONObject jsonObject = new JSONObject(dispoAnnotation);
- try {
- jsonObject.put("notesList", dispoAnnotation.getNotesList());
- } catch (JSONException ex) {
- throw new IOException("Could not get Notes Lists from Annotation", ex);
- }
+ JSONObject jsonObject = DispoUtil.annotationToJsonObj(dispoAnnotation);
String jsonString = jsonObject.toString();
entityStream.write(jsonString.getBytes(Charset.forName("UTF-8")));
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoSetMessageWriter.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoSetMessageWriter.java
index e860b91fbd3..590517a753d 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoSetMessageWriter.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/messages/DispoSetMessageWriter.java
@@ -20,7 +20,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
import org.eclipse.osee.disposition.model.DispoSetData;
-import org.json.JSONException;
+import org.eclipse.osee.disposition.rest.util.DispoUtil;
import org.json.JSONObject;
/**
@@ -40,12 +40,7 @@ public class DispoSetMessageWriter implements MessageBodyWriter<DispoSetData> {
@Override
public void writeTo(DispoSetData dispoSet, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
- JSONObject jsonObject = new JSONObject(dispoSet, true);
- try {
- jsonObject.put("notesList", dispoSet.getNotesList());
- } catch (JSONException ex) {
- throw new IOException("Could not get Notes Lists from Disposition Set", ex);
- }
+ JSONObject jsonObject = DispoUtil.dispoSetToJsonObj(dispoSet);
String jsonString = jsonObject.toString();
entityStream.write(jsonString.getBytes(Charset.forName("UTF-8")));
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/AnnotationResource.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/AnnotationResource.java
index 423bd91beda..d29b0f01325 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/AnnotationResource.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/AnnotationResource.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.resources;
+import java.io.IOException;
+import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -22,22 +24,22 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.eclipse.osee.disposition.model.DispoAnnotationData;
+import org.eclipse.osee.disposition.model.DispoItem;
import org.eclipse.osee.disposition.model.DispoMessages;
import org.eclipse.osee.disposition.model.DispoProgram;
import org.eclipse.osee.disposition.rest.DispoApi;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
-import org.eclipse.osee.framework.jdk.core.type.ResultSet;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
/**
* @author Angel Avila
*/
public class AnnotationResource {
private final DispoApi dispoApi;
- private final HtmlWriter writer;
+ private final DispoHtmlWriter writer;
private final DispoProgram program;
private final String itemId;
- public AnnotationResource(DispoApi dispoApi, HtmlWriter writer, DispoProgram program, String setUuid, String dispResourceId) {
+ public AnnotationResource(DispoApi dispoApi, DispoHtmlWriter writer, DispoProgram program, String setUuid, String dispResourceId) {
this.dispoApi = dispoApi;
this.program = program;
this.itemId = dispResourceId;
@@ -60,14 +62,12 @@ public class AnnotationResource {
if (!annotation.getLocationRefs().isEmpty()) {
String createdAnnotationId = dispoApi.createDispoAnnotation(program, itemId, annotation);
status = Status.CREATED;
- DispoAnnotationData createdAnnotation =
- dispoApi.getDispoAnnotationByIndex(program, itemId, createdAnnotationId);
+ DispoAnnotationData createdAnnotation = dispoApi.getDispoAnnotationById(program, itemId, createdAnnotationId);
response = Response.status(status).entity(createdAnnotation).build();
} else {
status = Status.BAD_REQUEST;
response = Response.status(status).entity(DispoMessages.Annotation_EmptyLocRef).build();
}
-
return response;
}
@@ -75,23 +75,19 @@ public class AnnotationResource {
* Get all Annotations for the DisposionableItem
*
* @return The Annotation found for the DisposionableItem
+ * @throws IOException
* @response.representation.200.doc OK, Found Annotations
* @response.representation.404.doc Not Found, Could not find any Annotations
*/
@GET
@Produces(MediaType.TEXT_HTML)
- public Response getAllDispoAnnotations() {
+ public Response getAllDispoAnnotations() throws IOException {
Response.Status status;
String html;
- ResultSet<DispoAnnotationData> dispositionAnnotations = dispoApi.getDispoAnnotations(program, itemId);
+ List<DispoAnnotationData> dispositionAnnotations = dispoApi.getDispoAnnotations(program, itemId);
- if (dispositionAnnotations.isEmpty()) {
- status = Status.NOT_FOUND;
- html = DispoMessages.Annotation_NoneFound;
- } else {
- status = Status.OK;
- html = writer.createDispositionPage("Annotations", "annotation/", dispositionAnnotations);
- }
+ status = Status.OK;
+ html = writer.createSubTable(dispositionAnnotations);
return Response.status(status).entity(html).build();
}
@@ -108,7 +104,7 @@ public class AnnotationResource {
@Produces(MediaType.APPLICATION_JSON)
public Response getAnnotationByIdJson(@PathParam("annotationId") String annotationId) {
Response response;
- DispoAnnotationData result = dispoApi.getDispoAnnotationByIndex(program, itemId, annotationId);
+ DispoAnnotationData result = dispoApi.getDispoAnnotationById(program, itemId, annotationId);
if (result == null) {
response = Response.status(Response.Status.NOT_FOUND).entity(DispoMessages.Annotation_NotFound).build();
} else {
@@ -118,32 +114,6 @@ public class AnnotationResource {
}
/**
- * Get a specific Annotation given an Id
- *
- * @param id The Id of the Annotation to search for
- * @return The found Annotation if successful. Error Code otherwise
- * @response.representation.200.doc OK, found Annotation
- * @response.representation.404.doc Not Found, Could not find the Annotation
- */
- @Path("{annotationId}")
- @GET
- @Produces(MediaType.TEXT_HTML)
- public Response getAnnotationByIdHtml(@PathParam("annotationId") String annotationId) {
- Response.Status status;
- String html;
- DispoAnnotationData dispositionAnnotation = dispoApi.getDispoAnnotationByIndex(program, itemId, annotationId);
- if (dispositionAnnotation == null) {
- status = Status.NOT_FOUND;
- html = DispoMessages.Annotation_NotFound;
- } else {
- String notes = dispositionAnnotation.getNotesList().toString();
- status = Status.OK;
- html = writer.createDispoPage(dispositionAnnotation.getLocationRefs(), "", "", notes);
- }
- return Response.status(status).entity(html).build();
- }
-
- /**
* Edit a specific Annotation given an Id and new Annotation Data
*
* @param id The Id of the Annotation to update
@@ -159,7 +129,9 @@ public class AnnotationResource {
Response response;
boolean wasEdited = dispoApi.editDispoAnnotation(program, itemId, annotationId, newAnnotation);
if (wasEdited) {
- response = Response.status(Response.Status.OK).build();
+ DispoItem dispoItemById = dispoApi.getDispoItemById(program, itemId);
+ response = Response.status(Response.Status.OK).entity(dispoItemById.getStatus()).build();
+
} else {
response = Response.status(Response.Status.NOT_FOUND).entity(DispoMessages.Annotation_NotFound).build();
}
@@ -180,7 +152,8 @@ public class AnnotationResource {
Response response;
boolean wasEdited = dispoApi.deleteDispoAnnotation(program, itemId, annotationId);
if (wasEdited) {
- response = Response.status(Response.Status.OK).build();
+ DispoItem dispoItemById = dispoApi.getDispoItemById(program, itemId);
+ response = Response.status(Response.Status.OK).entity(dispoItemById.getStatus()).build();
} else {
response = Response.status(Response.Status.NOT_FOUND).entity(DispoMessages.Annotation_NotFound).build();
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoAdminResource.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoAdminResource.java
new file mode 100644
index 00000000000..b4552873387
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoAdminResource.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.resources;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
+
+/**
+ * @author Angel Avila
+ */
+@Path("admin")
+public class DispoAdminResource {
+
+ private final DispoHtmlWriter writer;
+
+ public DispoAdminResource(DispoHtmlWriter writer) {
+ this.writer = writer;
+ }
+
+ @GET
+ @Produces(MediaType.TEXT_HTML)
+ public Response start(@Context UriInfo uriInfo) {
+ Response.Status status;
+ String html;
+ status = Status.OK;
+ String host = uriInfo.getAbsolutePath().getHost();
+ int port = uriInfo.getAbsolutePath().getPort();
+ String url = host + ":" + port;
+ html = writer.createAdminTable(url);
+ return Response.status(status).entity(html).build();
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoApplication.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoApplication.java
index 739091c6e4b..8ce582a9e4a 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoApplication.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoApplication.java
@@ -20,7 +20,7 @@ import org.eclipse.osee.disposition.rest.messages.DispoItemMessageReader;
import org.eclipse.osee.disposition.rest.messages.DispoItemMessageWriter;
import org.eclipse.osee.disposition.rest.messages.DispoSetMessageReader;
import org.eclipse.osee.disposition.rest.messages.DispoSetMessageWriter;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
import org.eclipse.osee.disposition.rest.util.TemplateRegistry;
/**
@@ -30,10 +30,18 @@ public final class DispoApplication extends Application {
private DispoApi dispoApi;
+ private final Set<Object> singletons = new HashSet<Object>();
+
+ public void setDispoApi(DispoApi dispoApi) {
+ this.dispoApi = dispoApi;
+ }
+
@Override
public Set<Object> getSingletons() {
+ return singletons;
+ }
- Set<Object> singletons = new HashSet<Object>();
+ public void start() {
singletons.add(new DispoSetMessageReader());
singletons.add(new DispoSetMessageWriter());
singletons.add(new DispoItemMessageReader());
@@ -41,12 +49,13 @@ public final class DispoApplication extends Application {
singletons.add(new DispoAnnotationMessageReader());
singletons.add(new DispoAnnotationMessageWriter());
- HtmlWriter writer = new HtmlWriter(TemplateRegistry.newRegistry());
+ DispoHtmlWriter writer = new DispoHtmlWriter(TemplateRegistry.newRegistry());
singletons.add(new DispoProgramResource(dispoApi, writer, dispoApi.getDispoFactory()));
- return singletons;
+ singletons.add(new DispoInitResource(writer));
+ singletons.add(new DispoAdminResource(writer));
}
- public void setDispoApi(DispoApi dispoApi) {
- this.dispoApi = dispoApi;
+ public void stop() {
+ singletons.clear();
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoHtmlOutputStream.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoHtmlOutputStream.java
new file mode 100644
index 00000000000..ae646377849
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoHtmlOutputStream.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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.resources;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.StreamingOutput;
+
+import org.eclipse.osee.disposition.model.Discrepancy;
+import org.eclipse.osee.disposition.model.DispoItem;
+import org.eclipse.osee.disposition.model.DispoStrings;
+import org.eclipse.osee.disposition.rest.internal.LocationRangesCompressor;
+import org.eclipse.osee.disposition.rest.util.DispoUtil;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * @author Angel
+ */
+public final class DispoHtmlOutputStream implements StreamingOutput {
+ private final Iterable<DispoItem> dispoItems;
+
+ public DispoHtmlOutputStream(Iterable<DispoItem> dispoItems) {
+ this.dispoItems = dispoItems;
+ }
+
+ @Override
+ public void write(OutputStream output) throws IOException {
+ Writer writer = new OutputStreamWriter(output);
+ try {
+
+ for (DispoItem item : dispoItems) {
+ writer.append("<tr id=\"");
+ writer.append(item.getGuid());
+ if (item.getStatus().equals(DispoStrings.Item_Pass)) {
+ writer.append("\" class=\"itemRow\">");
+ } else {
+ writer.append("\" class=\"itemRow\" ondblclick=\"showAnnotations(this)\">");
+ }
+ addItemData(writer, item);
+ writer.append("</tr>");
+
+ writer.append("\n");
+ }
+
+ } catch (Exception ex) {
+ throw new WebApplicationException(ex);
+ } finally {
+ writer.close();
+ }
+ }
+
+ private void addItemData(Appendable appendable, DispoItem item) throws IOException, JSONException {
+ addData(appendable, item.getName());
+ addData(appendable, item.getStatus(), true);
+ addData(appendable, String.valueOf(item.getDiscrepanciesList().length())); // change to total points
+ addData(appendable, String.valueOf(item.getDiscrepanciesList().length()));
+ addData(appendable, String.valueOf(getFailureLocations(item.getDiscrepanciesList())));
+ addData(appendable, item.getAssignee());
+ addData(appendable, item.getVersion()); // Change to Version
+ }
+
+ private void addData(Appendable appendable, String data) throws IOException {
+ appendable.append("<td class=\"itemData\">");
+ appendable.append(data);
+ appendable.append("</td>");
+ }
+
+ private void addData(Appendable appendable, String data, boolean isStatus) throws IOException {
+ if (data.equals(DispoStrings.Item_Complete)) {
+ appendable.append("<td class=\"itemData\">");
+ } else if (data.equals(DispoStrings.Item_Pass)) {
+ appendable.append("<td class=\"itemDataPass\">");
+ } else {
+ appendable.append("<td class=\"itemDataFail\">");
+ }
+ appendable.append(data);
+ appendable.append("</td>");
+ }
+
+ private String getFailureLocations(JSONObject discrepanciesList) throws JSONException {
+ List<Integer> locations = new ArrayList<Integer>();
+ @SuppressWarnings("unchecked")
+ Iterator<String> iterator = discrepanciesList.keys();
+ while (iterator.hasNext()) {
+ String key = iterator.next();
+ JSONObject discrepancyAsJson = discrepanciesList.getJSONObject(key);
+ Discrepancy discrepany = DispoUtil.jsonObjToDiscrepancy(discrepancyAsJson);
+
+ locations.add(discrepany.getLocation());
+ }
+
+ return LocationRangesCompressor.compress(locations);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoInitResource.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoInitResource.java
new file mode 100644
index 00000000000..3cda7cee87c
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoInitResource.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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.resources;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
+
+/**
+ * @author Angel Avila
+ */
+@Path("init")
+public class DispoInitResource {
+
+ private final DispoHtmlWriter writer;
+
+ public DispoInitResource(DispoHtmlWriter writer) {
+ this.writer = writer;
+ }
+
+ /**
+ * Get initial Dispo page
+ *
+ * @return Html for inital Dispo page
+ * @response.representation.200.doc OK, created HTML page
+ */
+ @GET
+ @Produces(MediaType.TEXT_HTML)
+ public Response start(@Context UriInfo uriInfo) {
+ Response.Status status;
+ String html;
+ status = Status.OK;
+ String host = uriInfo.getAbsolutePath().getHost();
+ int port = uriInfo.getAbsolutePath().getPort();
+ String url = host + ":" + port;
+ html = writer.createMainTable(url);
+ return Response.status(status).entity(html).build();
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoItemResource.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoItemResource.java
index 96394145281..0cf33bdeded 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoItemResource.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoItemResource.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.resources;
+import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -20,26 +21,27 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.StreamingOutput;
import org.eclipse.osee.disposition.model.DispoItem;
import org.eclipse.osee.disposition.model.DispoItemData;
import org.eclipse.osee.disposition.model.DispoMessages;
import org.eclipse.osee.disposition.model.DispoProgram;
import org.eclipse.osee.disposition.rest.DispoApi;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
import org.eclipse.osee.framework.jdk.core.type.Identifiable;
-import org.eclipse.osee.framework.jdk.core.type.ResultSet;
/**
* @author Angel Avila
*/
public class DispoItemResource {
private final DispoApi dispoApi;
- private final HtmlWriter writer;
+ private final DispoHtmlWriter writer;
private final DispoProgram program;
private final String setId;
- public DispoItemResource(DispoApi dispoApi, HtmlWriter writer, DispoProgram program, String setId) {
+ public DispoItemResource(DispoApi dispoApi, DispoHtmlWriter writer, DispoProgram program, String setId) {
this.dispoApi = dispoApi;
this.program = program;
this.setId = setId;
@@ -56,23 +58,17 @@ public class DispoItemResource {
* Get all Dispositionable Items under the Disposition Set
*
* @return The Dispositionable Items found under the Disposition Set
+ * @throws Exception
* @response.representation.200.doc OK, Found Dispositionable Items
* @response.representation.404.doc Not Found, Could not find any Dispositionable Items
*/
@GET
@Produces(MediaType.TEXT_HTML)
- public Response getAllDispoItems() {
- ResultSet<DispoItemData> dispoItems = dispoApi.getDispoItems(program, setId);
- Response.Status status;
- String html;
- if (dispoItems.isEmpty()) {
- status = Status.NOT_FOUND;
- html = "There are currently no disposition items available under this set";
- } else {
- status = Status.OK;
- html = writer.createDispositionPage("Dispositionable Items", "item/", dispoItems);
- }
- return Response.status(status).entity(html).build();
+ public Response getAllDispoItems() throws Exception {
+ List<DispoItem> dispoItems = dispoApi.getDispoItems(program, setId);
+ StreamingOutput streamingOutput = new DispoHtmlOutputStream(dispoItems);
+ ResponseBuilder builder = Response.ok(streamingOutput);
+ return builder.build();
}
/**
@@ -98,33 +94,6 @@ public class DispoItemResource {
}
/**
- * Get a specific Dispositionable Item given a itemId
- *
- * @param itemId The Id of the Dispositionable Item to search for
- * @return The found Dispositionable Item if successful. Error Code otherwise
- * @response.representation.200.doc OK, Found Dispositionable Item
- * @response.representation.404.doc Not Found, Could not find any Dispositionable Items
- */
- @Path("{itemId}")
- @GET
- @Produces(MediaType.TEXT_HTML)
- public Response getDispoItemsByIdHtml(@PathParam("itemId") String itemId) {
- String html;
- Response.Status status;
- DispoItem dispoItem = dispoApi.getDispoItemById(program, itemId);
- if (dispoItem == null) {
- status = Status.NOT_FOUND;
- html = DispoMessages.Item_NotFound;
- } else {
- status = Status.OK;
- String title = "Annotations";
- String prefixPath = itemId + "/annotation";
- html = writer.createDispoPage(dispoItem.getName(), prefixPath, title, "[]");
- }
- return Response.status(status).entity(html).build();
- }
-
- /**
* Edit a specific Dispositionable Item given a itemId and new Dispositionable Item Data
*
* @param itemId The Id of the Dispositionable Item to search for
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResource.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResource.java
index 7c21fff14e3..1b8eeccb455 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResource.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoProgramResource.java
@@ -20,7 +20,7 @@ import javax.ws.rs.core.Response.Status;
import org.eclipse.osee.disposition.model.DispoMessages;
import org.eclipse.osee.disposition.rest.DispoApi;
import org.eclipse.osee.disposition.rest.util.DispoFactory;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.jdk.core.type.ResultSet;
@@ -31,13 +31,13 @@ import org.eclipse.osee.framework.jdk.core.type.ResultSet;
public class DispoProgramResource {
private final DispoApi dispoApi;
- private final HtmlWriter writer;
+ private final DispoHtmlWriter writer;
private final DispoFactory dispoFactory;
- public DispoProgramResource(DispoApi dispoApi, HtmlWriter writer, DispoFactory factory) {
+ public DispoProgramResource(DispoApi dispoApi, DispoHtmlWriter writer, DispoFactory dispoFactory) {
this.dispoApi = dispoApi;
this.writer = writer;
- this.dispoFactory = factory;
+ this.dispoFactory = dispoFactory;
}
/**
@@ -58,39 +58,11 @@ public class DispoProgramResource {
html = DispoMessages.Program_NoneFound;
} else {
status = Status.OK;
- html = writer.createDispositionPage("Programs", "", allPrograms);
+ html = writer.createSelectPrograms(allPrograms);
}
return Response.status(status).entity(html).build();
}
- /**
- * Get a specific Disposition Program given a programId
- *
- * @param programId The Id of the Disposition Program to search for
- * @return The found Disposition Program if successful. Error Code otherwise
- * @response.representation.200.doc OK, Found Disposition Program
- * @response.representation.404.doc Not Found, Could not find any Disposition Program
- */
- @Path("{programId}")
- @GET
- @Produces(MediaType.TEXT_HTML)
- public Response getProgramById(@PathParam("programId") String programId) {
- IOseeBranch dispoBranch = dispoApi.getDispoProgramById(dispoFactory.createProgram(programId));
- Response.Status status;
- String html;
- if (dispoBranch == null) {
- status = Status.NOT_FOUND;
- html = DispoMessages.Program_NotFound;
- } else {
- status = Status.OK;
- String subTitle = "Disposition Sets";
- String prefixPath = programId + "/set";
- html = writer.createDispoPage(dispoBranch.getName(), prefixPath, subTitle, "[]");
- }
-
- return Response.status(status).entity(html).build();
- }
-
@Path("{programId}/set")
public DispoSetResource getAnnotation(@PathParam("programId") String programId) {
return new DispoSetResource(dispoApi, writer, dispoFactory.createProgram(programId));
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoSetResource.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoSetResource.java
index bd8c0311be1..b6af0095311 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoSetResource.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/resources/DispoSetResource.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.disposition.rest.resources;
+import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
@@ -27,8 +28,8 @@ import org.eclipse.osee.disposition.model.DispoSet;
import org.eclipse.osee.disposition.model.DispoSetData;
import org.eclipse.osee.disposition.model.DispoSetDescriptorData;
import org.eclipse.osee.disposition.rest.DispoApi;
-import org.eclipse.osee.disposition.rest.util.HtmlWriter;
-import org.eclipse.osee.framework.jdk.core.type.ResultSet;
+import org.eclipse.osee.disposition.rest.util.DispoHtmlWriter;
+import org.eclipse.osee.disposition.rest.util.DispoUtil;
/**
* @author Angel Avila
@@ -36,10 +37,10 @@ import org.eclipse.osee.framework.jdk.core.type.ResultSet;
public class DispoSetResource {
private final DispoApi dispoApi;
- private final HtmlWriter writer;
+ private final DispoHtmlWriter writer;
private final DispoProgram program;
- public DispoSetResource(DispoApi dispoApi, HtmlWriter writer, DispoProgram program) {
+ public DispoSetResource(DispoApi dispoApi, DispoHtmlWriter writer, DispoProgram program) {
this.dispoApi = dispoApi;
this.writer = writer;
this.program = program;
@@ -67,9 +68,9 @@ public class DispoSetResource {
boolean isUniqueSetName = dispoApi.isUniqueSetName(program, name);
if (isUniqueSetName) {
String createdSetId = dispoApi.createDispoSet(program, descriptor).getGuid();
- DispoSetData createdSet = dispoApi.getDispoSetById(program, createdSetId);
+ DispoSet createdSet = dispoApi.getDispoSetById(program, createdSetId);
status = Status.CREATED;
- response = Response.status(status).entity(createdSet).build();
+ response = Response.status(status).entity(DispoUtil.setArtToSetData(createdSet)).build();
} else {
status = Status.CONFLICT;
response = Response.status(status).entity(DispoMessages.Set_ConflictingNames).build();
@@ -91,7 +92,7 @@ public class DispoSetResource {
@GET
@Produces(MediaType.TEXT_HTML)
public Response getAllDispoSets() {
- ResultSet<DispoSetData> allDispoSets = dispoApi.getDispoSets(program);
+ List<DispoSet> allDispoSets = dispoApi.getDispoSets(program);
Response.Status status;
String html;
if (allDispoSets.isEmpty()) {
@@ -99,7 +100,7 @@ public class DispoSetResource {
html = DispoMessages.Set_NoneFound;
} else {
status = Status.OK;
- html = writer.createDispositionPage("Disposition Sets", "set/", allDispoSets);
+ html = writer.createSelectSet(allDispoSets);
}
return Response.status(status).entity(html).build();
}
@@ -121,7 +122,7 @@ public class DispoSetResource {
if (result == null) {
response = Response.status(Response.Status.NOT_FOUND).entity(DispoMessages.Set_NotFound).build();
} else {
- response = Response.status(Response.Status.OK).entity(result).build();
+ response = Response.status(Response.Status.OK).entity(DispoUtil.setArtToSetData(result)).build();
}
return response;
}
@@ -129,28 +130,20 @@ public class DispoSetResource {
/**
* Get a specific Disposition Set given a setId
*
- * @param setId The Id of the Disposition Set to search for
* @return The found Disposition Set if successful. Error Code otherwise
* @response.representation.200.doc OK, Found Disposition Set
* @response.representation.404.doc Not Found, Could not find any Disposition Sets
*/
- @Path("{setId}")
+ // Will go away once we implement the angular stuff
+ @Path("/admin")
@GET
- @Produces(MediaType.TEXT_HTML)
- public Response getDispoSetByIdHtml(@PathParam("setId") String setId) {
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getAllDispoSetsAdmin() {
+ List<DispoSet> allDispoSets = dispoApi.getDispoSets(program);
Response.Status status;
String html;
- DispoSet dispoSetArt = dispoApi.getDispoSetById(program, setId);
- if (dispoSetArt == null) {
- status = Status.NOT_FOUND;
- html = DispoMessages.Set_NotFound;
- } else {
- String notesJsonString = dispoSetArt.getNotesList().toString();
- status = Status.OK;
- String title = "Dispositionable Items";
- String prefixPath = setId + "/item";
- html = writer.createDispoPage(dispoSetArt.getName(), prefixPath, title, notesJsonString);
- }
+ status = Status.OK;
+ html = writer.createAllSetsTableHTML(allDispoSets);
return Response.status(status).entity(html).build();
}
@@ -202,4 +195,5 @@ public class DispoSetResource {
public DispoItemResource getDispositionableItems(@PathParam("setId") String setId) {
return new DispoItemResource(dispoApi, writer, program, setId);
}
+
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DiscrepancyComperator.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DiscrepancyComperator.java
deleted file mode 100644
index b41aec14eeb..00000000000
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DiscrepancyComperator.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 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.util;
-
-import java.util.Comparator;
-import org.eclipse.osee.disposition.model.Discrepancy;
-/**
- * @author Angel Avila
- */
-public class DiscrepancyComperator implements Comparator<Discrepancy> {
-
- private final LocationRangeComparator rangeComp = new LocationRangeComparator();
-
- @Override
- public int compare(Discrepancy o1, Discrepancy o2) {
- return rangeComp.compare(o1.getLocationRange(), o2.getLocationRange());
- }
-}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoHtmlWriter.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoHtmlWriter.java
new file mode 100644
index 00000000000..dd565cb83fd
--- /dev/null
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/DispoHtmlWriter.java
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.util;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+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.DispoSet;
+import org.eclipse.osee.disposition.model.DispoStrings;
+import org.eclipse.osee.disposition.rest.internal.LocationRangesCompressor;
+import org.eclipse.osee.framework.core.data.IOseeBranch;
+import org.eclipse.osee.framework.jdk.core.type.IResourceRegistry;
+import org.eclipse.osee.template.engine.AppendableRule;
+import org.eclipse.osee.template.engine.PageCreator;
+import org.eclipse.osee.template.engine.PageFactory;
+import org.eclipse.osee.template.engine.StringRule;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/**
+ * @author Angel Avila
+ */
+
+public class DispoHtmlWriter {
+// @formatter:off
+ private final String subTableHeadersStart = " <tr>"+
+ "<th class=\"spacer\" rowspan=\"";
+
+ private final String subTableHeadersEnd ="\" width=\"20\"></th>"+
+ "<th width=\"200\">Points</th>"+
+ "<th width=\"100\">PCR</th>"+
+ "<th width=\"600\">Notes</th>"+
+ "</tr>";
+// @formatter:on
+
+ private final IResourceRegistry registry;
+
+ public DispoHtmlWriter(IResourceRegistry registry) {
+ this.registry = registry;
+ }
+
+ public String createDispositionPage(String title, Iterable<? extends DispoItem> items) {
+ PageCreator page = PageFactory.newPageCreator(registry, "title", title);
+ page.addSubstitution(new StringRule("notes", ""));
+ page.addSubstitution(new TableRowRule("tableData", items));
+ return page.realizePage(TemplateRegistry.DispositionHtml);
+ }
+
+ public String createMainTable(String url) {
+ PageCreator page = PageFactory.newPageCreator(registry);
+ page.addSubstitution(new StringRule("serverPort", url));
+ return page.realizePage(TemplateRegistry.DispositionUserHtml);
+ }
+
+ public String createAdminTable(String url) {
+ PageCreator page = PageFactory.newPageCreator(registry);
+ page.addSubstitution(new StringRule("serverPort", url));
+ return page.realizePage(TemplateRegistry.DispositionAdminHtml);
+ }
+
+ public String createAllSetsTableHTML(Iterable<DispoSet> sets) {
+ int count = 0;
+ StringBuilder sb = new StringBuilder();
+ for (DispoSet set : sets) {
+ sb.append("<tr id=\"");
+ sb.append(set.getGuid());
+ sb.append("\">");
+
+ sb.append("<td class=\"setsTableData\">");
+ sb.append("<input class=\"setsTableDataInput\" onclick=\"setFocused(this);\" type=\"text\" readonly value=\"");
+ sb.append(set.getName());
+ sb.append("\">");
+ sb.append("</input>");
+ sb.append("</td>");
+
+ sb.append("<td class=\"setsTableData\">");
+ sb.append("no summary available");
+ sb.append("</td>");
+ sb.append("</tr>");
+ count++;
+ }
+
+ // We want a table of 7 rows, fill in empty rows (if any) with fillers
+
+ for (int i = 0; i < (7 - count); i++) {
+ sb.append("<tr>");
+ sb.append("<td class=\"setsTableData\">");
+ sb.append("</td>");
+ sb.append("<td class=\"setsTableData\">");
+ sb.append("</td>");
+ sb.append("</tr>");
+ }
+
+ return sb.toString();
+ }
+
+ public String createSelectPrograms(Iterable<IOseeBranch> allPrograms) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<option selected disabled>Choose One</option>");
+ for (IOseeBranch option : allPrograms) {
+ sb.append("<option value=\"");
+ sb.append(option.getUuid());
+ sb.append("\">");
+ sb.append(option.getName());
+ sb.append("</option>");
+ }
+
+ return sb.toString();
+ }
+
+ public String createSelectSet(Iterable<DispoSet> allSets) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<option selected disabled>Choose One</option>");
+ for (DispoSet option : allSets) {
+ sb.append("<option value=\"");
+ sb.append(option.getGuid());
+ sb.append("\">");
+ sb.append(option.getName());
+ sb.append("</option>");
+ }
+
+ return sb.toString();
+ }
+
+ public String createSetTable(Iterable<DispoItem> dispoItems) throws IOException, JSONException {
+ StringBuilder writer = new StringBuilder();
+ for (DispoItem item : dispoItems) {
+ if (item.getName().equalsIgnoreCase("WPS_X_wps_weapon_weight_moment_drag_download_processing_rkt3")) {
+ System.out.println("");
+ }
+ writer.append("<tr id=\"");
+ writer.append(item.getGuid());
+ if (item.getStatus().equals(DispoStrings.Item_Pass)) {
+ writer.append("\" class=\"itemRow\">");
+ } else {
+ writer.append("\" class=\"itemRow\" ondblclick=\"showAnnotations(this)\">");
+ }
+ addItemData(writer, item);
+ writer.append("</tr>");
+
+ writer.append("\n");
+ }
+
+ return writer.toString();
+
+ }
+
+ private void addItemData(Appendable appendable, DispoItem item) throws IOException, JSONException {
+ addData(appendable, item.getName());
+ addData(appendable, item.getStatus(), true);
+ addData(appendable, String.valueOf(item.getDiscrepanciesList().length())); // change to total points
+ addData(appendable, String.valueOf(item.getDiscrepanciesList().length()));
+ addData(appendable, String.valueOf(getFailureLocations(item.getDiscrepanciesList())));
+ addData(appendable, item.getAssignee());
+ addData(appendable, item.getVersion()); // Change to Version
+ }
+
+ private void addData(Appendable appendable, String data) throws IOException {
+ appendable.append("<td class=\"itemData\">");
+ appendable.append(data);
+ appendable.append("</td>");
+ }
+
+ private void addData(Appendable appendable, String data, boolean isStatus) throws IOException {
+ if (data.equals(DispoStrings.Item_Complete)) {
+ appendable.append("<td class=\"itemData\">");
+ } else if (data.equals(DispoStrings.Item_Pass)) {
+ appendable.append("<td class=\"itemDataPass\">");
+ } else {
+ appendable.append("<td class=\"itemDataFail\">");
+ }
+ appendable.append(data);
+ appendable.append("</td>");
+ }
+
+ private String getFailureLocations(JSONObject discrepanciesList) throws JSONException {
+ List<Integer> locations = new ArrayList<Integer>();
+ @SuppressWarnings("unchecked")
+ Iterator<String> iterator = discrepanciesList.keys();
+ while (iterator.hasNext()) {
+ String key = iterator.next();
+ JSONObject discrepancyAsJson = discrepanciesList.getJSONObject(key);
+ Discrepancy discrepany = DispoUtil.jsonObjToDiscrepancy(discrepancyAsJson);
+
+ locations.add(discrepany.getLocation());
+ }
+
+ return LocationRangesCompressor.compress(locations);
+ }
+
+ private void addSubTableData(Appendable appendable, String data, boolean isValid) throws IOException {
+ appendable.append("<td class=\"annotationData\" >");
+ if (isValid) {
+ appendable.append("<textarea class=\"annotationInput");
+ } else {
+ appendable.append("<textarea class=\"annotationInputInvalid");
+ }
+ appendable.append("\" onchange=\"submitAnnotationData(this);\" ondblclick=\"annotationDblClick(this);\">");
+ appendable.append(data);
+ appendable.append("</textarea></td>");
+ }
+
+// @formatter:off
+ public String createSubTable(List<DispoAnnotationData> annotations) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<td colspan=\"7\">");
+ sb.append("<table class=\"subTable\">");
+ sb.append(createHeadersForSubTable(annotations.size()));
+ for(DispoAnnotationData annotation :annotations) {
+ sb.append("<tr id=\"");
+ sb.append(annotation.getId());
+ sb.append("\">");
+ boolean isResolutionValid = true;
+ if(!annotation.getResolution().isEmpty() && !annotation.getIsResolutionValid()){
+ isResolutionValid = false;
+ }
+ addSubTableData(sb, annotation.getLocationRefs(), annotation.getIsConnected());
+ addSubTableData(sb, annotation.getResolution(), isResolutionValid);
+ addSubTableData(sb, annotation.getNotes(), true);
+ addDeleteButton(sb);
+ sb.append("</tr>");
+ }
+ // add on empty row
+ sb.append("<tr>");
+ sb.append("<td class=\"annotationData\"><textarea class=\"annotationInput\" onchange=\"submitAnnotationData(this);\" ondblclick=\"annotationDblClick(this);\"></textarea></d>");
+ sb.append("<td class=\"annotationData\"><textarea class=\"annotationInputDisabled\" onchange=\"submitAnnotationData(this);\" ondblclick=\"annotationDblClick(this);\" readonly=\"true\"></textarea></td>");
+ sb.append("<td class=\"annotationData\"><textarea class=\"annotationInputDisabled\" onchange=\"submitAnnotationData(this);\" ondblclick=\"annotationDblClick(this);\" readonly=\"true\"></textarea></td>");
+ sb.append("<td><button class=\"annotationDelete\" onclick=\"deleteAnnotation(this);\" disabled=\"true\">X</button></td>");
+ sb.append("</tr>");
+ sb.append("</table>");
+ sb.append("</td>");
+ return sb.toString();
+ }
+
+ private void addDeleteButton(Appendable appendable) throws IOException {
+ appendable.append("<td><button class=\"annotationDelete\" onclick=\"deleteAnnotation(this);\">X</button></td>");
+ }
+
+ private String createHeadersForSubTable(int numberOfAnnotations) {
+ return subTableHeadersStart + (numberOfAnnotations+2) + subTableHeadersEnd;
+ }
+ private static final class TableRowRule extends AppendableRule<Object> {
+ private final Iterable<? extends DispoItem> items;
+
+ public TableRowRule(String ruleName, Iterable<? extends DispoItem> items) {
+ super(ruleName);
+ this.items = items;
+ }
+
+ @Override
+ public void applyTo(Appendable appendable) throws IOException {
+ for (DispoItem item : items) {
+ appendable.append("<tr>");
+ addItemData(appendable, item);
+
+ appendable.append("<?subTable?>");
+ }
+ }
+
+ private void addItemData(Appendable appendable, DispoItem item) throws IOException {
+ addData(appendable, item.getName());
+ addData(appendable, item.getStatus());
+ addData(appendable, String.valueOf(item.getDiscrepanciesList().length())); // Change to TOtal Points
+ addData(appendable, String.valueOf(item.getDiscrepanciesList().length()));
+ addData(appendable, item.getAssignee());
+ addData(appendable, item.getGuid()); // Change to Version
+ }
+
+ private void addData(Appendable appendable, String data) throws IOException {
+ appendable.append("<td>");
+ appendable.append(data);
+ appendable.append("</td>");
+ }
+ }
+}
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 2f35cbaa656..0d209b02b28 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
@@ -16,8 +16,8 @@ import org.eclipse.osee.disposition.model.DispoItem;
import org.eclipse.osee.disposition.model.DispoItemData;
import org.eclipse.osee.disposition.model.DispoSet;
import org.eclipse.osee.disposition.model.DispoSetData;
-import org.eclipse.osee.disposition.model.DispoSetData.DispositionOperationsEnum;
import org.eclipse.osee.disposition.model.LocationRange;
+import org.eclipse.osee.disposition.model.Note;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.json.JSONArray;
import org.json.JSONException;
@@ -32,7 +32,7 @@ public final class DispoUtil {
//
}
- public static JSONObject asJSONOjbect(String value) {
+ public static JSONObject asJSONObject(String value) {
try {
return new JSONObject(value);
} catch (JSONException ex) {
@@ -40,6 +40,24 @@ public final class DispoUtil {
}
}
+ public static JSONObject getById(JSONArray list, String id) {
+ try {
+ for (int i = 0; i < list.length(); i++) {
+ JSONObject object;
+ object = list.getJSONObject(i);
+ if (object.has("id")) {
+ if (object.getString("id").equals(id)) {
+ return object;
+ }
+ }
+ }
+ } catch (JSONException ex) {
+ throw new OseeCoreException(ex);
+ }
+
+ return null;
+ }
+
public static JSONArray asJSONArray(String value) {
try {
return new JSONArray(value);
@@ -74,7 +92,6 @@ public final class DispoUtil {
dispoSetData.setImportPath(dispoSet.getImportPath());
dispoSetData.setNotesList(dispoSet.getNotesList());
dispoSetData.setGuid(dispoSet.getGuid());
- dispoSetData.setStatusCount(dispoSet.getStatusCount());
} else {
dispoSetData = null;
}
@@ -82,14 +99,22 @@ public final class DispoUtil {
}
public static DispoItemData itemArtToItemData(DispoItem dispoItemArt) {
+ return itemArtToItemData(dispoItemArt, false);
+ }
+
+ public static DispoItemData itemArtToItemData(DispoItem dispoItemArt, boolean withDetails) {
DispoItemData dispoItemData = new DispoItemData();
dispoItemData.setName(dispoItemArt.getName());
dispoItemData.setGuid(dispoItemArt.getGuid());
dispoItemData.setCreationDate(dispoItemArt.getCreationDate());
+ dispoItemData.setAssignee(dispoItemArt.getAssignee());
+ dispoItemData.setVersion(dispoItemArt.getVersion());
dispoItemData.setLastUpdate(dispoItemArt.getLastUpdate());
dispoItemData.setStatus(dispoItemArt.getStatus());
- dispoItemData.setAnnotationsList(dispoItemArt.getAnnotationsList());
dispoItemData.setDiscrepanciesList(dispoItemArt.getDiscrepanciesList());
+ if (withDetails) {
+ dispoItemData.setAnnotationsList(dispoItemArt.getAnnotationsList());
+ }
return dispoItemData;
}
@@ -105,11 +130,17 @@ public final class DispoUtil {
if (jsonObject.has("itemStatus")) {
dispoItem.setStatus(jsonObject.getString("itemStatus"));
}
+ if (jsonObject.has("itemVersion")) {
+ dispoItem.setVersion(jsonObject.getString("itemVersion"));
+ }
+ if (jsonObject.has("assignee")) {
+ dispoItem.setAssignee(jsonObject.getString("assignee"));
+ }
if (jsonObject.has("discrepanciesList")) {
- dispoItem.setDiscrepanciesList(jsonObject.getJSONArray("discrepanciesList"));
+ dispoItem.setDiscrepanciesList(jsonObject.getJSONObject("discrepanciesList"));
}
if (jsonObject.has("annotationsList")) {
- dispoItem.setAnnotationsList(jsonObject.getJSONObject("annotationsList"));
+ dispoItem.setAnnotationsList(jsonObject.getJSONArray("annotationsList"));
}
} catch (JSONException ex) {
throw new OseeCoreException("Error deserializing a Dispositionable Item.", ex);
@@ -128,7 +159,7 @@ public final class DispoUtil {
dispoSet.setName(jsonObject.getString("name"));
}
if (jsonObject.has("operation")) {
- dispoSet.setOperation((DispositionOperationsEnum) jsonObject.get("operation"));
+ dispoSet.setOperation(jsonObject.getString("operation"));
}
if (jsonObject.has("notesList")) {
dispoSet.setNotesList(jsonObject.getJSONArray("notesList"));
@@ -153,11 +184,6 @@ public final class DispoUtil {
public static JSONObject discrepancyToJsonObj(Discrepancy discrepancy) {
JSONObject toReturn = new JSONObject(discrepancy);
- try {
- toReturn.put("idsOfCoveringAnnotations", discrepancy.getIdsOfCoveringAnnotations());
- } catch (JSONException ex) {
- throw new OseeCoreException(ex);
- }
return toReturn;
}
@@ -176,7 +202,6 @@ public final class DispoUtil {
JSONObject toReturn = new JSONObject(annotation);
try {
toReturn.put("idsOfCoveredDiscrepancies", annotation.getIdsOfCoveredDiscrepancies());
- toReturn.put("notesList", annotation.getNotesList());
} catch (JSONException ex) {
throw new OseeCoreException(ex);
}
@@ -189,6 +214,9 @@ public final class DispoUtil {
if (object.has("id")) {
dispoAnnotation.setId(object.getString("id"));
}
+ if (object.has("index")) {
+ dispoAnnotation.setIndex(object.getInt("index"));
+ }
if (object.has("locationRefs")) {
dispoAnnotation.setLocationRefs(object.getString("locationRefs"));
}
@@ -198,12 +226,15 @@ public final class DispoUtil {
if (object.has("isValid")) {
dispoAnnotation.setIsConnected(object.getBoolean("isValid"));
}
- if (object.has("notesList")) {
- dispoAnnotation.setNotesList(object.getJSONArray("notesList"));
+ if (object.has("notes")) {
+ dispoAnnotation.setNotes(object.getString("notes"));
}
if (object.has("resolution")) {
dispoAnnotation.setResolution(object.getString("resolution"));
}
+ if (object.has("isConnected")) {
+ dispoAnnotation.setIsConnected(object.getBoolean("isConnected"));
+ }
if (object.has("isResolutionValid")) {
dispoAnnotation.setIsResolutionValid(object.getBoolean("isResolutionValid"));
}
@@ -215,10 +246,9 @@ public final class DispoUtil {
public static Discrepancy jsonObjToDiscrepancy(JSONObject object) throws JSONException {
Discrepancy discrepancy = new Discrepancy();
- discrepancy.setLocationRange(jsonObjToLocationRagne(object.getJSONObject("locationRange")));
+ discrepancy.setLocation(object.getInt("location"));
discrepancy.setText(object.getString("text"));
- discrepancy.setId(object.getInt("id"));
- discrepancy.setIdsOfCoveringAnnotations(object.getJSONArray("idsOfCoveringAnnotations"));
+ discrepancy.setId(object.getString("id"));
return discrepancy;
}
@@ -228,4 +258,12 @@ public final class DispoUtil {
range.setEnd(object.getInt("end"));
return range;
}
+
+ public static Note jsonObjToNote(JSONObject object) throws JSONException {
+ Note note = new Note();
+ note.setContent(object.getString("content"));
+ note.setDateString(object.getString("dateString"));
+ note.setType(object.getString("type"));
+ return note;
+ }
}
diff --git a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/LocationRangeUtil.java b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/LocationRangeUtil.java
index 58f10e161fe..edb980cf332 100644
--- a/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/LocationRangeUtil.java
+++ b/plugins/org.eclipse.osee.disposition.rest/src/org/eclipse/osee/disposition/rest/util/LocationRangeUtil.java
@@ -50,7 +50,8 @@ public final class LocationRangeUtil {
locationRef = locationRef.trim();
int startFromString;
int endFromString;
- if (locationRef.contains("-")) {
+
+ if (locationRef.matches("\\d+-\\d+")) {
StringTokenizer tokenizer = new StringTokenizer(locationRef, "-");
startFromString = Integer.valueOf(tokenizer.nextToken());
endFromString = Integer.valueOf(tokenizer.nextToken());

Back to the top