Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjphillips2011-03-16 17:09:38 +0000
committerRyan D. Brooks2011-03-16 17:09:38 +0000
commitf3b338adedd04c88ef559cb931983d56a282700b (patch)
treeeaf8b147ac5179da47ad7ddb9629066c49c9489b /plugins/org.eclipse.osee.framework.ui.skynet
parent2b6aa62f54a591e07738d6932a4ef00cded78de1 (diff)
downloadorg.eclipse.osee-f3b338adedd04c88ef559cb931983d56a282700b.tar.gz
org.eclipse.osee-f3b338adedd04c88ef559cb931983d56a282700b.tar.xz
org.eclipse.osee-f3b338adedd04c88ef559cb931983d56a282700b.zip
refactor: Made data objects to contain extraxted elements for update artifact operation
Diffstat (limited to 'plugins/org.eclipse.osee.framework.ui.skynet')
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactOperation.java26
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/IElementExtractor.java2
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordExtractorData.java27
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordImageArtifactElementExtractor.java32
4 files changed, 47 insertions, 40 deletions
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactOperation.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactOperation.java
index 43de2005e0b..140d3a3b257 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactOperation.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/UpdateArtifactOperation.java
@@ -33,6 +33,7 @@ import org.eclipse.osee.framework.core.model.Branch;
import org.eclipse.osee.framework.core.operation.AbstractOperation;
import org.eclipse.osee.framework.jdk.core.util.Collections;
import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.UserManager;
@@ -45,12 +46,12 @@ import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
import org.eclipse.osee.framework.ui.skynet.preferences.MsWordPreferencePage;
import org.eclipse.osee.framework.ui.skynet.render.artifactElement.IElementExtractor;
import org.eclipse.osee.framework.ui.skynet.render.artifactElement.MergeEditArtifactElementExtractor;
+import org.eclipse.osee.framework.ui.skynet.render.artifactElement.WordExtractorData;
import org.eclipse.osee.framework.ui.skynet.render.artifactElement.WordImageArtifactElementExtractor;
import org.eclipse.osee.framework.ui.skynet.render.word.WordMLProducer;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
import org.xml.sax.SAXException;
/**
@@ -95,15 +96,15 @@ public class UpdateArtifactOperation extends AbstractOperation {
private void wordArtifactUpdate(IElementExtractor elementExtractor) throws OseeCoreException, DOMException, ParserConfigurationException, SAXException, IOException {
List<Artifact> deletedArtifacts = new LinkedList<Artifact>();
- Collection<Element> artElements = elementExtractor.extractElements();
+ Collection<WordExtractorData> extractorDatas = elementExtractor.extractElements();
Element oleDataElement = elementExtractor.getOleDataElement();
try {
- boolean singleArtifact = artElements.size() == 1;
+ boolean singleArtifact = extractorDatas.size() == 1;
boolean containsOleData = false;
- for (Element artElement : artElements) {
+ for (WordExtractorData extractorData : extractorDatas) {
- Artifact artifact = getArtifact(artElement);
+ Artifact artifact = getArtifact(extractorData);
if (artifact.isDeleted()) {
deletedArtifacts.add(artifact);
@@ -124,7 +125,7 @@ public class UpdateArtifactOperation extends AbstractOperation {
try {
content =
Lib.inputStreamToString(new ByteArrayInputStream(
- WordTemplateRenderer.getFormattedContent(artElement)));
+ WordTemplateRenderer.getFormattedContent(extractorData.getParentEelement())));
} catch (IOException ex) {
OseeExceptions.wrapAndThrow(ex);
}
@@ -138,7 +139,7 @@ public class UpdateArtifactOperation extends AbstractOperation {
if (singleArtifact || multiSave) {
// TODO Do we need this?
- if (artElement.getNodeName().endsWith("body")) {
+ if (extractorData.getParentEelement().getNodeName().endsWith("body")) {
// This code pulls out all of the stuff after the inserted listnum reordering
// stuff. This needs to be
// here so that we remove unwanted template information from single editing
@@ -164,18 +165,13 @@ public class UpdateArtifactOperation extends AbstractOperation {
String.format("Skipping update - artifact [%s] is read-only", artifact.toString()));
}
- private Artifact getArtifact(Element artifactElement) throws OseeCoreException {
+ private Artifact getArtifact(WordExtractorData artifactElement) throws OseeCoreException {
if (artifacts.size() == 1) {
return artifacts.get(0);
}
- NamedNodeMap attributes = artifactElement.getAttributes();
- for (int i = 0; i < attributes.getLength(); i++) {
- // MS Word has a nasty habit of changing the namespace say from ns0 to ns1, so we must ignore the namespace by using endsWith()
- if (attributes.item(i).getNodeName().endsWith("guid")) {
- String guid = attributes.item(i).getNodeValue();
- return ArtifactQuery.getArtifactFromId(guid, branch, DeletionFlag.INCLUDE_DELETED);
- }
+ if (Strings.isValid(artifactElement.getGuid())) {
+ return ArtifactQuery.getArtifactFromId(artifactElement.getGuid(), branch, DeletionFlag.INCLUDE_DELETED);
}
throw new OseeArgumentException("didn't find the guid attribure in element [%s]", artifactElement);
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/IElementExtractor.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/IElementExtractor.java
index 99e086d3bb6..957ca608182 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/IElementExtractor.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/IElementExtractor.java
@@ -25,5 +25,5 @@ import org.xml.sax.SAXException;
public interface IElementExtractor {
public abstract Element getOleDataElement();
- public abstract Collection<Element> extractElements() throws DOMException, ParserConfigurationException, SAXException, IOException, OseeCoreException;
+ public abstract Collection<WordExtractorData> extractElements() throws DOMException, ParserConfigurationException, SAXException, IOException, OseeCoreException;
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordExtractorData.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordExtractorData.java
index a252205612b..317493f52a4 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordExtractorData.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordExtractorData.java
@@ -5,28 +5,33 @@
*/
package org.eclipse.osee.framework.ui.skynet.render.artifactElement;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
/**
* @author Jeff C. Phillips
*/
public class WordExtractorData {
- StringBuilder textBuilder;
- String outputText;
- String guid;
-
- public WordExtractorData() {
- this.textBuilder = new StringBuilder();
- }
+ private Element parent;
+ private String guid;
public void setGuid(String guid) {
this.guid = guid;
}
- public void addText(String text) {
- textBuilder.append(text);
+ public void addParent(Element parent) {
+ this.parent = parent;
}
- public String getText() {
- return null;
+ public void addChild(Node child) {
+ parent.appendChild(child);
}
+ public String getGuid() {
+ return guid;
+ }
+
+ public Element getParentEelement() {
+ return parent;
+ }
}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordImageArtifactElementExtractor.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordImageArtifactElementExtractor.java
index 8afb7537ef3..b9a315f07cb 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordImageArtifactElementExtractor.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/render/artifactElement/WordImageArtifactElementExtractor.java
@@ -75,7 +75,7 @@ public class WordImageArtifactElementExtractor implements IElementExtractor {
}
@Override
- public List<Element> extractElements() throws DOMException, OseeCoreException {
+ public List<WordExtractorData> extractElements() throws DOMException, OseeCoreException {
OseeLinkBuilder linkBuilder = new OseeLinkBuilder();
return extractElements(linkBuilder);
}
@@ -88,30 +88,33 @@ public class WordImageArtifactElementExtractor implements IElementExtractor {
guid = null;
}
- public List<Element> extractElements(OseeLinkBuilder linkBuilder) throws DOMException, OseeCoreException {
- final List<Element> artifactElements = new LinkedList<Element>();
+ public List<WordExtractorData> extractElements(OseeLinkBuilder linkBuilder) throws DOMException, OseeCoreException {
+ final List<WordExtractorData> artifactElements = new LinkedList<WordExtractorData>();
Element rootElement = document.getDocumentElement();
resetClassFields();
NodeList nodeList = rootElement.getElementsByTagName("*");
- Element newArtifactElement = null;
ParseState parseState = ParseState.LOOKING_FOR_START;
handleImages(rootElement);
oleDataElement = (Element) getElement(rootElement, "w:docOleData");
+ WordExtractorData extractorData = null;
+
int nodeSize = nodeList.getLength();
for (int i = 0; i < nodeSize; i++) {
Element element = (Element) nodeList.item(i);
if (parseState == ParseState.LOOKING_FOR_START && isArtifactEditTag(element, true)) {
parseState = ParseState.LOOKING_FOR_END;
- newArtifactElement = handleStartElement(linkBuilder, artifactElements, element);
+ //This is where we create a new data object for each artifact
+ extractorData = new WordExtractorData();
+ handleStartElement(linkBuilder, artifactElements, element, extractorData);
} else if (parseState == ParseState.LOOKING_FOR_END && isArtifactEditTag(element, false)) {
- parseState = handleEndElement(linkBuilder, newArtifactElement, element);
+ parseState = handleEndElement(linkBuilder, extractorData, element);
} else if (parseState == ParseState.LOOKING_FOR_END && properLevelChild(element)) {
- newArtifactElement.appendChild(element.cloneNode(true));
+ extractorData.addChild(element.cloneNode(true));
}
}
@@ -120,7 +123,7 @@ public class WordImageArtifactElementExtractor implements IElementExtractor {
return artifactElements;
}
- private ParseState handleEndElement(OseeLinkBuilder linkBuilder, Element newArtifactElement, Element element) {
+ private ParseState handleEndElement(OseeLinkBuilder linkBuilder, WordExtractorData extractorData, Element element) {
ParseState parseState;
numberOfEndTags++;
guid = null;
@@ -128,23 +131,26 @@ public class WordImageArtifactElementExtractor implements IElementExtractor {
Node clonedElement = cloneWithoutArtifactEditImage(element, Side.left, linkBuilder);
if (elementHasGrandChildren(clonedElement)) {
- newArtifactElement.appendChild(clonedElement);
+ extractorData.addChild(clonedElement);
}
return parseState;
}
- private Element handleStartElement(OseeLinkBuilder linkBuilder, final List<Element> artifactElements, Element element) {
+ private void handleStartElement(OseeLinkBuilder linkBuilder, final List<WordExtractorData> artifactElements, Element element, WordExtractorData extractorData) {
Element newArtifactElement;
numberOfStartTags++;
newArtifactElement = document.createElement("WordAttribute.WORD_TEMPLATE_CONTENT");
populateNewArtifactElement(newArtifactElement);
- artifactElements.add(newArtifactElement);
+
+ extractorData.setGuid(guid);
+ extractorData.addParent(newArtifactElement);
+
+ artifactElements.add(extractorData);
Node clonedElement = cloneWithoutArtifactEditImage(element, Side.right, linkBuilder);
if (elementHasGrandChildren(clonedElement)) {
- newArtifactElement.appendChild(clonedElement);
+ extractorData.addChild(clonedElement);
}
- return newArtifactElement;
}
private void clearImageIds() {

Back to the top