Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid W. Miller2017-03-28 14:43:00 +0000
committerDavid Miller2017-04-18 14:47:58 +0000
commit68f6e43f4fe75b51abf9fe6121edc82fb35b84fd (patch)
tree7d61abed662964354337202a9e099c677ce70dad /plugins
parent11017feb8a2343dfcd51c5b57604e953a0ab2c1a (diff)
downloadorg.eclipse.osee-68f6e43f4fe75b51abf9fe6121edc82fb35b84fd.tar.gz
org.eclipse.osee-68f6e43f4fe75b51abf9fe6121edc82fb35b84fd.tar.xz
org.eclipse.osee-68f6e43f4fe75b51abf9fe6121edc82fb35b84fd.zip
refinement[ats_ATS358027]: Add query parsing, drag and drop
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.osee.client.parent/pom.xml11
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/build.properties1
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/pom.xml18
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsArtifact.java4
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ReqReader.java96
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/Requirement.java18
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProvider.java5
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProviderCatalogReader.java3
-rw-r--r--plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java1
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/META-INF/MANIFEST.MF8
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/pom.xml18
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorer.java65
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerDragAndDrop.java114
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerFactory.java3
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerItem.java2
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfRequirement.java32
-rw-r--r--plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfTreeViewer.java19
-rw-r--r--plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/enums/CoreArtifactTypes.java1
19 files changed, 387 insertions, 38 deletions
diff --git a/plugins/org.eclipse.osee.client.parent/pom.xml b/plugins/org.eclipse.osee.client.parent/pom.xml
index cc4cf9ca725..db71264eae9 100644
--- a/plugins/org.eclipse.osee.client.parent/pom.xml
+++ b/plugins/org.eclipse.osee.client.parent/pom.xml
@@ -73,12 +73,16 @@
<module>../../plugins/org.eclipse.osee.define</module>
<module>../../plugins/org.eclipse.osee.define.test</module>
+ <module>../../plugins/org.eclipse.osee.doors.connector.core</module>
+ <module>../../plugins/org.eclipse.osee.doors.connector.ui</module>
<module>../../features/org.eclipse.osee.framework.feature</module>
<module>../../features/org.eclipse.osee.framework.ui.feature</module>
<module>../../features/org.eclipse.osee.define.feature</module>
+
+ <module>../../features/org.eclipse.osee.doors.feature</module>
<module>../../plugins/org.eclipse.osee.client.demo</module>
@@ -150,12 +154,15 @@
<module>../../plugins/org.eclipse.osee.define</module>
<module>../../plugins/org.eclipse.osee.define.test</module>
-
<module>../../features/org.eclipse.osee.framework.feature</module>
-
<module>../../features/org.eclipse.osee.framework.ui.feature</module>
+ <module>../../plugins/org.eclipse.osee.doors.connector.core</module>
+ <module>../../plugins/org.eclipse.osee.doors.connector.ui</module>
+
<module>../../features/org.eclipse.osee.define.feature</module>
+
+ <module>../../features/org.eclipse.osee.doors.feature</module>
<module>../../plugins/org.eclipse.osee.client.demo</module>
diff --git a/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF
index efab6b831be..cdb358b89cb 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF
@@ -18,14 +18,18 @@ Import-Package: org.apache.commons.codec;version="1.6.0",
org.apache.commons.httpclient,
org.apache.commons.httpclient.methods,
org.apache.commons.httpclient.util,
+ org.codehaus.jackson,
+ org.codehaus.jackson.annotate,
+ org.codehaus.jackson.node,
org.eclipse.core.runtime,
org.eclipse.jface.dialogs,
+ org.eclipse.osee.framework.jdk.core.util,
org.eclipse.osee.framework.logging,
org.eclipse.swt,
org.eclipse.swt.events,
org.eclipse.swt.layout,
org.eclipse.swt.widgets,
- org.eclipse.ui,
org.scribe.builder.api
Bundle-ClassPath: .,
lib/scribe-1.3.7.jar
+Require-Bundle: org.eclipse.ui.workbench;bundle-version="3.108.0"
diff --git a/plugins/org.eclipse.osee.doors.connector.core/build.properties b/plugins/org.eclipse.osee.doors.connector.core/build.properties
index 637de5749c2..0f9497ce08c 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/build.properties
+++ b/plugins/org.eclipse.osee.doors.connector.core/build.properties
@@ -3,7 +3,6 @@ output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml,\
- icons/,\
lib/,\
schema/,\
types/,\
diff --git a/plugins/org.eclipse.osee.doors.connector.core/pom.xml b/plugins/org.eclipse.osee.doors.connector.core/pom.xml
new file mode 100644
index 00000000000..e6fd8194a01
--- /dev/null
+++ b/plugins/org.eclipse.osee.doors.connector.core/pom.xml
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osee</groupId>
+ <artifactId>org.eclipse.osee.client.parent</artifactId>
+ <version>0.25.0-SNAPSHOT</version>
+ <relativePath>../../plugins/org.eclipse.osee.client.parent</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osee.doors.connector.core</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <name>OSEE Doors Connector Core (Incubation)</name>
+
+
+</project>
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsArtifact.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsArtifact.java
index 5d1b2bdf5c0..384d535dc6a 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsArtifact.java
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsArtifact.java
@@ -72,4 +72,8 @@ public class DoorsArtifact implements INamedElement {
public List<DoorsArtifact> getChildren() {
return this.children;
}
+
+ public IDoorsArtifactParser getReader() {
+ return new ServiceProviderCatalogReader();
+ }
}
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ReqReader.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ReqReader.java
new file mode 100644
index 00000000000..5ec37980633
--- /dev/null
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ReqReader.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.doors.connector.core;
+
+import java.io.StringReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+/**
+ * @author David W. Miller
+ */
+public class ReqReader implements IDoorsArtifactParser {
+
+ /**
+ * Method to parse the DWA URL to get the response
+ */
+ @Override
+ public DoorsArtifact parse(DoorsArtifact reqIn) throws Exception {
+ Requirement reqObj;
+ if (reqIn instanceof Requirement) {
+ reqObj = (Requirement) reqIn;
+ } else {
+ return reqIn;
+ }
+ String path = reqObj.getPath();
+ // for now, all the parsing does is get the shortName from the shortTitle xml attribute
+ // if the shortName is set, don't redo the parsing
+ if (Strings.isInValid(reqObj.getShortName())) {
+
+ DoorsOSLCConnector doors = new DoorsOSLCConnector();
+ // set query string to null for now, can be used later to get specifics about the requirement
+ String catalogResponse = doors.getCatalogResponse(replace(path), null);
+
+ XPath xpath = XPathFactory.newInstance().newXPath();
+
+ DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
+ domFactory.setNamespaceAware(true); // never forget this!
+ DocumentBuilder builder = domFactory.newDocumentBuilder();
+
+ InputSource is = new InputSource(new StringReader(catalogResponse));
+ Document doc = builder.parse(is);
+ Object result1 = xpath.evaluate("//*[local-name()='Requirement']", doc, XPathConstants.NODESET);
+ NodeList rootNodes = (NodeList) result1;
+ if (rootNodes.getLength() > 0) {
+ for (int i = 0; i < rootNodes.getLength(); i++) {
+ Node node = rootNodes.item(i);
+ String name = findReqName(node);
+ if (!name.isEmpty()) {
+ reqObj.setShortName(name);
+ break;
+ }
+ }
+ }
+ }
+ return reqObj;
+ }
+
+ private String findReqName(Node node) {
+ String toReturn = "";
+ NodeList childNodes = node.getChildNodes();
+ for (int j = 0; j < childNodes.getLength(); j++) {
+ Node item = childNodes.item(j);
+ if ((item.getLocalName() != null) && item.getLocalName().equalsIgnoreCase("shortTitle")) {
+ NodeList childNodes2 = item.getChildNodes();
+ Node item2 = childNodes2.item(0);
+ toReturn = item2.getTextContent();
+ break;
+ }
+ }
+ return toReturn;
+ }
+
+ /**
+ * Method to return the url replaced to lower case
+ */
+ @Override
+ public String replace(final String url) {
+ return url.toLowerCase();
+ }
+}
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/Requirement.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/Requirement.java
index 2e70788a225..15fdd52941a 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/Requirement.java
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/Requirement.java
@@ -5,13 +5,25 @@
*/
package org.eclipse.osee.doors.connector.core;
-
/**
* Model Class to create a requirement oblect. Currently it extends Doors artifact. Further more objects can be added to
* extend it in future
- *
+ *
* @author Chandan Bandemutt
*/
public class Requirement extends DoorsArtifact {
- //
+ private String shortName;
+
+ public String getShortName() {
+ return shortName;
+ }
+
+ public void setShortName(String shortName) {
+ this.shortName = shortName;
+ }
+
+ @Override
+ public IDoorsArtifactParser getReader() {
+ return new ReqReader();
+ }
}
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProvider.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProvider.java
index 4a61616b56b..12f8e95ee35 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProvider.java
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProvider.java
@@ -12,5 +12,8 @@ package org.eclipse.osee.doors.connector.core;
* @author Chandan Bandemutt
*/
public class ServiceProvider extends DoorsArtifact {
- //
+ @Override
+ public IDoorsArtifactParser getReader() {
+ return new ServiceProviderReader();
+ }
}
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProviderCatalogReader.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProviderCatalogReader.java
index 292551276c7..a79b5c2ad45 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProviderCatalogReader.java
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/ServiceProviderCatalogReader.java
@@ -38,9 +38,6 @@ public class ServiceProviderCatalogReader implements IDoorsArtifactParser {
DoorsOSLCConnector doors = new DoorsOSLCConnector();
String catalogResponse = doors.getCatalogResponse(path, null);
- while (catalogResponse.contains("500")) {
- catalogResponse = doors.getCatalogResponse(path, null);
- }
XPath xpath = XPathFactory.newInstance().newXPath();
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java
index 480569cf47c..76c68db322e 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java
@@ -314,6 +314,7 @@ public class DWAOAuthService {
GetMethod authorizeGetMethod = new GetMethod(path);
authorizeGetMethod.addRequestHeader("Content-Type", "application/x-oslc-rm-requirement-collection-1.0+xml");
+ authorizeGetMethod.addRequestHeader("OSLC-Core-Version", "2.0");
authorizeGetMethod.addRequestHeader("Accept", "application/rdf+xml");
authorizeGetMethod.addRequestHeader("Accept-Charset", "UTF-8");
if ((queryString != null) && !queryString.isEmpty()) {
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.doors.connector.ui/META-INF/MANIFEST.MF
index 1e6edf5d893..3e838eebbda 100644
--- a/plugins/org.eclipse.osee.doors.connector.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.doors.connector.ui/META-INF/MANIFEST.MF
@@ -7,6 +7,9 @@ Bundle-Vendor: Bosch GmbH
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Import-Package: org.apache.commons.httpclient,
+ org.codehaus.jackson,
+ org.codehaus.jackson.map,
+ org.codehaus.jackson.node,
org.eclipse.core.commands,
org.eclipse.core.resources,
org.eclipse.core.runtime,
@@ -27,14 +30,19 @@ Import-Package: org.apache.commons.httpclient,
org.eclipse.osee.framework.skynet.core.artifact,
org.eclipse.osee.framework.skynet.core.artifact.search,
org.eclipse.osee.framework.skynet.core.transaction,
+ org.eclipse.osee.framework.skynet.core.utility,
org.eclipse.osee.framework.ui.plugin,
org.eclipse.osee.framework.ui.skynet,
+ org.eclipse.osee.framework.ui.skynet.artifact,
org.eclipse.osee.framework.ui.skynet.branch,
+ org.eclipse.osee.framework.ui.skynet.internal,
org.eclipse.osee.framework.ui.skynet.listener,
+ org.eclipse.osee.framework.ui.skynet.util,
org.eclipse.osee.framework.ui.skynet.widgets,
org.eclipse.osee.framework.ui.swt,
org.eclipse.swt,
org.eclipse.swt.browser,
+ org.eclipse.swt.dnd,
org.eclipse.swt.events,
org.eclipse.swt.graphics,
org.eclipse.swt.layout,
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/pom.xml b/plugins/org.eclipse.osee.doors.connector.ui/pom.xml
new file mode 100644
index 00000000000..88d55cfa8f9
--- /dev/null
+++ b/plugins/org.eclipse.osee.doors.connector.ui/pom.xml
@@ -0,0 +1,18 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.osee</groupId>
+ <artifactId>org.eclipse.osee.client.parent</artifactId>
+ <version>0.25.0-SNAPSHOT</version>
+ <relativePath>../../plugins/org.eclipse.osee.client.parent</relativePath>
+ </parent>
+
+ <artifactId>org.eclipse.osee.doors.connector.ui</artifactId>
+ <packaging>eclipse-plugin</packaging>
+ <name>OSEE Doors Connector UI (Incubation)</name>
+
+
+</project>
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorer.java b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorer.java
index 2ecc76b58b1..0658299973b 100644
--- a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorer.java
+++ b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorer.java
@@ -26,7 +26,10 @@ import org.eclipse.jface.window.Window;
import org.eclipse.osee.doors.connector.core.DoorsArtifact;
import org.eclipse.osee.doors.connector.core.DoorsModel;
import org.eclipse.osee.doors.connector.core.DoorsOSLCConnector;
+import org.eclipse.osee.doors.connector.core.IDoorsArtifactParser;
import org.eclipse.osee.doors.connector.core.LoginDialog;
+import org.eclipse.osee.doors.connector.core.QueryCapabilities;
+import org.eclipse.osee.doors.connector.core.Requirement;
import org.eclipse.osee.doors.connector.core.oauth.DWAOAuthService;
import org.eclipse.osee.doors.connector.ui.oauth.extension.DoorsOSLCDWAProviderInfoExtn;
import org.eclipse.osee.framework.logging.OseeLog;
@@ -53,6 +56,7 @@ import org.eclipse.ui.PlatformUI;
public class RdfExplorer extends GenericViewPart implements IRebuildMenuListener {
public static final String VIEW_ID = "org.eclipse.osee.doors.connector.ui.viewer.RdfExplorer";
private RdfTreeViewer treeViewer;
+ private RdfExplorerDragAndDrop dragAndDropWorker;
private Composite parentComp;
private RdfExplorerItem rootItem;
@@ -80,6 +84,7 @@ public class RdfExplorer extends GenericViewPart implements IRebuildMenuListener
treeViewer.setUseHashlookup(true);
treeViewer.getControl().setLayoutData(gridData);
+ dragAndDropWorker = new RdfExplorerDragAndDrop(treeViewer.getTree());
getSite().setSelectionProvider(treeViewer);
parentComp.layout();
createActions();
@@ -190,16 +195,19 @@ public class RdfExplorer extends GenericViewPart implements IRebuildMenuListener
}
- private ArrayList<RdfExplorerItem> getSelectedItems() {
- ArrayList<RdfExplorerItem> arts = new ArrayList<>();
- Iterator<?> i = ((IStructuredSelection) treeViewer.getSelection()).iterator();
+ private ArrayList<Requirement> getSelectedItems(IStructuredSelection selection) {
+ ArrayList<Requirement> reqs = new ArrayList<>();
+ Iterator<?> i = selection.iterator();
while (i.hasNext()) {
Object obj = i.next();
if (obj instanceof RdfExplorerItem) {
- arts.add((RdfExplorerItem) obj);
+ DoorsArtifact dwaItem = ((RdfExplorerItem) obj).getDwaItem();
+ if (dwaItem instanceof Requirement) {
+ reqs.add((Requirement) dwaItem);
+ }
}
}
- return arts;
+ return reqs;
}
private void expandAll(IStructuredSelection selection) {
@@ -209,6 +217,46 @@ public class RdfExplorer extends GenericViewPart implements IRebuildMenuListener
}
}
+ public void expandItem(IStructuredSelection selection) {
+ RdfExplorerItem item = (RdfExplorerItem) selection.getFirstElement();
+ DoorsArtifact provider = item.getDwaItem();
+ if (provider.getChildren().size() < 1) {
+ IDoorsArtifactParser reader = provider.getReader();
+ try {
+ reader.parse(provider);
+ for (DoorsArtifact dwaItem : provider.getChildren()) {
+ if (dwaItem instanceof QueryCapabilities) {
+ // root level, contains requirements
+ QueryCapabilities qc = (QueryCapabilities) dwaItem;
+ for (DoorsArtifact reqt : qc.getRequirements()) {
+ item.addItem(RdfExplorerFactory.getExplorerItem(reqt.getName(), item.getTreeViewer(), item,
+ item.getRdfExplorer(), reqt));
+ }
+ } else {
+ item.addItem(RdfExplorerFactory.getExplorerItem(dwaItem.getName(), item.getTreeViewer(), item,
+ item.getRdfExplorer(), dwaItem));
+ }
+ }
+ if (provider instanceof Requirement) {
+ List<Requirement> selected = getSelectedItems(selection);
+ if (selected.size() > 0) {
+ dragAndDropWorker.clearRequirements();
+ for (Requirement req : selected) {
+ // set up drag and drop for selected requirements only
+ // make sure they are all parsed
+ IDoorsArtifactParser reqReader = req.getReader();
+ reqReader.parse(req);
+ dragAndDropWorker.addRequirement(req);
+ }
+ }
+ }
+ reload();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
public void reload() {
List<RdfExplorerItem> items = new LinkedList<>();
if (rootItem == null) {
@@ -233,9 +281,6 @@ public class RdfExplorer extends GenericViewPart implements IRebuildMenuListener
DWAOAuthService service1 = new DWAOAuthService(config, "Open System Engineering Environment", "BoeingOSEE");
DoorsArtifact doorsArtifact = connector.getAuthentication(service1, dialog.getName(), dialog.getPassword());
DoorsModel.setDoorsArtifact(doorsArtifact);
- for (DoorsArtifact item : doorsArtifact.getChildren()) {
- rootItem.addItem(RdfExplorerFactory.getExplorerItem(item.getName(), treeViewer, rootItem, this, item));
- }
Cookie[] cookies = service1.getHttpClient().getState().getCookies();
for (Cookie cookie : cookies) {
@@ -243,6 +288,10 @@ public class RdfExplorer extends GenericViewPart implements IRebuildMenuListener
}
}
}
+ DoorsArtifact da = DoorsModel.getDoorsArtifact();
+ for (DoorsArtifact item : da.getChildren()) {
+ rootItem.addItem(RdfExplorerFactory.getExplorerItem(item.getName(), treeViewer, rootItem, this, item));
+ }
}
}
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerDragAndDrop.java b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerDragAndDrop.java
new file mode 100644
index 00000000000..2c9080372d1
--- /dev/null
+++ b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerDragAndDrop.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 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.doors.connector.ui.viewer;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.eclipse.osee.doors.connector.core.Requirement;
+import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.framework.skynet.core.utility.JsonArtifactRepresentation;
+import org.eclipse.osee.framework.skynet.core.utility.JsonAttributeRepresentation;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSource;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.DragSourceListener;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author David W. Miller
+ */
+public class RdfExplorerDragAndDrop {
+ private DragSource dragSource;
+
+ private final List<Requirement> reqs = new ArrayList<Requirement>();
+
+ public RdfExplorerDragAndDrop(Control source) {
+
+ if (source != null) {
+ dragSource = new DragSource(source, DND.DROP_MOVE | DND.DROP_COPY);
+ setupDragSupport();
+ }
+ }
+
+ private void setupDragSupport() {
+ dragSource.setTransfer(new Transfer[] {TextTransfer.getInstance()});
+ dragSource.addDragListener(new DragSourceListener() {
+
+ @Override
+ public void dragFinished(DragSourceEvent event) {
+ // do nothing
+ }
+
+ @Override
+ public void dragSetData(DragSourceEvent event) {
+ performDataTransafer(event);
+ }
+
+ @Override
+ public void dragStart(DragSourceEvent event) {
+ // do nothing
+ }
+ });
+ }
+
+ private void performDataTransafer(DragSourceEvent event) {
+ if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
+ textTransferDragSetData(event);
+ }
+ }
+
+ public void textTransferDragSetData(DragSourceEvent event) {
+ List<JsonArtifactRepresentation> reqsOut = new ArrayList<JsonArtifactRepresentation>();
+ for (Requirement reqt : reqs) {
+ reqsOut.add(makeJsonArtifactRepresentation(reqt));
+ }
+
+ ObjectMapper mapper = new ObjectMapper();
+ try {
+ event.data = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(reqsOut);
+ } catch (IOException ex) {
+ //
+ }
+ }
+
+ private JsonArtifactRepresentation makeJsonArtifactRepresentation(Requirement reqt) {
+ JsonArtifactRepresentation artRep = new JsonArtifactRepresentation();
+ artRep.setArtifactTypeId(CoreArtifactTypes.Url.getId());
+ artRep.setName(reqt.getShortName());
+ List<JsonAttributeRepresentation> attrs = new ArrayList<JsonAttributeRepresentation>();
+ attrs.add(new JsonAttributeRepresentation(CoreAttributeTypes.Description.getId(), reqt.getName()));
+ attrs.add(new JsonAttributeRepresentation(CoreAttributeTypes.ContentUrl.getId(), reqt.getPath()));
+ artRep.setAttrs(attrs);
+ return artRep;
+ }
+
+ public void clearRequirements() {
+ if (reqs.size() > 0) {
+ reqs.clear();
+ }
+ }
+
+ public void addRequirement(Requirement req) {
+ reqs.add(req);
+ }
+
+ public void performDragOver(DropTargetEvent event) {
+ event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL | DND.FEEDBACK_EXPAND;
+ event.detail = DND.DROP_NONE;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerFactory.java b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerFactory.java
index cde425d8543..92730590b7f 100644
--- a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerFactory.java
+++ b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerFactory.java
@@ -12,6 +12,7 @@ package org.eclipse.osee.doors.connector.ui.viewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.osee.doors.connector.core.DoorsArtifact;
+import org.eclipse.osee.doors.connector.core.Requirement;
import org.eclipse.osee.doors.connector.core.ServiceProvider;
import org.eclipse.osee.doors.connector.core.ServiceProviderCatalog;
@@ -26,6 +27,8 @@ public class RdfExplorerFactory {
return (T) new RdfSevPro(name, treeViewer, rootItem, rdfExplorer, item);
} else if (item instanceof ServiceProviderCatalog) {
return (T) new RdfSevProCat(name, treeViewer, rootItem, rdfExplorer, item);
+ } else if (item instanceof Requirement) {
+ return (T) new RdfRequirement(name, treeViewer, rootItem, rdfExplorer, item);
}
return (T) new RdfExplorerItem(name, treeViewer, rootItem, rdfExplorer, item);
}
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerItem.java b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerItem.java
index 1e298fe9cf4..a39db1bb32e 100644
--- a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerItem.java
+++ b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfExplorerItem.java
@@ -119,6 +119,6 @@ public class RdfExplorerItem implements IAdaptable {
@Override
public <T> T getAdapter(Class<T> adapter) {
- return (T) this;
+ return null;
}
}
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfRequirement.java b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfRequirement.java
new file mode 100644
index 00000000000..653e8fb7d63
--- /dev/null
+++ b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfRequirement.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.doors.connector.ui.viewer;
+
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.osee.doors.connector.core.DoorsArtifact;
+import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
+import org.eclipse.osee.framework.ui.swt.ImageManager;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author David W. Miller
+ */
+public class RdfRequirement extends RdfExplorerItem {
+
+ public RdfRequirement(String name, TreeViewer treeViewer, RdfExplorerItem parentItem, RdfExplorer rdfExplorer, DoorsArtifact dwaItem) {
+ super(name, treeViewer, parentItem, rdfExplorer, dwaItem);
+ }
+
+ @Override
+ public Image getImage() {
+ return ImageManager.getImage(FrameworkImage.DOCUMENT);
+ }
+}
diff --git a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfTreeViewer.java b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfTreeViewer.java
index 9759705bd1b..076884082cb 100644
--- a/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfTreeViewer.java
+++ b/plugins/org.eclipse.osee.doors.connector.ui/src/org/eclipse/osee/doors/connector/ui/viewer/RdfTreeViewer.java
@@ -18,8 +18,6 @@ import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.osee.doors.connector.core.DoorsArtifact;
-import org.eclipse.osee.doors.connector.core.ServiceProviderCatalogReader;
import org.eclipse.swt.widgets.Composite;
/**
@@ -40,23 +38,8 @@ public class RdfTreeViewer extends TreeViewer {
ISelection selection = getSelection();
if (selection instanceof IStructuredSelection) {
RdfExplorerItem item = (RdfExplorerItem) ((IStructuredSelection) selection).getFirstElement();
-
if (item != null && item.getParentItem() != null) {
- DoorsArtifact provider = item.getDwaItem();
- if (provider.getChildren().size() < 1) {
- ServiceProviderCatalogReader catalogReader = new ServiceProviderCatalogReader();
-
- try {
- catalogReader.parse(provider);
- for (DoorsArtifact dwaItem : provider.getChildren()) {
- item.addItem(RdfExplorerFactory.getExplorerItem(dwaItem.getName(), item.getTreeViewer(),
- item, item.getRdfExplorer(), dwaItem));
- }
- rdfExplorer.reload();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
+ rdfExplorer.expandItem((IStructuredSelection) selection);
}
}
}
diff --git a/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/enums/CoreArtifactTypes.java b/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/enums/CoreArtifactTypes.java
index e0aec9152a7..b4782c41f4f 100644
--- a/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/enums/CoreArtifactTypes.java
+++ b/plugins/org.eclipse.osee.framework.core/src/org/eclipse/osee/framework/core/enums/CoreArtifactTypes.java
@@ -90,6 +90,7 @@ public final class CoreArtifactTypes {
public static final IArtifactType TestSupport = TokenFactory.createArtifactType(83, "Test Support");
public static final IArtifactType TestUnit = TokenFactory.createArtifactType(4, "Test Unit");
public static final IArtifactType UniversalGroup = TokenFactory.createArtifactType(8, "Universal Group");
+ public static final IArtifactType Url = TokenFactory.createArtifactType(15, "Url");
public static final IArtifactType User = TokenFactory.createArtifactType(5, "User");
public static final IArtifactType UserGroup = TokenFactory.createArtifactType(7, "User Group");
public static final IArtifactType XViewerGlobalCustomization = TokenFactory.createArtifactType(55, "XViewer Global Customization");

Back to the top