Move alltests plugin to the Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / model / TmfProjectElement.java
CommitLineData
12c155f5 1/*******************************************************************************
60ae41e1 2 * Copyright (c) 2011, 2014 Ericsson
f28d404e 3 *
12c155f5
FC
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
f28d404e 8 *
12c155f5
FC
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
f537c959 11 * Patrick Tasse - Refactor resource change listener
12c155f5
FC
12 *******************************************************************************/
13
14package org.eclipse.linuxtools.tmf.ui.project.model;
15
f537c959
PT
16import java.util.HashMap;
17import java.util.Map;
18
19import org.eclipse.core.resources.IFolder;
12c155f5 20import org.eclipse.core.resources.IProject;
12c155f5
FC
21
22/**
f28d404e
AM
23 * The implementation of TMF project model element.
24 *
b544077e
BH
25 * @version 1.0
26 * @author Francois Chouinard
12c155f5
FC
27 */
28public class TmfProjectElement extends TmfProjectModelElement {
29
30 // ------------------------------------------------------------------------
31 // Attributes
32 // ------------------------------------------------------------------------
33
b544077e
BH
34 private TmfTraceFolder fTraceFolder = null;
35 private TmfExperimentFolder fExperimentFolder = null;
12c155f5
FC
36
37 // ------------------------------------------------------------------------
38 // Constructor
39 // ------------------------------------------------------------------------
b544077e
BH
40 /**
41 * Constructor.
f28d404e
AM
42 *
43 * Creates the TMF project model element.
b544077e
BH
44 * @param name The name of the project.
45 * @param project The project reference.
46 * @param parent The parent element
47 */
12c155f5
FC
48 public TmfProjectElement(String name, IProject project, ITmfProjectModelElement parent) {
49 super(name, project, parent);
50 }
51
52 // ------------------------------------------------------------------------
53 // TmfProjectModelElement
54 // ------------------------------------------------------------------------
55
56 @Override
57 public IProject getResource() {
58 return (IProject) fResource;
59 }
60
61 @Override
62 public void addChild(ITmfProjectModelElement child) {
63 super.addChild(child);
64 if (child instanceof TmfTraceFolder) {
65 fTraceFolder = (TmfTraceFolder) child;
66 return;
67 }
68 if (child instanceof TmfExperimentFolder) {
69 fExperimentFolder = (TmfExperimentFolder) child;
70 return;
71 }
72 }
73
74 // ------------------------------------------------------------------------
75 // Accessors
76 // ------------------------------------------------------------------------
11252342 77
b544077e 78 /**
f28d404e 79 * Returns the containing trace folder element.
b544077e
BH
80 * @return the TMF trace folder element.
81 */
12c155f5
FC
82 public TmfTraceFolder getTracesFolder() {
83 return fTraceFolder;
84 }
85
b544077e
BH
86 /**
87 * Returns the containing experiment folder element.
88 * @return the TMF experiment folder element.
89 */
12c155f5
FC
90 public TmfExperimentFolder getExperimentsFolder() {
91 return fExperimentFolder;
92 }
93
94 // ------------------------------------------------------------------------
f537c959 95 // TmfProjectModelElement
12c155f5
FC
96 // ------------------------------------------------------------------------
97
98 @Override
f537c959
PT
99 void refreshChildren() {
100 IProject project = getResource();
12c155f5 101
f537c959
PT
102 // Get the children from the model
103 Map<String, ITmfProjectModelElement> childrenMap = new HashMap<>();
104 for (ITmfProjectModelElement element : getChildren()) {
105 childrenMap.put(element.getResource().getName(), element);
106 }
107
108 // Add the model folder if the corresponding resource exists and is not
109 // accounted for
339d539c 110 IFolder folder = project.getFolder(TmfTracesFolder.TRACES_FOLDER_NAME);
f537c959
PT
111 if (folder != null && folder.exists()) {
112 String name = folder.getName();
113 ITmfProjectModelElement element = childrenMap.get(name);
339d539c 114 if (element instanceof TmfTracesFolder) {
f537c959
PT
115 childrenMap.remove(name);
116 } else {
339d539c 117 element = new TmfTracesFolder(TmfTracesFolder.TRACES_FOLDER_NAME, folder, this);
f537c959 118 }
339d539c 119 ((TmfTracesFolder) element).refreshChildren();
f537c959
PT
120 }
121
122 // Add the model folder if the corresponding resource exists and is not
123 // accounted for
124 folder = project.getFolder(TmfExperimentFolder.EXPER_FOLDER_NAME);
125 if (folder != null && folder.exists()) {
126 String name = folder.getName();
127 ITmfProjectModelElement element = childrenMap.get(name);
128 if (element instanceof TmfExperimentFolder) {
129 childrenMap.remove(name);
130 } else {
131 element = new TmfExperimentFolder(TmfExperimentFolder.EXPER_FOLDER_NAME, folder, this);
132 }
133 ((TmfExperimentFolder) element).refreshChildren();
134 }
135
136 // Cleanup dangling children from the model
137 for (ITmfProjectModelElement danglingChild : childrenMap.values()) {
138 removeChild(danglingChild);
12c155f5
FC
139 }
140 }
141
142 @Override
143 public TmfProjectElement getProject() {
144 return this;
145 }
12c155f5 146}
This page took 0.063494 seconds and 5 git commands to generate.