/** * Provides the atomic elements (plugins) this distribution is made of * * @param uri URI of the distribution * @param monitor */ @Override public List<IElement> adapt(URI uri, IProgressMonitor monitor) { List<IElement> elements = new ArrayList<IElement>(); File file = FileUtils.getFile(uri); rootURI = file.toURI(); // A hashmap of bundle symbolic names and the complete line in the // bundles.info file bundlesInfoLines = PluginInfosExtractor.createBundlesInfoMap(uri); // start the containment tree traversal, with null as initial container adapt(file, elements, null); // plugin dependencies for (IElement elem : elements) { if (elem instanceof PluginElement) { PluginElement pe = (PluginElement) elem; DependenciesBuilder.build(pe, elements); } } // in elements we have the result return elements; }
/** * @param configURI * @param feature * @throws IOException */ public static void createConfiguration(URI configURI, List<String> features) throws IOException { File configFile = FileUtils.getFile(configURI); FileUtils.createFile(configFile); BufferedWriter output = new BufferedWriter(new FileWriter(configFile)); for (String feature : features) { output.append(validFeatureName(feature)); output.newLine(); } output.close(); }
/** This method check if the artefact is adaptable with the EclipseAdapter */ @Override public boolean isAdaptable(URI uri, IProgressMonitor monitor) { File file = FileUtils.getFile(uri); if (file.isDirectory()) { File pluginsFolder = new File(file.getAbsolutePath() + "/plugins"); if (pluginsFolder.exists() && pluginsFolder.isDirectory()) { return true; } else { return false; } } return false; }
public static void exportFeatureModel(URI featureModelURI, FeatureModel fm) { File fmFile = FileUtils.getFile(featureModelURI); try { FileUtils.createFile(fmFile); } catch (IOException e) { e.printStackTrace(); } save(fm, fmFile); // Refresh in case of workspace IFile file = WorkbenchUtils.getIFileFromFile(fmFile); if (file != null) { WorkbenchUtils.refreshIResource(file); } }
@Override public void construct(URI uri, List<IElement> elements, IProgressMonitor monitor) { boolean constructBundlesInfo = false; String bundlesInfoContent = "#version=1\n"; for (IElement element : elements) { // check user cancel for each element if (!monitor.isCanceled()) { // provide user info monitor.subTask(element.getText()); if (element instanceof FileElement) { FileElement fileElement = (FileElement) element; if (fileElement .getRelativeURI() .toString() .equals(PluginInfosExtractor.BUNDLESINFO_RELATIVEPATH)) { constructBundlesInfo = true; } try { // Create parent folders structure URI newDirectoryURI = uri.resolve(fileElement.getRelativeURI()); File destinationFile = FileUtils.getFile(newDirectoryURI); if (destinationFile != null && !destinationFile.getParentFile().exists()) { destinationFile.getParentFile().mkdirs(); } if (destinationFile != null && !destinationFile.exists()) { // Copy the content. In the case of a folder, its // content is not copied File file = FileUtils.getFile(fileElement.getUri()); Files.copy( file.toPath(), destinationFile.toPath(), StandardCopyOption.REPLACE_EXISTING); } } catch (IOException e) { e.printStackTrace(); } } // prepare the bundles.info configuration file // just in case we need to construct it if (element instanceof PluginElement) { PluginElement pluginElement = (PluginElement) element; String line = pluginElement.getBundleInfoLine(); if (line != null) { String[] lineFields = line.split(","); bundlesInfoContent += pluginElement.getSymbName() + ","; bundlesInfoContent += pluginElement.getVersion() + ","; bundlesInfoContent += pluginElement.getRelativeURI() + ","; bundlesInfoContent += lineFields[3] + ","; bundlesInfoContent += lineFields[4] + "\n"; } } } monitor.worked(1); } // Replace bundles.info content if (constructBundlesInfo) { try { File tmpFile = File.createTempFile("tempBundles", "info"); FileUtils.appendToFile(tmpFile, bundlesInfoContent); File file = FileUtils.getFile(uri); File bundlesInfo = new File(file.getAbsolutePath() + "/" + PluginInfosExtractor.BUNDLESINFO_RELATIVEPATH); FileUtils.replace(bundlesInfo, tmpFile); tmpFile.deleteOnExit(); } catch (Exception e) { e.printStackTrace(); } } }