Revision 37599 branches/v2_0_0_prep/extensions/org.gvsig.installer/org.gvsig.installer.lib/org.gvsig.installer.lib.impl/src/main/java/org/gvsig/installer/lib/impl/creation/DefaultMakePluginPackageService.java
DefaultMakePluginPackageService.java | ||
---|---|---|
80 | 80 |
private InstallPackageProviderServices installerProviderServices = null; |
81 | 81 |
|
82 | 82 |
public DefaultMakePluginPackageService(InstallerManager manager, |
83 |
File pluginsDirectory) |
|
84 |
throws MakePluginPackageServiceException { |
|
83 |
File pluginsDirectory) throws MakePluginPackageServiceException { |
|
85 | 84 |
super(); |
86 | 85 |
this.manager = manager; |
87 | 86 |
installerInfos = new ArrayList<PackageInfo>(); |
... | ... | |
93 | 92 |
|
94 | 93 |
private void initialize(File pluginsDirectory) |
95 | 94 |
throws MakePluginPackageServiceException { |
96 |
if (!pluginsDirectory.exists()) { |
|
97 |
pluginsDirectory.mkdirs(); |
|
98 |
LOG.info("Plugins folder created: {}", pluginsDirectory); |
|
99 |
} else |
|
100 |
if (!pluginsDirectory.isDirectory()) { |
|
95 |
if (!pluginsDirectory.exists()) { |
|
96 |
pluginsDirectory.mkdirs(); |
|
97 |
LOG.info("Plugins folder created: {}", pluginsDirectory); |
|
98 |
} else if (!pluginsDirectory.isDirectory()) { |
|
101 | 99 |
throw new MakePluginPackageServiceException( |
102 |
"The plugins directory exists and not is a directory");
|
|
100 |
"The plugins directory exists and not is a directory");
|
|
103 | 101 |
} |
104 | 102 |
|
105 | 103 |
this.pluginsDirectory = pluginsDirectory; |
... | ... | |
148 | 146 |
loadCopiedFiles(files[i], filesDirectory, packageInfo); |
149 | 147 |
} |
150 | 148 |
} else { |
151 |
// Removing the plugin prefix |
|
152 |
|
|
153 |
String pluginFileName = file.getAbsolutePath().substring( |
|
154 |
filesDirectory.getAbsolutePath().length(), |
|
155 |
file.getAbsolutePath().length()); |
|
149 |
// Removing the plugin prefix |
|
156 | 150 |
|
157 |
// Adding the root directory |
|
158 |
File pluginFile = new File(pluginsDirectory.getParentFile() |
|
159 |
.getParentFile().getAbsolutePath() |
|
160 |
+ pluginFileName); |
|
151 |
String pluginFileName = file.getAbsolutePath().substring( |
|
152 |
filesDirectory.getAbsolutePath().length(), |
|
153 |
file.getAbsolutePath().length()); |
|
161 | 154 |
|
162 |
packageInfo.getFilesToCopy().add(pluginFile); |
|
155 |
// Adding the root directory |
|
156 |
File pluginFile = new File(pluginsDirectory.getParentFile() |
|
157 |
.getParentFile().getAbsolutePath() |
|
158 |
+ pluginFileName); |
|
159 |
|
|
160 |
packageInfo.getFilesToCopy().add(pluginFile); |
|
163 | 161 |
} |
164 | 162 |
} |
165 | 163 |
|
... | ... | |
176 | 174 |
packageStream); |
177 | 175 |
} |
178 | 176 |
|
179 |
public void preparePackage(PackageInfo packageInfo)
|
|
180 |
throws MakePluginPackageServiceException {
|
|
177 |
public void preparePackage(PackageInfo packageInfo)
|
|
178 |
throws MakePluginPackageServiceException {
|
|
181 | 179 |
|
182 |
LOG.debug("Preparing a package set of the package info: \n{0}", |
|
183 |
packageInfo); |
|
184 |
// Write the package.info file |
|
185 |
writePackageInfo(packageInfo); |
|
186 |
|
|
187 |
if (packageInfo.getAntScript() != null) { |
|
188 |
// Create the ant file |
|
189 |
writeAntFile(packageInfo); |
|
190 |
|
|
191 |
// Copy the selected files |
|
192 |
writeSelectedFiles(packageInfo); |
|
193 |
} |
|
194 |
} |
|
180 |
LOG.debug("Preparing a package set of the package info: \n{0}", |
|
181 |
packageInfo); |
|
182 |
// Write the package.info file |
|
183 |
writePackageInfo(packageInfo); |
|
195 | 184 |
|
185 |
if (packageInfo.getAntScript() != null) { |
|
186 |
// Create the ant file |
|
187 |
writeAntFile(packageInfo); |
|
188 |
|
|
189 |
// Copy the selected files |
|
190 |
writeSelectedFiles(packageInfo); |
|
191 |
} |
|
192 |
} |
|
193 |
|
|
196 | 194 |
public void createPackage(PackageInfo packageInfo, |
197 | 195 |
OutputStream packageStream) |
198 | 196 |
throws MakePluginPackageServiceException { |
... | ... | |
202 | 200 |
getAbsolutePluginPackageDirectory(packageInfo), packageStream); |
203 | 201 |
} |
204 | 202 |
|
205 |
public void createPackageIndex(PackageInfo packageInfo, |
|
206 |
OutputStream packageStream) throws MakePluginPackageServiceException { |
|
207 |
LOG.debug("Creating package index of the package info: \n{0}", |
|
208 |
packageInfo); |
|
203 |
public void createPackageIndex(PackageInfo packageInfo, |
|
204 |
OutputStream packageStream) |
|
205 |
throws MakePluginPackageServiceException { |
|
206 |
LOG.debug("Creating package index of the package info: \n{0}", |
|
207 |
packageInfo); |
|
209 | 208 |
|
210 |
installerProviderServices.compressPackageIndex(
|
|
211 |
getAbsolutePluginPackageDirectory(packageInfo), packageStream);
|
|
212 |
}
|
|
209 |
installerProviderServices.compressPackageIndex(
|
|
210 |
getAbsolutePluginPackageDirectory(packageInfo), packageStream);
|
|
211 |
}
|
|
213 | 212 |
|
214 | 213 |
private void writePackageInfo(PackageInfo packageInfo) |
215 | 214 |
throws MakePluginPackageServiceException { |
... | ... | |
222 | 221 |
installerProviderServices.writePackageInfo(folder, packageInfo); |
223 | 222 |
} |
224 | 223 |
|
225 |
public void writePackageInfoForIndex(PackageInfo packageInfo, File folder)
|
|
226 |
throws MakePluginPackageServiceException {
|
|
227 |
installerProviderServices.writePackageInfoForIndex(folder, packageInfo);
|
|
228 |
}
|
|
224 |
public void writePackageInfoForIndex(PackageInfo packageInfo, File folder)
|
|
225 |
throws MakePluginPackageServiceException {
|
|
226 |
installerProviderServices.writePackageInfoForIndex(folder, packageInfo);
|
|
227 |
}
|
|
229 | 228 |
|
230 |
private void createInstallDirInPluginDir(PackageInfo packageInfo) throws MakePluginPackageServiceException { |
|
231 |
File pluginDirectory; |
|
232 |
pluginDirectory = getAbsolutePluginPackageDirectory(packageInfo); |
|
233 |
File installdir = new File(pluginDirectory, "install"); |
|
234 |
installdir.mkdir(); |
|
229 |
private void createInstallDirInPluginDir(PackageInfo packageInfo) |
|
230 |
throws MakePluginPackageServiceException { |
|
231 |
File pluginDirectory; |
|
232 |
pluginDirectory = getAbsolutePluginPackageDirectory(packageInfo); |
|
233 |
File installdir = new File(pluginDirectory, "install"); |
|
234 |
installdir.mkdir(); |
|
235 | 235 |
|
236 |
}
|
|
237 |
|
|
236 |
}
|
|
237 |
|
|
238 | 238 |
private void writeAntFile(PackageInfo packageInfo) |
239 | 239 |
throws MakePluginPackageServiceException { |
240 | 240 |
try { |
241 |
createInstallDirInPluginDir(packageInfo);
|
|
241 |
createInstallDirInPluginDir(packageInfo);
|
|
242 | 242 |
ByteArrayInputStream in = new ByteArrayInputStream(packageInfo |
243 | 243 |
.getAntScript().getBytes()); |
244 | 244 |
OutputStream out = new FileOutputStream( |
... | ... | |
259 | 259 |
|
260 | 260 |
} |
261 | 261 |
|
262 |
private void writeSelectedFiles(PackageInfo packageInfo) |
|
263 |
throws MakePluginPackageServiceException { |
|
264 |
try { |
|
265 |
createInstallDirInPluginDir(packageInfo); |
|
266 |
String copiedFilesDirectoryName = |
|
267 |
getAbsoulteCopiedFilesDirectoryName(packageInfo); |
|
262 |
private void writeSelectedFiles(PackageInfo packageInfo) |
|
263 |
throws MakePluginPackageServiceException { |
|
264 |
try { |
|
265 |
createInstallDirInPluginDir(packageInfo); |
|
266 |
String copiedFilesDirectoryName = getAbsoulteCopiedFilesDirectoryName(packageInfo); |
|
268 | 267 |
|
269 |
// Deleting the previous files folder
|
|
270 |
File copiedFilesDirectoryfile = new File(copiedFilesDirectoryName);
|
|
271 |
deleteDirectory(copiedFilesDirectoryfile);
|
|
268 |
// Deleting the previous files folder
|
|
269 |
File copiedFilesDirectoryfile = new File(copiedFilesDirectoryName);
|
|
270 |
deleteDirectory(copiedFilesDirectoryfile);
|
|
272 | 271 |
|
273 |
// It works if the plugins directory is in the folder
|
|
274 |
// "gvSIG/extensiones"
|
|
275 |
String applicationDirectory =
|
|
276 |
pluginsDirectory.getParentFile().getParent();
|
|
272 |
// It works if the plugins directory is in the folder
|
|
273 |
// "gvSIG/extensiones"
|
|
274 |
String applicationDirectory = pluginsDirectory.getParentFile()
|
|
275 |
.getParent();
|
|
277 | 276 |
|
278 |
List<File> files = packageInfo.getFilesToCopy();
|
|
277 |
List<File> files = packageInfo.getFilesToCopy();
|
|
279 | 278 |
|
280 |
for (int i = 0; i < files.size(); i++) {
|
|
281 |
String sourceFile = files.get(i).getAbsolutePath();
|
|
279 |
for (int i = 0; i < files.size(); i++) {
|
|
280 |
String sourceFile = files.get(i).getAbsolutePath();
|
|
282 | 281 |
|
283 |
// Create the final path |
|
284 |
String destFile = |
|
285 |
sourceFile.substring(applicationDirectory.length(), |
|
286 |
sourceFile.length()); |
|
287 |
destFile = copiedFilesDirectoryName + destFile; |
|
282 |
// Create the final path |
|
283 |
String destFile = sourceFile.substring(applicationDirectory |
|
284 |
.length(), sourceFile.length()); |
|
285 |
destFile = copiedFilesDirectoryName + destFile; |
|
288 | 286 |
|
289 |
// Copy the files
|
|
290 |
copy(new File(sourceFile), new File(destFile));
|
|
291 |
}
|
|
292 |
} catch (IOException e) {
|
|
293 |
throw new MakePluginPackageServiceException(
|
|
294 |
"Exception copying the files", e);
|
|
295 |
}
|
|
296 |
}
|
|
287 |
// Copy the files
|
|
288 |
copy(new File(sourceFile), new File(destFile));
|
|
289 |
}
|
|
290 |
} catch (IOException e) {
|
|
291 |
throw new MakePluginPackageServiceException(
|
|
292 |
"Exception copying the files", e);
|
|
293 |
}
|
|
294 |
}
|
|
297 | 295 |
|
298 | 296 |
static public boolean deleteDirectory(File path) { |
299 | 297 |
if (path.exists()) { |
... | ... | |
341 | 339 |
return directories.get(packageInfo); |
342 | 340 |
} |
343 | 341 |
|
344 |
// private String getCopiedFilesDirectoryName(PackageInfo packageInfo) |
|
345 |
// throws MakePluginPackageServiceException { |
|
346 |
// return getPluginPackageDirectory(packageInfo) + File.separator + "install" + File.separator |
|
347 |
// + COPIED_FILES_DIRECTORY_NAME; |
|
348 |
// } |
|
342 |
// private String getCopiedFilesDirectoryName(PackageInfo packageInfo) |
|
343 |
// throws MakePluginPackageServiceException { |
|
344 |
// return getPluginPackageDirectory(packageInfo) + File.separator + |
|
345 |
// "install" + File.separator |
|
346 |
// + COPIED_FILES_DIRECTORY_NAME; |
|
347 |
// } |
|
349 | 348 |
|
350 | 349 |
private File getCopiedFilesDirectory(File pluginDirectory) |
351 | 350 |
throws MakePluginPackageServiceException { |
352 |
return new File(pluginDirectory.getAbsolutePath() + File.separator + "install" + File.separator
|
|
353 |
+ COPIED_FILES_DIRECTORY_NAME); |
|
351 |
return new File(pluginDirectory.getAbsolutePath() + File.separator |
|
352 |
+ "install" + File.separator + COPIED_FILES_DIRECTORY_NAME);
|
|
354 | 353 |
} |
355 | 354 |
|
356 | 355 |
private String getAbsoulteCopiedFilesDirectoryName(PackageInfo packageInfo) |
357 | 356 |
throws MakePluginPackageServiceException { |
358 | 357 |
return getAbsolutePluginPackageDirectory(packageInfo).getAbsolutePath() |
359 |
+ File.separator + "install" + File.separator + COPIED_FILES_DIRECTORY_NAME; |
|
358 |
+ File.separator + "install" + File.separator |
|
359 |
+ COPIED_FILES_DIRECTORY_NAME; |
|
360 | 360 |
} |
361 | 361 |
|
362 | 362 |
private String getAntFileName(PackageInfo packageInfo) |
363 | 363 |
throws MakePluginPackageServiceException { |
364 |
return getPluginPackageDirectory(packageInfo) + File.separator + "install" + File.separator
|
|
365 |
+ ANT_FILE_NAME; |
|
364 |
return getPluginPackageDirectory(packageInfo) + File.separator |
|
365 |
+ "install" + File.separator + ANT_FILE_NAME;
|
|
366 | 366 |
} |
367 | 367 |
|
368 | 368 |
private File getAntFile(File pluginDirectory) |
369 | 369 |
throws MakePluginPackageServiceException { |
370 |
return new File(pluginDirectory.getAbsolutePath() + File.separator + "install" + File.separator
|
|
371 |
+ ANT_FILE_NAME); |
|
370 |
return new File(pluginDirectory.getAbsolutePath() + File.separator |
|
371 |
+ "install" + File.separator + ANT_FILE_NAME);
|
|
372 | 372 |
} |
373 | 373 |
|
374 | 374 |
private File getAbsoluteAntFile(PackageInfo packageInfo) |
375 | 375 |
throws MakePluginPackageServiceException { |
376 |
return new File(pluginsDirectory.getAbsolutePath() + File.separator
|
|
376 |
return new File(pluginsDirectory.getAbsolutePath() + File.separator |
|
377 | 377 |
+ getAntFileName(packageInfo)); |
378 | 378 |
} |
379 | 379 |
|
... | ... | |
420 | 420 |
public String getDefaultAntScript() |
421 | 421 |
throws MakePluginPackageServiceException { |
422 | 422 |
try { |
423 |
URL resource = getClass().getResource(ANT_FILE_NAME);
|
|
424 |
return readUrlAsString(resource);
|
|
423 |
URL resource = getClass().getResource(ANT_FILE_NAME);
|
|
424 |
return readUrlAsString(resource);
|
|
425 | 425 |
} catch (IOException e) { |
426 | 426 |
throw new MakePluginPackageServiceException( |
427 | 427 |
"Impossible to read the default ant file", e); |
428 | 428 |
} |
429 | 429 |
} |
430 | 430 |
|
431 |
private String readUrlAsString(URL url) throws java.io.IOException { |
|
432 |
URLConnection urlConnection = url.openConnection(); |
|
433 |
InputStream inputStream = urlConnection.getInputStream(); |
|
434 |
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); |
|
435 |
StringBuffer fileData = new StringBuffer(1000); |
|
436 |
String line = bufferedReader.readLine(); |
|
437 |
while (line != null) { |
|
438 |
fileData.append(line+"\n"); |
|
439 |
line = bufferedReader.readLine(); |
|
440 |
} |
|
441 |
bufferedReader.close(); |
|
442 |
return fileData.toString(); |
|
443 |
} |
|
431 |
private String readUrlAsString(URL url) throws java.io.IOException { |
|
432 |
URLConnection urlConnection = url.openConnection(); |
|
433 |
InputStream inputStream = urlConnection.getInputStream(); |
|
434 |
BufferedReader bufferedReader = new BufferedReader( |
|
435 |
new InputStreamReader(inputStream)); |
|
436 |
StringBuffer fileData = new StringBuffer(1000); |
|
437 |
String line = bufferedReader.readLine(); |
|
438 |
while (line != null) { |
|
439 |
fileData.append(line + "\n"); |
|
440 |
line = bufferedReader.readLine(); |
|
441 |
} |
|
442 |
bufferedReader.close(); |
|
443 |
return fileData.toString(); |
|
444 |
} |
|
444 | 445 |
|
445 |
private String readFileAsString(String filePath) throws java.io.IOException {
|
|
446 |
StringBuffer fileData = new StringBuffer(1000);
|
|
447 |
BufferedReader reader = new BufferedReader(new FileReader(filePath));
|
|
448 |
char[] buf = new char[1024];
|
|
449 |
int numRead = 0;
|
|
450 |
while ((numRead = reader.read(buf)) != -1) {
|
|
451 |
String readData = String.valueOf(buf, 0, numRead);
|
|
452 |
fileData.append(readData);
|
|
453 |
buf = new char[1024];
|
|
454 |
}
|
|
455 |
reader.close();
|
|
456 |
return fileData.toString();
|
|
457 |
}
|
|
446 |
private String readFileAsString(String filePath) throws java.io.IOException {
|
|
447 |
StringBuffer fileData = new StringBuffer(1000);
|
|
448 |
BufferedReader reader = new BufferedReader(new FileReader(filePath));
|
|
449 |
char[] buf = new char[1024];
|
|
450 |
int numRead = 0;
|
|
451 |
while ((numRead = reader.read(buf)) != -1) {
|
|
452 |
String readData = String.valueOf(buf, 0, numRead);
|
|
453 |
fileData.append(readData);
|
|
454 |
buf = new char[1024];
|
|
455 |
}
|
|
456 |
reader.close();
|
|
457 |
return fileData.toString();
|
|
458 |
}
|
|
458 | 459 |
|
459 | 460 |
public File getPluginsDirectory() { |
460 | 461 |
return pluginsDirectory; |
... | ... | |
465 | 466 |
return installerInfos.toArray(new PackageInfo[installerInfos.size()]); |
466 | 467 |
} |
467 | 468 |
|
468 |
public File getPluginFolder(PackageInfo packageInfo)
|
|
469 |
throws MakePluginPackageServiceException {
|
|
470 |
return getAbsolutePluginPackageDirectory(packageInfo);
|
|
471 |
}
|
|
469 |
public File getPluginFolder(PackageInfo packageInfo)
|
|
470 |
throws MakePluginPackageServiceException {
|
|
471 |
return getAbsolutePluginPackageDirectory(packageInfo);
|
|
472 |
}
|
|
472 | 473 |
|
473 |
public boolean deleteDir(File folder) {
|
|
474 |
DeleteFile file = new DeleteFile();
|
|
475 |
return file.delete(folder);
|
|
476 |
}
|
|
477 |
|
|
474 |
public boolean deleteDir(File folder) {
|
|
475 |
DeleteFile file = new DeleteFile();
|
|
476 |
return file.delete(folder);
|
|
477 |
}
|
|
478 |
|
|
478 | 479 |
} |
Also available in: Unified diff