01: /**
02: *
03: */package newprocess.diagram.cust.annotations.utils;
04:
05: import org.eclipse.core.resources.IFile;
06: import org.eclipse.core.resources.IProject;
07: import org.eclipse.core.resources.ResourcesPlugin;
08: import org.eclipse.core.runtime.Path;
09:
10: /**
11: * This class handles the conversion of stored
12: * Annotations uri and the project path uri
13: * @author sh
14: */
15: public class URIConvertUtil {
16: /**
17: * Constructor
18: */
19: public URIConvertUtil() {
20: }
21:
22: /**
23: * This method checks if the given file is in the same project.
24: * If so return just the relative path without the project prefix.
25: * If the given file is in an other project return the path
26: * with the projects prefix
27: */
28: public String getPathForFile(IFile file, String projectName) {
29: // if the projects are the same ---> fetch the path without project prefix
30: if ((projectName == null) || (projectName.equals("")))
31: return null;
32:
33: if (file.getProject().getName().equals(projectName)) {
34: // get the relative path to the project e.g "/annotations/xyz.doc"
35: return file.getProjectRelativePath().toString();
36: }
37: // if they are not the same --> fetch the path with project prefix
38: else {
39: // get the relative path to the project e.g "/project/annotations/xyz.doc"
40: return file.getFullPath().toString();
41: }
42: }
43:
44: /**
45: * This method is used by the Selection Dialog and
46: * checks if the given file is in the same project.
47: * If so return just the relative path without the project prefix.
48: * If the given file is in an other project return the path
49: * with the projects prefix
50: */
51: public String getPathForFile(IFile file, String projectName,
52: String diaProject) {
53: // if the projects are the same ---> fetch the path without project prefix
54: if (diaProject.equals(projectName)) {
55: // get the relative path to the project e.g "/annotations/xyz.doc"
56: return file.getProjectRelativePath().toString();
57: }
58: // if they are not the same --> fetch the path with project prefix
59: else {
60: // get the relative path to the project e.g "/project/annotations/xyz.doc"
61: return file.getFullPath().toString();
62: }
63: }
64:
65: /**
66: * This method is used to open the file for the given
67: * path. If the file is in the project we can open
68: * the file directly by the given project name. If the
69: * seems to be in an separate project. The first part
70: * of the path specifies in wich project the file is
71: * located.
72: * @param path
73: * @param projectName
74: * @return
75: */
76: public IFile getFileforPath(String path, String projectName) {
77: // get the first segment of the path
78: String projectPrefix = new Path(path).segment(0);
79: // get the project of that path
80: IProject tempProj = ResourcesPlugin.getWorkspace().getRoot()
81: .getProject(projectPrefix);
82:
83: // check if that project exist
84: if (tempProj.exists() && tempProj.isOpen()) {
85: // expect that the file is in an other project
86: // remove the first segment (project name)
87: String extpath = new Path(path).removeFirstSegments(1)
88: .toString();
89: // try to get the file
90: return tempProj.getFile(extpath);
91: } else {
92: // expect that the file is in the same project
93: return ResourcesPlugin.getWorkspace().getRoot().getProject(
94: projectName).getFile(path);
95: }
96: }
97: }
|