tmf: Update Javadoc throughout tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / model / TmfProjectModelElement.java
1 /*******************************************************************************
2 * Copyright (c) 2010, 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 * Bernd Hufmann - Added supplementary files/folder handling
12 *******************************************************************************/
13
14 package org.eclipse.linuxtools.tmf.ui.project.model;
15
16 import java.net.URI;
17 import java.util.ArrayList;
18 import java.util.List;
19
20 import org.eclipse.core.resources.IFolder;
21 import org.eclipse.core.resources.IProject;
22 import org.eclipse.core.resources.IResource;
23 import org.eclipse.core.resources.IResourceChangeEvent;
24 import org.eclipse.core.resources.IResourceChangeListener;
25 import org.eclipse.core.resources.ResourcesPlugin;
26 import org.eclipse.core.runtime.CoreException;
27 import org.eclipse.core.runtime.IPath;
28 import org.eclipse.core.runtime.NullProgressMonitor;
29 import org.eclipse.linuxtools.internal.tmf.ui.Activator;
30 import org.eclipse.linuxtools.tmf.core.TmfCommonConstants;
31
32 /**
33 * The implementation of the base TMF project model element. It provides default implementation
34 * of the <code>ITmfProjectModelElement</code> interface.
35 * <p>
36 * @version 1.0
37 * @author Francois Chouinard
38 */
39 public abstract class TmfProjectModelElement implements ITmfProjectModelElement, IResourceChangeListener {
40
41 // ------------------------------------------------------------------------
42 // Attributes
43 // ------------------------------------------------------------------------
44
45 private final String fName;
46 /**
47 * The project model element resource.
48 */
49 protected final IResource fResource;
50 /**
51 * The project model resource location (URI)
52 */
53 protected final URI fLocation;
54 /**
55 * The project model path of a resource.
56 */
57 protected final IPath fPath;
58 private final ITmfProjectModelElement fParent;
59 /**
60 * The list of children elements.
61 */
62 protected final List<ITmfProjectModelElement> fChildren;
63
64 // ------------------------------------------------------------------------
65 // Constructor
66 // ------------------------------------------------------------------------
67 /**
68 * Constructor.
69 *
70 * Creates a base project model element.
71 * @param name The name of the element.
72 * @param resource The element resource.
73 * @param parent The parent model element.
74 */
75 protected TmfProjectModelElement(String name, IResource resource, ITmfProjectModelElement parent) {
76 fName = name;
77 fResource = resource;
78 fPath = resource.getFullPath();
79 fLocation = resource.getLocationURI();
80 fParent = parent;
81 fChildren = new ArrayList<ITmfProjectModelElement>();
82 ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
83 }
84
85 // ------------------------------------------------------------------------
86 // ITmfProjectModelElement
87 // ------------------------------------------------------------------------
88 /*
89 * (non-Javadoc)
90 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#getName()
91 */
92 @Override
93 public String getName() {
94 return fName;
95 }
96 /*
97 * (non-Javadoc)
98 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#getResource()
99 */
100 @Override
101 public IResource getResource() {
102 return fResource;
103 }
104 /*
105 * (non-Javadoc)
106 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#getPath()
107 */
108 @Override
109 public IPath getPath() {
110 return fPath;
111 }
112 /*
113 * (non-Javadoc)
114 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#getLocation()
115 */
116 @Override
117 public URI getLocation() {
118 return fLocation;
119 }
120 /*
121 * (non-Javadoc)
122 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#getParent()
123 */
124 @Override
125 public ITmfProjectModelElement getParent() {
126 return fParent;
127 }
128 /*
129 * (non-Javadoc)
130 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#hasChildren()
131 */
132 @Override
133 public boolean hasChildren() {
134 return fChildren.size() > 0;
135 }
136 /*
137 * (non-Javadoc)
138 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#getChildren()
139 */
140 @Override
141 public List<ITmfProjectModelElement> getChildren() {
142 return fChildren;
143 }
144 /*
145 * (non-Javadoc)
146 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#addChild(org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement)
147 */
148 @Override
149 public void addChild(ITmfProjectModelElement child) {
150 fChildren.add(child);
151 }
152 /*
153 * (non-Javadoc)
154 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#removeChild(org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement)
155 */
156 @Override
157 public void removeChild(ITmfProjectModelElement child) {
158 fChildren.remove(child);
159 refresh();
160 }
161 /*
162 * (non-Javadoc)
163 * @see org.eclipse.linuxtools.tmf.ui.project.model.ITmfProjectModelElement#refresh()
164 */
165 @Override
166 public void refresh() {
167 // Do nothing by default: sub-classes override this on an "as-needed"
168 // basis.
169 }
170
171 // ------------------------------------------------------------------------
172 // IResourceChangeListener
173 // ------------------------------------------------------------------------
174 /*
175 * (non-Javadoc)
176 * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
177 */
178 @Override
179 public void resourceChanged(IResourceChangeEvent event) {
180 // Do nothing by default: sub-classes override this on an "as-needed"
181 // basis.
182 }
183
184 // ------------------------------------------------------------------------
185 // Object
186 // ------------------------------------------------------------------------
187 /*
188 * (non-Javadoc)
189 * @see java.lang.Object#hashCode()
190 */
191 @Override
192 public int hashCode() {
193 final int prime = 31;
194 int result = 1;
195 result = prime * result + ((fLocation == null) ? 0 : fLocation.hashCode());
196 result = prime * result + ((fName == null) ? 0 : fName.hashCode());
197 result = prime * result + ((fPath == null) ? 0 : fPath.hashCode());
198 return result;
199 }
200 /*
201 * (non-Javadoc)
202 * @see java.lang.Object#equals(java.lang.Object)
203 */
204 @Override
205 public boolean equals(Object other) {
206 if (this == other) {
207 return true;
208 }
209 if (other == null) {
210 return false;
211 }
212 if (!(other instanceof TmfProjectModelElement)) {
213 return false;
214 }
215 TmfProjectModelElement element = (TmfProjectModelElement) other;
216 return element.fName.equals(fName) && element.fLocation.equals(fLocation);
217 }
218
219 /**
220 * Returns the trace specific supplementary directory under the project's supplementary folder.
221 * The folder will be created if it doesn't exist.
222 *
223 * @param supplFoldername - folder name.
224 * @return returns the trace specific supplementary directory
225 */
226 public IFolder getTraceSupplementaryFolder(String supplFoldername) {
227 IFolder supplFolderParent = getSupplementaryFolderParent();
228 return supplFolderParent.getFolder(supplFoldername);
229 }
230
231 /**
232 * Returns the supplementary folder for this project
233 *
234 * @return the supplementary folder for this project
235 */
236 public IFolder getSupplementaryFolderParent() {
237 TmfProjectElement project = getProject();
238 IProject projectResource = project.getResource();
239 IFolder supplFolderParent = projectResource.getFolder(TmfCommonConstants.TRACE_SUPPLEMENATARY_FOLDER_NAME);
240
241 if (!supplFolderParent.exists()) {
242 try {
243 supplFolderParent.create(true, true, new NullProgressMonitor());
244 } catch (CoreException e) {
245 Activator.getDefault().logError("Error creating project specific supplementary folder " + supplFolderParent, e); //$NON-NLS-1$
246 }
247 }
248 return supplFolderParent;
249 }
250 }
This page took 0.044884 seconds and 6 git commands to generate.