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

View differences:

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