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