1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.fosstrak.llrp.commander.check;
23
24 import java.io.File;
25 import java.io.FileInputStream;
26 import java.io.FilenameFilter;
27 import java.io.IOException;
28 import java.net.URL;
29
30 import org.apache.log4j.Logger;
31 import org.eclipse.core.resources.IFile;
32 import org.eclipse.core.resources.IFolder;
33 import org.eclipse.core.resources.IProject;
34 import org.eclipse.core.resources.IWorkspaceRoot;
35 import org.eclipse.core.resources.ResourcesPlugin;
36 import org.eclipse.core.runtime.*;
37 import org.fosstrak.llrp.commander.LLRPPlugin;
38 import org.fosstrak.llrp.commander.ResourceCenter;
39
40
41
42
43
44
45
46
47
48 public class CheckEclipseProject extends CheckItem {
49
50
51 private static Logger log = Logger.getLogger(CheckEclipseProject.class);
52
53 public boolean validate() {
54
55 this.clearAllReport();
56
57 String projectName = ResourceCenter.getInstance().getEclipseProjectName();
58 IProject project = ResourceCenter.getInstance().getEclipseProject();
59
60 if (null == project) {
61 addReportItem("Eclipse Project '" + projectName + "' doesn't exist.", CATEGORY_ERROR);
62
63
64 return false;
65 }
66
67 try {
68
69 if (project.exists() && !project.isOpen()) {
70 project.open(null);
71 }
72
73 IFolder msgFolder = project
74 .getFolder(ResourceCenter.REPO_SUBFOLDER);
75 IFolder draftFolder = project
76 .getFolder(ResourceCenter.DRAFT_SUBFOLDER);
77
78 if (!msgFolder.exists()) {
79 addReportItem("Subfolder '" + ResourceCenter.REPO_SUBFOLDER
80 + "' doesn't exist.", CATEGORY_ERROR);
81 }
82
83 if (!draftFolder.exists()) {
84 addReportItem("Subfolder '" + ResourceCenter.DRAFT_SUBFOLDER
85 + "' doesn't exist.", CATEGORY_ERROR);
86 }
87
88 if (!msgFolder.exists() || !draftFolder.exists()) {
89 return false;
90 }
91
92 } catch (Exception e) {
93 return false;
94 }
95
96 return true;
97 }
98
99 public void fix() {
100
101 this.clearAllReport();
102
103 String projectName = ResourceCenter.getInstance().getEclipseProjectName();
104
105 IProgressMonitor progressMonitor = new NullProgressMonitor();
106
107 try {
108 IWorkspaceRoot myWorkspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
109 IProject project = myWorkspaceRoot.getProject(projectName);
110 if (!project.exists()) {
111 project.create(null);
112 project.open(null);
113
114 log.debug("created project " + projectName);
115 addReportItem("Project '" + projectName + "' created.", CATEGORY_FIX);
116 }
117
118 if (project.exists() && !project.isOpen()) {
119 try {
120 project.open(null);
121 } catch (Exception e) {
122
123
124 project.delete(true, null);
125 project.create(null);
126 project.open(null);
127 }
128 log.debug("opened project " + projectName);
129 }
130
131
132 IFolder msgFolder = project.getFolder(ResourceCenter.REPO_SUBFOLDER);
133 if (!msgFolder.exists()) {
134 msgFolder.create(true, false, progressMonitor);
135
136 addReportItem("Subfolder '" + ResourceCenter.REPO_SUBFOLDER + "' created.", CATEGORY_FIX);
137 }
138
139
140 IFolder draftFolder = project.getFolder(ResourceCenter.DRAFT_SUBFOLDER);
141 if (!draftFolder.exists()) {
142 draftFolder.create(true, true, progressMonitor);
143
144 addReportItem("Subfolder '" + ResourceCenter.DRAFT_SUBFOLDER + "' created.", CATEGORY_FIX);
145
146 URL bundleRoot = LLRPPlugin.getDefault().getBundle().getEntry("/sampleXML");
147
148 try {
149 URL fileURL = FileLocator.toFileURL(bundleRoot);
150 File folderSource = new File(fileURL.getPath());
151
152 FilenameFilter filter = new FilenameFilter() {
153 public boolean accept(File dir, String name) {
154 return name.endsWith(".llrp");
155 }
156 };
157
158 String[] sampleFileNames = folderSource.list(filter);
159
160 for (int i = 0; i < sampleFileNames.length; i ++) {
161 String urlFile = fileURL.getPath() + "/" + sampleFileNames[i];
162 File sampleFile = new File(urlFile);
163
164 IFile file = project.getFile(ResourceCenter.DRAFT_SUBFOLDER + "/" + sampleFileNames[i]);
165
166 file.create(new FileInputStream(sampleFile), true, progressMonitor);
167 }
168
169 } catch (IOException ioe) {
170 ioe.printStackTrace();
171 } catch (Exception e) {
172 e.printStackTrace();
173 }
174
175 log.debug("fixed project");
176 }
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219 } catch (CoreException coe) {
220 coe.printStackTrace();
221 }
222 }
223
224 }