diff options
author | jphillips | 2011-03-16 17:09:38 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2011-03-16 17:09:38 +0000 |
commit | f3b338adedd04c88ef559cb931983d56a282700b (patch) | |
tree | eaf8b147ac5179da47ad7ddb9629066c49c9489b /plugins/org.eclipse.osee.framework.ui.skynet | |
parent | 2b6aa62f54a591e07738d6932a4ef00cded78de1 (diff) | |
download | org.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')
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() { |