Search in sources :

Example 1 with PackageInfoStyle

use of bndtools.editor.contents.PackageInfoStyle in project bndtools by bndtools.

the class ExportPatternsListPart method generatePackageInfos.

private static void generatePackageInfos(final Collection<? extends FileVersionTuple> pkgs) throws CoreException {
    final IWorkspaceRunnable wsOperation = new IWorkspaceRunnable() {

        @Override
        public void run(IProgressMonitor monitor) throws CoreException {
            SubMonitor progress = SubMonitor.convert(monitor, pkgs.size());
            MultiStatus status = new MultiStatus(Plugin.PLUGIN_ID, 0, "Errors occurred while creating packageinfo files.", null);
            for (FileVersionTuple pkg : pkgs) {
                IContainer[] locations = ResourcesPlugin.getWorkspace().getRoot().findContainersForLocationURI(pkg.getFile().toURI());
                if (locations != null && locations.length > 0) {
                    IContainer container = locations[0];
                    PackageInfoStyle packageInfoStyle = PackageInfoStyle.calculatePackageInfoStyle(container.getProject());
                    IFile pkgInfoFile = container.getFile(new Path(packageInfoStyle.getFileName()));
                    try {
                        String formattedPackageInfo = packageInfoStyle.format(pkg.getVersion(), pkg.getName());
                        ByteArrayInputStream input = new ByteArrayInputStream(formattedPackageInfo.getBytes("UTF-8"));
                        if (pkgInfoFile.exists())
                            pkgInfoFile.setContents(input, false, true, progress.newChild(1, 0));
                        else
                            pkgInfoFile.create(input, false, progress.newChild(1, 0));
                    } catch (CoreException e) {
                        status.add(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error creating file " + pkgInfoFile.getFullPath(), e));
                    } catch (UnsupportedEncodingException e) {
                    /* just ignore, should never happen */
                    }
                }
            }
            if (!status.isOK())
                throw new CoreException(status);
        }
    };
    IRunnableWithProgress uiOperation = new IRunnableWithProgress() {

        @Override
        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
            try {
                ResourcesPlugin.getWorkspace().run(wsOperation, monitor);
            } catch (CoreException e) {
                throw new InvocationTargetException(e);
            }
        }
    };
    try {
        PlatformUI.getWorkbench().getActiveWorkbenchWindow().run(true, true, uiOperation);
    } catch (InvocationTargetException e) {
        throw (CoreException) e.getTargetException();
    } catch (InterruptedException e) {
    // ignore
    }
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) MultiStatus(org.eclipse.core.runtime.MultiStatus) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) IWorkspaceRunnable(org.eclipse.core.resources.IWorkspaceRunnable) IFile(org.eclipse.core.resources.IFile) SubMonitor(org.eclipse.core.runtime.SubMonitor) MultiStatus(org.eclipse.core.runtime.MultiStatus) UnsupportedEncodingException(java.io.UnsupportedEncodingException) InvocationTargetException(java.lang.reflect.InvocationTargetException) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) FileVersionTuple(bndtools.editor.contents.PackageInfoDialog.FileVersionTuple) CoreException(org.eclipse.core.runtime.CoreException) ByteArrayInputStream(java.io.ByteArrayInputStream) IContainer(org.eclipse.core.resources.IContainer) PackageInfoStyle(bndtools.editor.contents.PackageInfoStyle)

Example 2 with PackageInfoStyle

use of bndtools.editor.contents.PackageInfoStyle in project bndtools by bndtools.

the class ExportPatternsListPart method findSourcePackagesWithoutPackageInfo.

private Collection<FileVersionTuple> findSourcePackagesWithoutPackageInfo(Collection<? extends ExportedPackage> pkgs) throws Exception {
    Map<String, FileVersionTuple> result = new HashMap<String, FileVersionTuple>();
    Project project = getProject();
    if (project != null) {
        Collection<File> sourceDirs = project.getSourcePath();
        for (File sourceDir : sourceDirs) {
            for (ExportedPackage pkg : pkgs) {
                if (!result.containsKey(pkg.getName())) {
                    File pkgDir = new File(sourceDir, pkg.getName().replace('.', '/'));
                    if (pkgDir.isDirectory()) {
                        PackageInfoStyle existingPkgInfo = PackageInfoStyle.findExisting(pkgDir);
                        if (existingPkgInfo == null)
                            result.put(pkg.getName(), new FileVersionTuple(pkg.getName(), pkgDir));
                    }
                }
            }
        }
    }
    return result.values();
}
Also used : IJavaProject(org.eclipse.jdt.core.IJavaProject) IProject(org.eclipse.core.resources.IProject) Project(aQute.bnd.build.Project) FileVersionTuple(bndtools.editor.contents.PackageInfoDialog.FileVersionTuple) HashMap(java.util.HashMap) ExportedPackage(aQute.bnd.build.model.clauses.ExportedPackage) PackageInfoStyle(bndtools.editor.contents.PackageInfoStyle) IFile(org.eclipse.core.resources.IFile) File(java.io.File)

Aggregations

FileVersionTuple (bndtools.editor.contents.PackageInfoDialog.FileVersionTuple)2 PackageInfoStyle (bndtools.editor.contents.PackageInfoStyle)2 IFile (org.eclipse.core.resources.IFile)2 Project (aQute.bnd.build.Project)1 ExportedPackage (aQute.bnd.build.model.clauses.ExportedPackage)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 File (java.io.File)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 HashMap (java.util.HashMap)1 IContainer (org.eclipse.core.resources.IContainer)1 IProject (org.eclipse.core.resources.IProject)1 IWorkspaceRunnable (org.eclipse.core.resources.IWorkspaceRunnable)1 CoreException (org.eclipse.core.runtime.CoreException)1 IPath (org.eclipse.core.runtime.IPath)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 IStatus (org.eclipse.core.runtime.IStatus)1 MultiStatus (org.eclipse.core.runtime.MultiStatus)1 Path (org.eclipse.core.runtime.Path)1 Status (org.eclipse.core.runtime.Status)1