tmf: Add element to its parent's children automatically and remove setChildren
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tue, 4 Nov 2014 21:59:08 +0000 (16:59 -0500)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Mon, 10 Nov 2014 15:27:00 +0000 (10:27 -0500)
Also, add a few useful setters.

Change-Id: I8ae7cff34d9a066d0ce9d17ef555e5539a3dc55c
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/35916
Tested-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/36177

org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/wizards/tracepkg/TracePackageElement.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/wizards/tracepkg/TracePackageFilesElement.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/wizards/tracepkg/TracePackageTraceElement.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/wizards/tracepkg/importexport/ExportTracePackageWizardPage.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/wizards/tracepkg/importexport/ManifestReader.java
org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/wizards/tracepkg/importexport/TracePackageExtractManifestOperation.java

index 1f6810ce1d4022939e5b080fd40274aae999eaf9..9fb0fcb06f2d84c08de3b74dfca89666eb6587f6 100644 (file)
@@ -24,8 +24,8 @@ import org.eclipse.ui.model.WorkbenchAdapter;
  * @author Marc-Andre Laperle
  */
 public abstract class TracePackageElement extends WorkbenchAdapter {
-    private TracePackageElement[] fChildren;
-    private final TracePackageElement fParent;
+    private final List<TracePackageElement> fChildren;
+    private TracePackageElement fParent;
     private boolean fEnabled;
     private boolean fChecked;
     private boolean fVisible;
@@ -39,7 +39,32 @@ public abstract class TracePackageElement extends WorkbenchAdapter {
         fParent = parent;
         fEnabled = true;
         fVisible = true;
-        fChildren = new TracePackageElement[0];
+        fChildren = new ArrayList<>();
+        if (parent != null) {
+            parent.addChild(this);
+        }
+    }
+
+    /**
+     * Add a child to the element.
+     *
+     * @param child
+     *            the element to add as a child
+     */
+    public void addChild(TracePackageElement child) {
+        child.setParent(this);
+        fChildren.add(child);
+    }
+
+    /**
+     * Remove a child from the element.
+     *
+     * @param child
+     *            the child to remove
+     */
+    public void removeChild(TracePackageElement child) {
+        fChildren.remove(child);
+        child.setParent(null);
     }
 
     /**
@@ -49,6 +74,10 @@ public abstract class TracePackageElement extends WorkbenchAdapter {
         return fParent;
     }
 
+    private void setParent(TracePackageElement parent) {
+        fParent = parent;
+    }
+
     /**
      * Get the text representation of this element to be displayed in the tree.
      *
@@ -62,7 +91,7 @@ public abstract class TracePackageElement extends WorkbenchAdapter {
      * @return the children of this element
      */
     public TracePackageElement[] getChildren() {
-        return fChildren;
+        return fChildren.toArray(new TracePackageElement[fChildren.size()]);
     }
 
     /**
@@ -80,16 +109,6 @@ public abstract class TracePackageElement extends WorkbenchAdapter {
         return visibleChildren.toArray(new TracePackageElement[0]);
     }
 
-    /**
-     * Set the children of this element
-     *
-     * @param children
-     *            the children of this element
-     */
-    public void setChildren(TracePackageElement[] children) {
-        this.fChildren = children;
-    }
-
     /**
      * Get the total size of the element including its children
      *
index 7863f0ba6a882242cc63effecc2cc5d2e1c0cda1..d5565c3db92afebd80f827c430c48cfe1c7405a5 100644 (file)
@@ -26,7 +26,7 @@ import org.eclipse.tracecompass.internal.tmf.ui.Activator;
 public class TracePackageFilesElement extends TracePackageElement {
 
     private static final String TRACE_ICON_PATH = "icons/elcl16/trace.gif"; //$NON-NLS-1$
-    private final String fFileName;
+    private String fFileName;
     private final IResource fResource;
     private long fSize = -1;
 
@@ -104,4 +104,13 @@ public class TracePackageFilesElement extends TracePackageElement {
         return fFileName;
     }
 
+    /**
+     * Set the file name for this trace file or folder
+     *
+     * @param fileName the file name for this trace file or folder
+     */
+    public void setFileName(String fileName) {
+        fFileName = fileName;
+    }
+
 }
index 2b20c08dad5cba0ec0fabfdb5a14e040ca3900b4..e76878c2777c25d9e3da7b73881adb736730b261 100644 (file)
@@ -27,8 +27,8 @@ import org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceElement;
 public class TracePackageTraceElement extends TracePackageElement {
 
     private final TmfTraceElement fTraceElement;
-    private final String fImportName;
-    private final String fTraceType;
+    private String fImportName;
+    private String fTraceType;
 
     /**
      * Construct an instance associated to a TmfTraceElement. For exporting.
@@ -127,6 +127,15 @@ public class TracePackageTraceElement extends TracePackageElement {
         return fTraceElement;
     }
 
+    /**
+     * Set the import name.
+     *
+     * @param importName the import name.
+     */
+    public void setImportName(String importName) {
+        fImportName = importName;
+    }
+
     /**
      * @return the import name
      */
@@ -141,6 +150,15 @@ public class TracePackageTraceElement extends TracePackageElement {
         return fTraceType;
     }
 
+    /**
+     * Set the trace type of this trace.
+     *
+     * @param traceType the trace type of this trace
+     */
+    public void setTraceType(String traceType) {
+        fTraceType = traceType;
+    }
+
     @Override
     public Image getImage() {
         TmfNavigatorLabelProvider tmfNavigatorLabelProvider = new TmfNavigatorLabelProvider();
index 40663cc1603eb87e337f9e34a99e40ba980dc94d..33c2e3a296e8617de1bc02001868541c69d29565 100644 (file)
@@ -314,7 +314,6 @@ public class ExportTracePackageWizardPage extends AbstractTracePackageWizardPage
             for (IResource res : supplementaryResources) {
                 suppFilesChildren.add(new TracePackageSupplFileElement(res, suppFilesElement));
             }
-            suppFilesElement.setChildren(suppFilesChildren.toArray(new TracePackageElement[] {}));
 
             // Bookmarks
             IFile bookmarksFile = tmfTraceElement.getBookmarksFile();
@@ -331,8 +330,6 @@ public class ExportTracePackageWizardPage extends AbstractTracePackageWizardPage
                 }
             }
 
-            traceElement.setChildren(children.toArray(new TracePackageElement[] {}));
-
             traceElements.add(traceElement);
 
         }
index 429c15a302802cdf30714c034d257fc5a5a9e443..3deb4ba1debe6b81a9691796cdb5674499eea7d2 100644 (file)
@@ -110,7 +110,6 @@ public class ManifestReader {
      *             when an error occurs when parsing
      */
     public static TracePackageElement[] loadElementsFromManifest(InputStream inputStream) throws IOException, SAXException, ParserConfigurationException {
-
         Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputStream);
         Element rootElement = doc.getDocumentElement();
         return loadElementsFromNode(rootElement);
@@ -125,7 +124,6 @@ public class ManifestReader {
      */
     public static TracePackageElement[] loadElementsFromNode(Element rootElement) {
         List<TracePackageElement> packageElements = new ArrayList<>();
-        TracePackageElement element = null;
         NodeList traceElements = rootElement.getElementsByTagName(ITracePackageConstants.TRACE_ELEMENT);
         for (int i = 0; i < traceElements.getLength(); i++) {
             Node traceNode = traceElements.item(i);
@@ -133,39 +131,31 @@ public class ManifestReader {
                 Element traceElement = (Element) traceNode;
                 String traceName = traceElement.getAttribute(ITracePackageConstants.TRACE_NAME_ATTRIB);
                 String traceType = traceElement.getAttribute(ITracePackageConstants.TRACE_TYPE_ATTRIB);
-                element = new TracePackageTraceElement(null, traceName, traceType);
-
-                List<TracePackageElement> children = new ArrayList<>();
+                TracePackageElement element = new TracePackageTraceElement(null, traceName, traceType);
                 NodeList fileElements = traceElement.getElementsByTagName(ITracePackageConstants.TRACE_FILE_ELEMENT);
                 for (int j = 0; j < fileElements.getLength(); j++) {
                     Node fileNode = fileElements.item(j);
                     if (fileNode.getNodeType() == Node.ELEMENT_NODE) {
                         Element fileElement = (Element) fileNode;
                         String fileName = fileElement.getAttribute(ITracePackageConstants.TRACE_FILE_NAME_ATTRIB);
-                        children.add(new TracePackageFilesElement(element, fileName));
+                        new TracePackageFilesElement(element, fileName);
                     }
                 }
 
-                TracePackageSupplFilesElement supplFilesElement = new TracePackageSupplFilesElement(element);
-
                 // Supplementary files
-                List<TracePackageSupplFileElement> suppFiles = new ArrayList<>();
                 NodeList suppFilesElements = traceElement.getElementsByTagName(ITracePackageConstants.SUPPLEMENTARY_FILE_ELEMENT);
-                for (int j = 0; j < suppFilesElements.getLength(); j++) {
-                    Node suppFileNode = suppFilesElements.item(j);
-                    if (suppFileNode.getNodeType() == Node.ELEMENT_NODE) {
-                        Element suppFileElement = (Element) suppFileNode;
-                        String fileName = suppFileElement.getAttribute(ITracePackageConstants.SUPPLEMENTARY_FILE_NAME_ATTRIB);
-                        TracePackageSupplFileElement supplFile = new TracePackageSupplFileElement(fileName, supplFilesElement);
-                        suppFiles.add(supplFile);
+                if (suppFilesElements.getLength() > 0) {
+                    TracePackageSupplFilesElement supplFilesElement = new TracePackageSupplFilesElement(element);
+                    for (int j = 0; j < suppFilesElements.getLength(); j++) {
+                        Node suppFileNode = suppFilesElements.item(j);
+                        if (suppFileNode.getNodeType() == Node.ELEMENT_NODE) {
+                            Element suppFileElement = (Element) suppFileNode;
+                            String fileName = suppFileElement.getAttribute(ITracePackageConstants.SUPPLEMENTARY_FILE_NAME_ATTRIB);
+                            new TracePackageSupplFileElement(fileName, supplFilesElement);
+                        }
                     }
                 }
 
-                if (!suppFiles.isEmpty()) {
-                    supplFilesElement.setChildren(suppFiles.toArray(EMPTY_ARRAY));
-                    children.add(supplFilesElement);
-                }
-
                 // bookmarks
                 List<Map<String, String>> bookmarkAttribs = new ArrayList<>();
                 NodeList bookmarksElements = traceElement.getElementsByTagName(ITracePackageConstants.BOOKMARKS_ELEMENT);
@@ -189,10 +179,9 @@ public class ManifestReader {
                     }
                 }
                 if (!bookmarkAttribs.isEmpty()) {
-                    children.add(new TracePackageBookmarkElement(element, bookmarkAttribs));
+                    new TracePackageBookmarkElement(element, bookmarkAttribs);
                 }
 
-                element.setChildren(children.toArray(EMPTY_ARRAY));
                 packageElements.add(element);
             }
         }
index 47e9700cf59d9406b5ad2e55c024aaea215a34f2..b31e01fc416c630d5f122752ca76cd334740fc40 100644 (file)
@@ -132,7 +132,7 @@ public class TracePackageExtractManifestOperation extends AbstractTracePackageOp
         List<TracePackageElement> packageElements = new ArrayList<>();
         for (String traceFileName : traceFileNames) {
             TracePackageTraceElement traceElement = new TracePackageTraceElement(null, traceFileName, null);
-            traceElement.setChildren(new TracePackageElement[] { new TracePackageFilesElement(traceElement, traceFileName) });
+            new TracePackageFilesElement(traceElement, traceFileName);
             packageElements.add(traceElement);
         }
 
This page took 0.029514 seconds and 5 git commands to generate.