Search in sources :

Example 11 with IndexedArtifactFile

use of org.eclipse.m2e.core.internal.index.IndexedArtifactFile in project m2e-core by eclipse-m2e.

the class MavenPomSelectionComponent method getSelectedIndexedArtifactFiles.

List<IndexedArtifactFile> getSelectedIndexedArtifactFiles(IStructuredSelection selection) {
    ArrayList<IndexedArtifactFile> result = new ArrayList<>();
    for (Object element : selection.toList()) {
        if (element instanceof IndexedArtifact) {
            // the idea here is that if we have a managed version for something, then the IndexedArtifact shall
            // represent that value..
            IndexedArtifact ia = (IndexedArtifact) element;
            if (managedKeys.contains(getKey(ia))) {
                for (IndexedArtifactFile file : ia.getFiles()) {
                    if (managedKeys.contains(getKey(file))) {
                        result.add(file);
                    }
                }
            } else {
                // 335383 find first non-snasphot version in case none is managed
                boolean added = false;
                for (IndexedArtifactFile file : ia.getFiles()) {
                    // what better means of recognizing snapshots?
                    if (file.version != null && !file.version.endsWith("-SNAPSHOT")) {
                        // $NON-NLS-1$
                        added = true;
                        result.add(file);
                        break;
                    }
                }
                if (!added) {
                    // just in case we deal with all snapshots..
                    result.add(ia.getFiles().iterator().next());
                }
            }
        } else if (element instanceof IndexedArtifactFile) {
            result.add((IndexedArtifactFile) element);
        }
    }
    return result;
}
Also used : IndexedArtifact(org.eclipse.m2e.core.internal.index.IndexedArtifact) IndexedArtifactFile(org.eclipse.m2e.core.internal.index.IndexedArtifactFile) ArrayList(java.util.ArrayList)

Example 12 with IndexedArtifactFile

use of org.eclipse.m2e.core.internal.index.IndexedArtifactFile in project m2e-core by eclipse-m2e.

the class MavenRepositoryView method makeActions.

private void makeActions() {
    collapseAllAction = new Action(Messages.MavenRepositoryView_btnCollapse) {

        @Override
        public void run() {
            viewer.collapseAll();
        }
    };
    collapseAllAction.setToolTipText(Messages.MavenRepositoryView_btnCollapse_tooltip);
    collapseAllAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ELCL_COLLAPSEALL));
    reloadSettings = new Action(Messages.MavenRepositoryView_action_reload) {

        @Override
        public void run() {
            String msg = Messages.MavenRepositoryView_reload_msg;
            boolean res = // 
            MessageDialog.openConfirm(// 
            getViewSite().getShell(), Messages.MavenRepositoryView_reload_title, msg);
            if (res) {
                Job job = new WorkspaceJob(Messages.MavenRepositoryView_job_reloading) {

                    @Override
                    public IStatus runInWorkspace(IProgressMonitor monitor) {
                        try {
                            MavenPlugin.getMaven().reloadSettings();
                        } catch (CoreException ex) {
                            return ex.getStatus();
                        }
                        return Status.OK_STATUS;
                    }
                };
                job.schedule();
            }
        }
    };
    reloadSettings.setImageDescriptor(MavenImages.REFRESH);
    openPomAction = new BaseSelectionListenerAction(Messages.MavenRepositoryView_action_open) {

        @Override
        public void run() {
            ISelection selection = viewer.getSelection();
            Object element = ((IStructuredSelection) selection).getFirstElement();
            if (element instanceof IArtifactNode) {
                Artifact f = ((IArtifactNode) element).getArtifact();
                OpenPomAction.openEditor(f.getGroupId(), f.getArtifactId(), f.getVersion(), null);
            }
        }

        @Override
        protected boolean updateSelection(IStructuredSelection selection) {
            return selection.getFirstElement() instanceof IArtifactNode;
        }
    };
    openPomAction.setToolTipText(Messages.MavenRepositoryView_action_open_tooltip);
    openPomAction.setImageDescriptor(MavenImages.POM);
    copyUrlAction = new BaseSelectionListenerAction(Messages.MavenRepositoryView_action_copy) {

        @Override
        public void run() {
            Object element = getStructuredSelection().getFirstElement();
            String url = null;
            if (element instanceof RepositoryNode) {
                url = ((RepositoryNode) element).getRepositoryUrl();
            } else if (element instanceof IndexedArtifact) {
            // 
            } else if (element instanceof IndexedArtifactFile) {
            // 
            }
            if (url != null) {
                Clipboard clipboard = new Clipboard(Display.getCurrent());
                clipboard.setContents(new String[] { url }, new Transfer[] { TextTransfer.getInstance() });
                clipboard.dispose();
            }
        }

        @Override
        protected boolean updateSelection(IStructuredSelection selection) {
            Object element = selection.getFirstElement();
            return element instanceof RepositoryNode;
        }
    };
    copyUrlAction.setToolTipText(Messages.MavenRepositoryView_action_copy_tooltip);
    copyUrlAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_COPY));
    // materializeProjectAction = new BaseSelectionListenerAction(Messages.MavenRepositoryView_action_materialize) {
    // public void run() {
    // Object element = getStructuredSelection().getFirstElement();
    // if(element instanceof IndexedArtifactFileNode){
    // MaterializeAction action = new MaterializeAction();
    // StructuredSelection sel = new StructuredSelection(new Object[]{((IndexedArtifactFileNode) element).getIndexedArtifactFile()});
    // action.selectionChanged(this, sel);
    // action.run(this);
    // }
    // }
    // 
    // protected boolean updateSelection(IStructuredSelection selection) {
    // return selection.getFirstElement() instanceof IndexedArtifactFileNode;
    // }
    // };
    // materializeProjectAction.setImageDescriptor(MavenImages.IMPORT_PROJECT);
    viewer.addSelectionChangedListener(openPomAction);
    viewer.addSelectionChangedListener(copyUrlAction);
// viewer.addSelectionChangedListener(materializeProjectAction);
}
Also used : IAction(org.eclipse.jface.action.IAction) OpenPomAction(org.eclipse.m2e.core.ui.internal.actions.OpenPomAction) Action(org.eclipse.jface.action.Action) BaseSelectionListenerAction(org.eclipse.ui.actions.BaseSelectionListenerAction) IStatus(org.eclipse.core.runtime.IStatus) IndexedArtifact(org.eclipse.m2e.core.internal.index.IndexedArtifact) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob) IArtifactNode(org.eclipse.m2e.core.ui.internal.views.nodes.IArtifactNode) BaseSelectionListenerAction(org.eclipse.ui.actions.BaseSelectionListenerAction) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) IMavenRepositoryNode(org.eclipse.m2e.core.ui.internal.views.nodes.IMavenRepositoryNode) RepositoryNode(org.eclipse.m2e.core.ui.internal.views.nodes.RepositoryNode) IndexedArtifact(org.eclipse.m2e.core.internal.index.IndexedArtifact) Artifact(org.eclipse.aether.artifact.Artifact) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) IndexedArtifactFile(org.eclipse.m2e.core.internal.index.IndexedArtifactFile) ISelection(org.eclipse.jface.viewers.ISelection) TextTransfer(org.eclipse.swt.dnd.TextTransfer) Transfer(org.eclipse.swt.dnd.Transfer) Clipboard(org.eclipse.swt.dnd.Clipboard) Job(org.eclipse.core.runtime.jobs.Job) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob)

Example 13 with IndexedArtifactFile

use of org.eclipse.m2e.core.internal.index.IndexedArtifactFile in project m2e-core by eclipse-m2e.

the class JavaProjectConversionParticipant method getMostRecentPluginVersion.

/**
 * Returns the highest, non-snapshot plugin version between the given reference version and the versions found in the
 * Nexus indexes.
 */
@SuppressWarnings("restriction")
private // TODO extract as API when stabilized?
String getMostRecentPluginVersion(String groupId, String artifactId, String referenceVersion) {
    Assert.isNotNull(groupId, "groupId can not be null");
    Assert.isNotNull(artifactId, "artifactId can not be null");
    String version = referenceVersion;
    // $NON-NLS-1$
    String partialKey = artifactId + " : " + groupId;
    SearchExpression a = new SourcedSearchExpression(artifactId);
    // For some reason, an exact search using :
    // ISearchEngine searchEngine  = M2EUIPluginActivator.getDefault().getSearchEngine(null)
    // searchEngine.findVersions(groupId, artifactId, searchExpression, packaging)
    // 
    // doesn't yield the expected results (the latest versions are not returned), so we rely on a fuzzier search
    // and refine the results.
    // was using index, but should use searchEngine as mentioned above
    Map<String, IndexedArtifact> values = Map.of();
    if (!values.isEmpty()) {
        SortedSet<ComparableVersion> versions = new TreeSet<>();
        ComparableVersion referenceComparableVersion = referenceVersion == null ? null : new ComparableVersion(referenceVersion);
        for (Map.Entry<String, IndexedArtifact> e : values.entrySet()) {
            if (!(e.getKey().endsWith(partialKey))) {
                continue;
            }
            for (IndexedArtifactFile f : e.getValue().getFiles()) {
                if (groupId.equals(f.group) && artifactId.equals(f.artifact) && !f.version.contains("SNAPSHOT")) {
                    ComparableVersion v = new ComparableVersion(f.version);
                    if (referenceComparableVersion == null || v.compareTo(referenceComparableVersion) > 0) {
                        versions.add(v);
                    }
                }
            }
            if (!versions.isEmpty()) {
                List<String> sorted = new ArrayList<>(versions.size());
                for (ComparableVersion v : versions) {
                    sorted.add(v.toString());
                }
                Collections.reverse(sorted);
                version = sorted.iterator().next();
            }
        }
    }
    return version;
}
Also used : IndexedArtifact(org.eclipse.m2e.core.internal.index.IndexedArtifact) SearchExpression(org.eclipse.m2e.core.internal.index.SearchExpression) SourcedSearchExpression(org.eclipse.m2e.core.internal.index.SourcedSearchExpression) ArrayList(java.util.ArrayList) ComparableVersion(org.apache.maven.artifact.versioning.ComparableVersion) TreeSet(java.util.TreeSet) SourcedSearchExpression(org.eclipse.m2e.core.internal.index.SourcedSearchExpression) IndexedArtifactFile(org.eclipse.m2e.core.internal.index.IndexedArtifactFile) Map(java.util.Map)

Aggregations

IndexedArtifactFile (org.eclipse.m2e.core.internal.index.IndexedArtifactFile)13 MavenRepositorySearchDialog (org.eclipse.m2e.core.ui.internal.dialogs.MavenRepositorySearchDialog)8 IStatus (org.eclipse.core.runtime.IStatus)7 ArrayList (java.util.ArrayList)6 ArtifactKey (org.eclipse.m2e.core.embedder.ArtifactKey)6 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)5 Job (org.eclipse.core.runtime.jobs.Job)5 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)5 Window (org.eclipse.jface.window.Window)5 SWT (org.eclipse.swt.SWT)5 SelectionListener (org.eclipse.swt.events.SelectionListener)5 GridData (org.eclipse.swt.layout.GridData)5 GridLayout (org.eclipse.swt.layout.GridLayout)5 Composite (org.eclipse.swt.widgets.Composite)5 List (java.util.List)4 MavenProject (org.apache.maven.project.MavenProject)4 IFile (org.eclipse.core.resources.IFile)4 CoreException (org.eclipse.core.runtime.CoreException)4 Action (org.eclipse.jface.action.Action)4 IMavenProjectFacade (org.eclipse.m2e.core.project.IMavenProjectFacade)4