Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmisinco2016-08-05 16:01:57 +0000
committerdonald.g.dunne2016-09-02 00:21:21 +0000
commit3d3479c32dd88e397301d0f1878e048f3eebdace (patch)
tree797973fc07c17b745baf697f2f12defbc40f2685 /plugins/org.eclipse.osee.orcs.rest
parent4791dc347a2402a562146dcd780c37b25381cb42 (diff)
downloadorg.eclipse.osee-3d3479c32dd88e397301d0f1878e048f3eebdace.tar.gz
org.eclipse.osee-3d3479c32dd88e397301d0f1878e048f3eebdace.tar.xz
org.eclipse.osee-3d3479c32dd88e397301d0f1878e048f3eebdace.zip
refactor[ats_ATS307494]: Move ORCS writer to rest bundle
Diffstat (limited to 'plugins/org.eclipse.osee.orcs.rest')
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/IOrcsValidationHelper.java32
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorValidator.java18
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorWriter.java16
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsValidationHelperAdapter.java71
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterCollectorGenerator.java23
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterEndpointImpl.java5
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterExcelReader.java168
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterFactory.java140
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForCreateUpdate.java233
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForDelete.java88
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForSettings.java92
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterStreamingOutput.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterUtil.java42
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterWorkbookGenerator.java14
-rw-r--r--plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OwFactory.java115
16 files changed, 1020 insertions, 45 deletions
diff --git a/plugins/org.eclipse.osee.orcs.rest/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.orcs.rest/META-INF/MANIFEST.MF
index f2bd98f4c74..4ee9126ccc4 100644
--- a/plugins/org.eclipse.osee.orcs.rest/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.orcs.rest/META-INF/MANIFEST.MF
@@ -41,12 +41,12 @@ Import-Package: com.google.common.base;version="15.0.0",
org.eclipse.osee.orcs.data,
org.eclipse.osee.orcs.rest.model,
org.eclipse.osee.orcs.rest.model.search.artifact,
+ org.eclipse.osee.orcs.rest.model.writer,
+ org.eclipse.osee.orcs.rest.model.writer.config,
+ org.eclipse.osee.orcs.rest.model.writer.reader,
org.eclipse.osee.orcs.search,
org.eclipse.osee.orcs.transaction,
org.eclipse.osee.orcs.utility,
- org.eclipse.osee.orcs.writer,
- org.eclipse.osee.orcs.writer.model.config,
- org.eclipse.osee.orcs.writer.model.reader,
org.osgi.service.event;version="1.3.1"
Osee-JaxRs-Resource: OSEE-INF/web/script/*;path=/orcs/script/ui,
OSEE-INF/web/example/*;path=/orcs/example/ui,
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/IOrcsValidationHelper.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/IOrcsValidationHelper.java
new file mode 100644
index 00000000000..d20454340d1
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/IOrcsValidationHelper.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IOrcsValidationHelper {
+
+ boolean isBranchExists(long branchUuid);
+
+ boolean isUserExists(String userId);
+
+ boolean isArtifactTypeExist(long artifactTypeUuid);
+
+ boolean isRelationTypeExist(long relationTypeUuid);
+
+ boolean isAttributeTypeExists(long attributeTypeUuid);
+
+ public boolean isArtifactExists(long branchUuid, long artifactUuid);
+
+ boolean isAttributeTypeExists(String attributeTypeName);
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorValidator.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorValidator.java
index 6ce8423a4d2..b2d02db7777 100644
--- a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorValidator.java
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorValidator.java
@@ -17,16 +17,14 @@ import java.util.Set;
import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.orcs.OrcsApi;
-import org.eclipse.osee.orcs.writer.IOrcsValidationHelper;
-import org.eclipse.osee.orcs.writer.OrcsValidationHelperAdapter;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifact;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactToken;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactType;
-import org.eclipse.osee.orcs.writer.model.reader.OwAttribute;
-import org.eclipse.osee.orcs.writer.model.reader.OwAttributeType;
-import org.eclipse.osee.orcs.writer.model.reader.OwCollector;
-import org.eclipse.osee.orcs.writer.model.reader.OwRelation;
-import org.eclipse.osee.orcs.writer.model.reader.OwRelationType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifact;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttribute;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttributeType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelation;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelationType;
/**
* @author Donald G. Dunne
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorWriter.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorWriter.java
index b990deb8b9c..07937a669e1 100644
--- a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorWriter.java
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsCollectorWriter.java
@@ -32,15 +32,15 @@ import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.orcs.OrcsApi;
import org.eclipse.osee.orcs.data.ArtifactReadable;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifact;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttribute;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttributeType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelation;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelationType;
import org.eclipse.osee.orcs.transaction.TransactionBuilder;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifact;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactToken;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactType;
-import org.eclipse.osee.orcs.writer.model.reader.OwAttribute;
-import org.eclipse.osee.orcs.writer.model.reader.OwAttributeType;
-import org.eclipse.osee.orcs.writer.model.reader.OwCollector;
-import org.eclipse.osee.orcs.writer.model.reader.OwRelation;
-import org.eclipse.osee.orcs.writer.model.reader.OwRelationType;
/**
* @author Donald G. Dunne
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsValidationHelperAdapter.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsValidationHelperAdapter.java
new file mode 100644
index 00000000000..a9b212fd070
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsValidationHelperAdapter.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+import static org.eclipse.osee.framework.core.enums.CoreBranches.COMMON_ID;
+import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.orcs.OrcsApi;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OrcsValidationHelperAdapter implements IOrcsValidationHelper {
+
+ private final OrcsApi orcsApi;
+
+ public OrcsValidationHelperAdapter(OrcsApi orcsApi) {
+ this.orcsApi = orcsApi;
+ }
+
+ @Override
+ public boolean isBranchExists(long branchUuid) {
+ return orcsApi.getQueryFactory().branchQuery().andUuids(branchUuid).getResultsAsId().size() == 1;
+ }
+
+ @Override
+ public boolean isUserExists(String userId) {
+ return orcsApi.getQueryFactory().fromBranch(COMMON_ID).and(CoreAttributeTypes.UserId,
+ userId).getResults().getAtMostOneOrNull() != null;
+ }
+
+ @Override
+ public boolean isArtifactExists(long branchUuid, long artifactUuid) {
+ int matchedArtifacts = orcsApi.getQueryFactory().fromBranch(branchUuid).andUuid(artifactUuid).getResults().size();
+ return matchedArtifacts == 1;
+ }
+
+ @Override
+ public boolean isArtifactTypeExist(long artifactTypeUuid) {
+ return orcsApi.getOrcsTypes().getArtifactTypes().getByUuid(artifactTypeUuid) != null;
+ }
+
+ @Override
+ public boolean isRelationTypeExist(long relationTypeUuid) {
+ return orcsApi.getOrcsTypes().getRelationTypes().getByUuid(relationTypeUuid) != null;
+ }
+
+ @Override
+ public boolean isAttributeTypeExists(long attributeTypeUuid) {
+ return orcsApi.getOrcsTypes().getAttributeTypes().getByUuid(attributeTypeUuid) != null;
+ }
+
+ @Override
+ public boolean isAttributeTypeExists(String attributeTypeName) {
+ for (IAttributeType type : orcsApi.getOrcsTypes().getAttributeTypes().getAll()) {
+ if (type.getName().equals(attributeTypeName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterCollectorGenerator.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterCollectorGenerator.java
index 896ff0854f9..984ea58c8a5 100644
--- a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterCollectorGenerator.java
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterCollectorGenerator.java
@@ -28,18 +28,17 @@ import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
import org.eclipse.osee.framework.core.enums.SystemUser;
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.orcs.OrcsApi;
-import org.eclipse.osee.orcs.writer.model.config.OrcsWriterInputConfig;
-import org.eclipse.osee.orcs.writer.model.config.OrcsWriterRelationSide;
-import org.eclipse.osee.orcs.writer.model.config.OrcsWriterToken;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifact;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactToken;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactType;
-import org.eclipse.osee.orcs.writer.model.reader.OwAttributeType;
-import org.eclipse.osee.orcs.writer.model.reader.OwBranch;
-import org.eclipse.osee.orcs.writer.model.reader.OwCollector;
-import org.eclipse.osee.orcs.writer.model.reader.OwFactory;
-import org.eclipse.osee.orcs.writer.model.reader.OwRelation;
-import org.eclipse.osee.orcs.writer.model.reader.OwRelationType;
+import org.eclipse.osee.orcs.rest.model.writer.OrcsWriterToken;
+import org.eclipse.osee.orcs.rest.model.writer.config.OrcsWriterInputConfig;
+import org.eclipse.osee.orcs.rest.model.writer.config.OrcsWriterRelationSide;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifact;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttributeType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwBranch;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelation;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelationType;
/**
* @author Donald G. Dunne
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterEndpointImpl.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterEndpointImpl.java
index f13053c00dd..e1311251559 100644
--- a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterEndpointImpl.java
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterEndpointImpl.java
@@ -20,9 +20,8 @@ import org.eclipse.osee.framework.core.util.XResultData;
import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
import org.eclipse.osee.orcs.OrcsApi;
import org.eclipse.osee.orcs.rest.model.OrcsWriterEndpoint;
-import org.eclipse.osee.orcs.writer.OrcsWriterExcelReader;
-import org.eclipse.osee.orcs.writer.model.config.OrcsWriterInputConfig;
-import org.eclipse.osee.orcs.writer.model.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.config.OrcsWriterInputConfig;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
/**
* @author Donald G. Dunne
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterExcelReader.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterExcelReader.java
new file mode 100644
index 00000000000..bb231a704e3
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterExcelReader.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import org.eclipse.osee.framework.core.util.XResultData;
+import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.ExcelSaxHandler;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.RowProcessor;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OrcsWriterExcelReader {
+
+ private OwCollector collector;
+ private final XResultData result;
+
+ public OrcsWriterExcelReader(XResultData result) {
+ this.result = result;
+ }
+
+ public void run(URI source) throws SAXException, IOException, UnsupportedEncodingException, MalformedURLException {
+ collector = new OwCollector();
+ XMLReader xmlReader = XMLReaderFactory.createXMLReader();
+ xmlReader.setContentHandler(new ExcelSaxHandler(new ExcelRowProcessor(collector, result), true));
+ InputStreamReader inputStreamReader = new InputStreamReader(source.toURL().openStream(), "UTF-8");
+ xmlReader.parse(new InputSource(inputStreamReader));
+ inputStreamReader.close();
+ }
+
+ public void run(InputStream source) throws SAXException, IOException, UnsupportedEncodingException, MalformedURLException {
+ collector = new OwCollector();
+ XMLReader xmlReader = XMLReaderFactory.createXMLReader();
+ xmlReader.setContentHandler(new ExcelSaxHandler(new ExcelRowProcessor(collector, result), true));
+ xmlReader.parse(new InputSource(source));
+ }
+
+ private static final class ExcelRowProcessor implements RowProcessor {
+
+ private final OwCollector collector;
+ private OrcsWriterSheetProcessorForCreateUpdate createSheet;
+ private OrcsWriterSheetProcessorForSettings settingsSheet;
+ private String sheetName = "";
+ private final XResultData result;
+ private OrcsWriterSheetProcessorForCreateUpdate updateSheet;
+ private OrcsWriterSheetProcessorForDelete deleteSheet;
+
+ public ExcelRowProcessor(OwCollector collector, XResultData result) {
+ this.collector = collector;
+ this.result = result;
+ }
+
+ @Override
+ public void detectedRowAndColumnCounts(int rowCount, int columnCount) {
+ // do nothing
+ }
+
+ @Override
+ public void foundStartOfWorksheet(String sheetName) throws OseeCoreException {
+ System.out.println("Processing Sheet " + sheetName);
+ this.sheetName = sheetName;
+ if (sheetName.equals(OrcsWriterUtil.CREATE_SHEET_NAME)) {
+ createSheet = new OrcsWriterSheetProcessorForCreateUpdate(collector, result, true);
+ return;
+ } else if (sheetName.equals(OrcsWriterUtil.UPDATE_SHEET_NAME)) {
+ updateSheet = new OrcsWriterSheetProcessorForCreateUpdate(collector, result, false);
+ return;
+ } else if (sheetName.equals(OrcsWriterUtil.INSTRUCTIONS_AND_SETTINGS_SHEET_NAME)) {
+ settingsSheet = new OrcsWriterSheetProcessorForSettings(collector, result);
+ return;
+ } else if (sheetName.equals(OrcsWriterUtil.DELETE_SHEET_NAME)) {
+ deleteSheet = new OrcsWriterSheetProcessorForDelete(collector, result);
+ return;
+ }
+ }
+
+ @Override
+ public void processCommentRow(String[] row) {
+ // do nothing
+ }
+
+ @Override
+ public void processEmptyRow() {
+ // do nothing
+ }
+
+ @Override
+ public void processHeaderRow(String[] headerRow) {
+ if (isCreateSheet()) {
+ createSheet.processHeaderRow(headerRow);
+ } else if (isUpdateSheet()) {
+ updateSheet.processHeaderRow(headerRow);
+ } else if (isDeleteSheet()) {
+ deleteSheet.processHeaderRow(headerRow);
+ }
+ }
+
+ private boolean isCreateSheet() {
+ return sheetName.equals(OrcsWriterUtil.CREATE_SHEET_NAME);
+ }
+
+ private boolean isDeleteSheet() {
+ return sheetName.equals(OrcsWriterUtil.DELETE_SHEET_NAME);
+ }
+
+ private boolean isUpdateSheet() {
+ return sheetName.equals(OrcsWriterUtil.UPDATE_SHEET_NAME);
+ }
+
+ private boolean isSettingsSheet() {
+ return sheetName.equals(OrcsWriterUtil.INSTRUCTIONS_AND_SETTINGS_SHEET_NAME);
+ }
+
+ @Override
+ public void processRow(String[] row) throws OseeCoreException {
+ if (isCreateSheet()) {
+ processCreateSheetRow(row);
+ } else if (isUpdateSheet()) {
+ processUpdateSheetRow(row);
+ } else if (isSettingsSheet()) {
+ settingsSheet.processRow(row);
+ } else if (isDeleteSheet()) {
+ processDeleteSheetRow(row);
+ }
+ }
+
+ private void processDeleteSheetRow(String[] row) {
+ deleteSheet.processRow(row);
+ }
+
+ private void processUpdateSheetRow(String[] row) {
+ updateSheet.processRow(row);
+ }
+
+ private void processCreateSheetRow(String[] row) {
+ createSheet.processRow(row);
+ }
+
+ @Override
+ public void reachedEndOfWorksheet() {
+ // do nothing
+ }
+
+ }
+
+ public OwCollector getCollector() {
+ return collector;
+ }
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterFactory.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterFactory.java
new file mode 100644
index 00000000000..05e2692db16
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterFactory.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifact;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttribute;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttributeType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwBranch;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelation;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelationType;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OrcsWriterFactory {
+
+ private final Pattern relTypePattern = Pattern.compile("\\[(.*)\\]-\\[(.*)\\]-\\[(.*)\\]-\\[(.*)\\]");
+ private final Pattern nameIdPattern = Pattern.compile("\\[(.*)\\]-\\[(.*)\\]");
+ private final Map<Long, OwArtifactType> uuidToArtType = new HashMap<>();
+ private final Map<Long, OwArtifactToken> uuidToArtToken = new HashMap<>();
+ private final OwCollector collector;
+
+ public OrcsWriterFactory(OwCollector collector) {
+ this.collector = collector;
+ }
+
+ public OwArtifactToken getOrCreateToken(String value) {
+ OwArtifactToken token = null;
+ Matcher matcher = nameIdPattern.matcher(value);
+ if (matcher.find()) {
+ Long uuid = Long.valueOf(matcher.group(2));
+ token = uuidToArtToken.get(uuid);
+ if (token == null) {
+ token = new OwArtifactToken();
+ token.setName(matcher.group(1));
+ token.setUuid(uuid);
+ token.setData(value);
+ collector.getArtTokens().add(token);
+ uuidToArtToken.put(uuid, token);
+ }
+ }
+ return token;
+ }
+
+ public OwArtifactType getOrCreateArtifactType(String value) {
+ OwArtifactType artType = null;
+ Matcher matcher = nameIdPattern.matcher(value);
+ if (matcher.find()) {
+ Long uuid = Long.valueOf(matcher.group(2));
+ artType = uuidToArtType.get(uuid);
+ if (artType == null) {
+ artType = new OwArtifactType();
+ artType.setName(matcher.group(1));
+ artType.setUuid(uuid);
+ artType.setData(value);
+ collector.getArtTypes().add(artType);
+ uuidToArtType.put(uuid, artType);
+ }
+ }
+ return artType;
+ }
+
+ public OwAttribute getOrCreateAttribute(OwArtifact artifact, OwAttributeType attrType) {
+ OwAttribute attr = null;
+ for (OwAttribute fAttr : artifact.getAttributes()) {
+ if (fAttr.getType().getUuid() > 0L && fAttr.getType().getUuid().equals(attrType.getUuid())) {
+ attr = fAttr;
+ break;
+ } else if (fAttr.getType().getName().equals(attrType.getName())) {
+ attr = fAttr;
+ break;
+ }
+ }
+ if (attr == null) {
+ attr = new OwAttribute();
+ attr.setType(attrType);
+ artifact.getAttributes().add(attr);
+ }
+ return attr;
+ }
+
+ public OwRelation createRelationType(OwRelationType relType, String value) {
+ OwArtifactToken token = getOrCreateToken(value);
+ OwRelation relation = new OwRelation();
+ relation.setData(value);
+ relation.setArtToken(token);
+ relation.setType(relType);
+ return relation;
+ }
+
+ public void processRelationType(OwRelationType relType, String value) {
+ relType.setData(value);
+ Matcher matcher = relTypePattern.matcher(value);
+ if (matcher.find()) {
+ relType.setName(matcher.group(1));
+ relType.setSideName(matcher.group(2));
+ relType.setSideA(matcher.group(3).contains("Side A"));
+ relType.setUuid(Long.valueOf(matcher.group(4)));
+ }
+ }
+
+ public void processAttributeType(OwAttributeType attrType, String value) {
+ attrType.setData(value);
+ Matcher matcher = nameIdPattern.matcher(value);
+ if (matcher.find()) {
+ attrType.setName(matcher.group(1));
+ attrType.setUuid(Long.valueOf(matcher.group(2)));
+ }
+ // otherwise, assume the value is the attribute name
+ else {
+ attrType.setName(value);
+ }
+ }
+
+ public OwBranch getOrCreateBranchToken(String value) {
+ OwBranch branch = new OwBranch();
+ Matcher matcher = nameIdPattern.matcher(value);
+ if (matcher.find()) {
+ branch.setName(matcher.group(1));
+ branch.setUuid(Long.valueOf(matcher.group(2)));
+ }
+ return branch;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForCreateUpdate.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForCreateUpdate.java
new file mode 100644
index 00000000000..60111b50593
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForCreateUpdate.java
@@ -0,0 +1,233 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
+import org.eclipse.osee.framework.core.util.XResultData;
+import org.eclipse.osee.framework.jdk.core.type.OseeArgumentException;
+import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.type.OseeStateException;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.RowProcessor;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifact;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttribute;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttributeType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelation;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelationType;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OrcsWriterSheetProcessorForCreateUpdate implements RowProcessor {
+
+ private final OwCollector collector;
+ private final Map<Integer, OwAttributeType> columnToAttributeType = new HashMap<>();
+ private final Map<Integer, OwRelationType> columnToRelationType = new HashMap<>();
+ private Integer artTokenColumn = null, nameColumn = null;
+ private int rowCount = 0;
+ private final OrcsWriterFactory factory;
+ private final boolean createSheet;
+
+ public OrcsWriterSheetProcessorForCreateUpdate(OwCollector collector, XResultData result, boolean createSheet) {
+ this.collector = collector;
+ this.createSheet = createSheet;
+ this.factory = new OrcsWriterFactory(collector);
+ }
+
+ @Override
+ public void detectedRowAndColumnCounts(int rowCount, int columnCount) {
+ // do nothing
+ }
+
+ @Override
+ public void foundStartOfWorksheet(String sheetName) throws OseeCoreException {
+ // do nothing
+ }
+
+ @Override
+ public void processCommentRow(String[] row) {
+ // do nothing
+ }
+
+ @Override
+ public void processEmptyRow() {
+ // do nothing
+ }
+
+ boolean isAttributeColumn(int x) {
+ return columnToAttributeType.containsKey(x);
+ }
+
+ boolean isRelationColumn(int x) {
+ return columnToRelationType.containsKey(x);
+ }
+
+ @Override
+ public void processHeaderRow(String[] headerRow) {
+ rowCount++;
+ for (int colCount = 0; colCount < headerRow.length; colCount++) {
+ String value = headerRow[colCount];
+ if (value != null) {
+ if (value.toLowerCase().equals("name")) {
+ if (nameColumn != null) {
+ throw new OseeArgumentException("Can't have multiple Name columns on %s sheet", getSheetName());
+ }
+ nameColumn = colCount;
+ } else if (value.toLowerCase().equals("attribute")) {
+ OwAttributeType attrType = new OwAttributeType();
+ attrType.setData("Column " + colCount);
+ columnToAttributeType.put(colCount, attrType);
+ collector.getAttrTypes().add(attrType);
+ } else if (value.toLowerCase().equals("relation")) {
+ OwRelationType relType = new OwRelationType();
+ relType.setData("Column " + colCount);
+ columnToRelationType.put(colCount, relType);
+ collector.getRelTypes().add(relType);
+ } else if (value.toLowerCase().startsWith("new art token")) {
+ if (artTokenColumn != null) {
+ throw new OseeArgumentException("Can't have multiple \"New Art Token\" columns on %s sheet",
+ getSheetName());
+ }
+ artTokenColumn = colCount;
+ }
+ }
+ }
+ if (isCreateSheet() && nameColumn == null) {
+ throw new OseeArgumentException("Name column must be present on %s sheet", getSheetName());
+ }
+ if (isCreateSheet() && artTokenColumn == null) {
+ throw new OseeArgumentException("Artifact Token column must be present on %s sheet", getSheetName());
+ }
+ if (!isCreateSheet() && artTokenColumn != null) {
+ throw new OseeArgumentException("Artifact Token column should NOT be present on %s sheet", getSheetName());
+ }
+ }
+
+ private boolean isCreateSheet() {
+ return createSheet;
+ }
+
+ private String getSheetName() {
+ return createSheet ? "CREATE" : "UPDATE";
+ }
+
+ @Override
+ public void processRow(String[] row) throws OseeCoreException {
+ rowCount++;
+ OwArtifact artifact = new OwArtifact();
+ artifact.setData("Row " + rowCount);
+ if (rowCount == 2) {
+ for (int colCount = 0; colCount < row.length; colCount++) {
+ if (isAttributeColumn(colCount)) {
+ OwAttributeType attrType = columnToAttributeType.get(colCount);
+ String value = row[colCount];
+ factory.processAttributeType(attrType, value);
+ } else if (isRelationColumn(colCount)) {
+ OwRelationType relType = columnToRelationType.get(colCount);
+ String value = row[colCount];
+ factory.processRelationType(relType, value);
+ }
+ }
+ } else if (rowCount > 2) {
+ if (createSheet) {
+ collector.getCreate().add(artifact);
+ } else {
+ collector.getUpdate().add(artifact);
+ }
+ for (int colCount = 0; colCount < row.length; colCount++) {
+ if (colCount == 0) {
+ String value = row[0];
+ // First column of create sheet is artifact type token
+ if (createSheet) {
+ if (!Strings.isValid(value)) {
+ throw new OseeArgumentException(
+ "First column must contain artifact type. row number on CREATE sheet" + rowCount);
+ } else {
+ OwArtifactType artType = factory.getOrCreateArtifactType(value);
+ if (artType == null) {
+ throw new OseeArgumentException(
+ "Invalid Artifact Type row %d value [%s]; expected [name]-[uuid] on CREATE sheet", rowCount,
+ value);
+ }
+ artifact.setType(artType);
+ }
+ }
+ // Else, first column of update sheet is artifact token
+ else {
+ if (!Strings.isValid(value)) {
+ throw new OseeArgumentException(
+ "First column must contain artifact token. row number %d on UPDATE sheet", rowCount);
+ } else {
+ OwArtifactToken artifactToken = factory.getOrCreateToken(value);
+ if (artifactToken == null) {
+ throw new OseeArgumentException(
+ "Invalid Artifact Token row %d value [%s]; expected [name]-[uuid] on UPDATE sheet", rowCount,
+ value);
+ }
+ artifact.setUuid(artifactToken.getUuid());
+ }
+ }
+ }
+ if (isCreateSheet() && artTokenColumn == colCount) {
+ String value = row[colCount];
+ if (Strings.isValid(value)) {
+ OwArtifactToken token = factory.getOrCreateToken(value);
+ if (token.getUuid() > 0L) {
+ artifact.setUuid(token.getUuid());
+ } else {
+ throw new OseeStateException("Unexpected string [%s] at %s; expected [name]-[uuid] on sheet",
+ value, OrcsWriterUtil.getRowColumnStr(colCount, colCount), getSheetName());
+ }
+ }
+ }
+ if (nameColumn == colCount) {
+ String value = row[colCount];
+ if (Strings.isValid(value)) {
+ artifact.setName(value);
+ } else {
+ throw new OseeStateException("Unexpected Name [%s] at %s on %s sheet", value,
+ OrcsWriterUtil.getRowColumnStr(colCount, colCount), getSheetName());
+ }
+ }
+ if (isAttributeColumn(colCount)) {
+ OwAttributeType attrType = columnToAttributeType.get(colCount);
+ if (attrType.getName().equals(CoreAttributeTypes.Name.getName())) {
+ throw new OseeStateException("Name cannot also exist as attribute column at %s on %s sheet",
+ OrcsWriterUtil.getRowColumnStr(rowCount, colCount), getSheetName());
+ }
+ String value = row[colCount];
+ OwAttribute attr = factory.getOrCreateAttribute(artifact, attrType);
+ attr.getValues().add(value);
+ attr.setData(OrcsWriterUtil.getData(rowCount, colCount, attr.getData()));
+ } else if (isRelationColumn(colCount)) {
+ OwRelationType relType = columnToRelationType.get(colCount);
+ String value = row[colCount];
+ if (Strings.isValid(value)) {
+ OwRelation relation = factory.createRelationType(relType, value);
+ relation.setData(OrcsWriterUtil.getData(rowCount, colCount, relation.getData()));
+ artifact.getRelations().add(relation);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void reachedEndOfWorksheet() {
+ // do nothing
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForDelete.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForDelete.java
new file mode 100644
index 00000000000..9f51472d1fb
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForDelete.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+import org.eclipse.osee.framework.core.util.XResultData;
+import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.RowProcessor;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OrcsWriterSheetProcessorForDelete implements RowProcessor {
+
+ private final OwCollector collector;
+ private int rowCount = 0;
+ private final OrcsWriterFactory factory;
+ private final XResultData result;
+
+ public OrcsWriterSheetProcessorForDelete(OwCollector collector, XResultData result) {
+ this.collector = collector;
+ this.result = result;
+ this.factory = new OrcsWriterFactory(collector);
+ }
+
+ @Override
+ public void detectedRowAndColumnCounts(int rowCount, int columnCount) {
+ // do nothing
+ }
+
+ @Override
+ public void foundStartOfWorksheet(String sheetName) throws OseeCoreException {
+ // do nothing
+ }
+
+ @Override
+ public void processCommentRow(String[] row) {
+ // do nothing
+ }
+
+ @Override
+ public void processEmptyRow() {
+ // do nothing
+ }
+
+ @Override
+ public void processHeaderRow(String[] headerRow) {
+ rowCount++;
+ if (headerRow.length > 1) {
+ result.warning("More than 1 column found in DELETE sheet. Only column 1 is processed");
+ }
+ }
+
+ @Override
+ public void processRow(String[] row) throws OseeCoreException {
+ rowCount++;
+ OwArtifactToken artifact = null;
+ String value = row[0];
+ if (Strings.isNumeric(value)) {
+ artifact = new OwArtifactToken();
+ artifact.setUuid(Long.valueOf(value));
+ artifact.setName("unknown");
+ }
+ if (Strings.isValid(value)) {
+ artifact = factory.getOrCreateToken(value);
+ }
+ if (artifact != null) {
+ artifact.setData("Row " + rowCount);
+ collector.getDelete().add(artifact);
+ }
+ }
+
+ @Override
+ public void reachedEndOfWorksheet() {
+ // do nothing
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForSettings.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForSettings.java
new file mode 100644
index 00000000000..72847369854
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterSheetProcessorForSettings.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+import org.eclipse.osee.framework.core.util.XResultData;
+import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.jdk.core.util.io.xml.RowProcessor;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwBranch;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OrcsWriterSheetProcessorForSettings implements RowProcessor {
+
+ private final OwCollector collector;
+ private int rowCount = 0;
+ private final OrcsWriterFactory factory;
+
+ public OrcsWriterSheetProcessorForSettings(OwCollector collector, XResultData result) {
+ this.collector = collector;
+ this.factory = new OrcsWriterFactory(collector);
+ }
+
+ @Override
+ public void detectedRowAndColumnCounts(int rowCount, int columnCount) {
+ // do nothing
+ }
+
+ @Override
+ public void foundStartOfWorksheet(String sheetName) throws OseeCoreException {
+ // do nothing
+ }
+
+ @Override
+ public void processCommentRow(String[] row) {
+ // do nothing
+ }
+
+ @Override
+ public void processEmptyRow() {
+ // do nothing
+ }
+
+ @Override
+ public void processHeaderRow(String[] headerRow) {
+ // do nothing
+ }
+
+ @Override
+ public void processRow(String[] row) throws OseeCoreException {
+ rowCount++;
+ for (int colCount = 0; colCount < row.length; colCount++) {
+ if (colCount == 0) {
+ String key = row[colCount];
+ if (key.equals(OrcsWriterUtil.BRANCH_TOKEN_SETTING)) {
+ String branchTokenStr = row[1];
+ if (Strings.isValid(branchTokenStr)) {
+ OwBranch branchToken = factory.getOrCreateBranchToken(branchTokenStr);
+ collector.setBranch(branchToken);
+ branchToken.setData(OrcsWriterUtil.getData(rowCount, colCount, branchTokenStr));
+ }
+ } else if (key.equals(OrcsWriterUtil.AS_USER_ID_SETTING)) {
+ String userId = row[1];
+ if (Strings.isValid(userId)) {
+ collector.setAsUserId(userId);
+ }
+ } else if (key.equals(OrcsWriterUtil.PERSIST_COMMENT_SETTING)) {
+ String persistComment = row[1];
+ if (Strings.isValid(persistComment)) {
+ collector.setPersistComment(persistComment);
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void reachedEndOfWorksheet() {
+ // do nothing
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterStreamingOutput.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterStreamingOutput.java
index e38bf40e1a1..48a6eed5a66 100644
--- a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterStreamingOutput.java
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterStreamingOutput.java
@@ -15,7 +15,7 @@ import java.io.OutputStreamWriter;
import java.io.Writer;
import javax.ws.rs.core.StreamingOutput;
import org.eclipse.osee.orcs.OrcsApi;
-import org.eclipse.osee.orcs.writer.model.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
/**
* @author Donald G. Dunne
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterUtil.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterUtil.java
new file mode 100644
index 00000000000..c8ec7b0432d
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterUtil.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class OrcsWriterUtil {
+
+ public static final String PERSIST_COMMENT_SETTING = "PERSIST COMMENT";
+ public static final String AS_USER_ID_SETTING = "AS USER ID";
+ public static final String BRANCH_TOKEN_SETTING = "BRANCH TOKEN";
+ public static final String INSTRUCTIONS_AND_SETTINGS_SHEET_NAME = "Instructions and Settings";
+ public static final String CREATE_SHEET_NAME = "CREATE";
+ public static final String DELETE_SHEET_NAME = "DELETE";
+ public static final String UPDATE_SHEET_NAME = "UPDATE";
+
+ private OrcsWriterUtil() {
+ // Utility Class
+ }
+
+ public static String getData(int rowCount, int colCount, String data) {
+ if (data != null) {
+ data += ", ";
+ }
+ data += getRowColumnStr(rowCount, colCount);
+ return data;
+ }
+
+ public static String getRowColumnStr(int rowCount, int colCount) {
+ return "row " + rowCount + ", column " + (colCount + 1);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterWorkbookGenerator.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterWorkbookGenerator.java
index 747765b7c5f..bb498fb2cef 100644
--- a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterWorkbookGenerator.java
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OrcsWriterWorkbookGenerator.java
@@ -22,14 +22,12 @@ import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.io.xml.ExcelXmlWriter;
import org.eclipse.osee.framework.jdk.core.util.io.xml.ISheetWriter;
import org.eclipse.osee.orcs.OrcsApi;
-import org.eclipse.osee.orcs.writer.OrcsWriterUtil;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactToken;
-import org.eclipse.osee.orcs.writer.model.reader.OwArtifactType;
-import org.eclipse.osee.orcs.writer.model.reader.OwAttributeType;
-import org.eclipse.osee.orcs.writer.model.reader.OwBranch;
-import org.eclipse.osee.orcs.writer.model.reader.OwCollector;
-import org.eclipse.osee.orcs.writer.model.reader.OwFactory;
-import org.eclipse.osee.orcs.writer.model.reader.OwRelationType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttributeType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwBranch;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwCollector;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelationType;
/**
* @author Donald G. Dunne
diff --git a/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OwFactory.java b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OwFactory.java
new file mode 100644
index 00000000000..5eb01a3f0ca
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.rest/src/org/eclipse/osee/orcs/rest/internal/writer/OwFactory.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.orcs.rest.internal.writer;
+
+/**
+ * Donald G. Dunne
+ */
+import org.eclipse.osee.framework.core.data.IArtifactToken;
+import org.eclipse.osee.framework.core.data.IArtifactType;
+import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.data.IOseeBranch;
+import org.eclipse.osee.framework.core.data.IRelationType;
+import org.eclipse.osee.framework.core.data.IRelationTypeSide;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.orcs.OrcsApi;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifact;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactToken;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwArtifactType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttribute;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwAttributeType;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwBranch;
+import org.eclipse.osee.orcs.rest.model.writer.reader.OwRelationType;
+
+public class OwFactory {
+
+ public static OwArtifactType createArtifactType(IArtifactType artType) {
+ String typeStr = String.format("[%s]-[%d]", artType.getName(), artType.getGuid());
+ OwArtifactType type = new OwArtifactType();
+ type.setUuid(artType.getGuid());
+ type.setName(artType.getName());
+ type.setData(typeStr);
+ return type;
+ }
+
+ public static OwAttributeType createAttributeType(IAttributeType attrType) {
+ String typeStr = String.format("[%s]-[%d]", attrType.getName(), attrType.getGuid());
+ OwAttributeType type = new OwAttributeType();
+ type.setUuid(attrType.getGuid());
+ type.setName(attrType.getName());
+ type.setData(typeStr);
+ return type;
+ }
+
+ public static OwArtifactToken createArtifactToken(IArtifactToken token) {
+ return createArtifactToken(token.getName(), token.getUuid());
+ }
+
+ public static OwArtifactToken createArtifactToken(String name, long uuid) {
+ String tokenStr = String.format("[%s]-[%d]", name, uuid);
+ OwArtifactToken owToken = new OwArtifactToken();
+ owToken.setUuid(uuid);
+ owToken.setName(name);
+ owToken.setData(tokenStr);
+ return owToken;
+ }
+
+ public static OwRelationType createRelationType(IRelationType relType, String sideName, boolean sideA) {
+ String sideData =
+ String.format("[%s]-[%s]-[Side %s]-[%d]", relType.getName(), sideName, sideA ? "A" : "B", relType.getGuid());
+ OwRelationType owType = new OwRelationType();
+ owType.setUuid(relType.getGuid());
+ owType.setName(relType.getName());
+ owType.setData(sideData);
+ owType.setSideA(sideA);
+ return owType;
+ }
+
+ public static OwRelationType createRelationType(OrcsApi orcsApi, IRelationTypeSide type) {
+ String sideAName = orcsApi.getOrcsTypes().getRelationTypes().getSideAName(type);
+ OwRelationType owType = OwFactory.createRelationType(type, sideAName, true);
+ return owType;
+ }
+
+ public static OwArtifact createArtifact(IArtifactType artifactType, String name) {
+ return createArtifact(artifactType, name, null);
+ }
+
+ public static OwArtifact createArtifact(IArtifactType artifactType, String name, Long uuid) {
+ OwArtifact artifact = new OwArtifact();
+ artifact.setType(OwFactory.createArtifactType(artifactType));
+ if (uuid == null) {
+ uuid = Lib.generateArtifactIdAsInt();
+ }
+ artifact.setUuid(uuid);
+ artifact.setName(name);
+ return artifact;
+ }
+
+ public static OwAttribute createAttribute(OwArtifact artifact, IAttributeType attrType, Object... values) {
+ OwAttribute attribute = new OwAttribute();
+ attribute.setType(OwFactory.createAttributeType(attrType));
+ for (Object obj : values) {
+ attribute.getValues().add(obj);
+ }
+ artifact.getAttributes().add(attribute);
+ return attribute;
+ }
+
+ public static OwBranch createBranchToken(IOseeBranch branch) {
+ String tokenStr = String.format("[%s]-[%d]", branch.getName(), branch.getUuid());
+ OwBranch owBranch = new OwBranch();
+ owBranch.setData(tokenStr);
+ owBranch.setName(branch.getName());
+ owBranch.setUuid(branch.getUuid());
+ return owBranch;
+ }
+}

Back to the top