X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcommands%2FFetch.java;fp=org.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fcommands%2FFetch.java;h=b6537d832fc83679ae99a4894b7d8ebb8cbb911e;hb=7e2f6c6ae08e97925955184aaa29035ac05de149;hp=0000000000000000000000000000000000000000;hpb=48b6f7647f12f4b96d1914bcafc95efd7f43cc43;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/Fetch.java b/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/Fetch.java new file mode 100644 index 000000000..b6537d832 --- /dev/null +++ b/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/commands/Fetch.java @@ -0,0 +1,81 @@ +package org.argeo.slc.client.ui.dist.commands; + +import javax.jcr.Node; +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.RepositoryFactory; +import javax.jcr.Session; + +import org.argeo.jcr.JcrUtils; +import org.argeo.slc.SlcException; +import org.argeo.slc.client.ui.dist.DistPlugin; +import org.argeo.slc.client.ui.dist.utils.CommandHelpers; +import org.argeo.slc.client.ui.dist.wizards.FetchWizard; +import org.argeo.slc.repo.RepoSync; +import org.argeo.util.security.Keyring; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.ui.handlers.HandlerUtil; + +/** + * Wrap a {@link RepoSync} as an Eclipse command. Open a wizard that enable + * definition of the fetch process parameters + */ +public class Fetch extends AbstractHandler { + // private final static Log log = LogFactory.getLog(Fetch.class); + + public final static String ID = DistPlugin.ID + ".fetch"; + public final static String DEFAULT_LABEL = "Fetch..."; + public final static ImageDescriptor DEFAULT_ICON = DistPlugin + .getImageDescriptor("icons/fetchRepo.png"); + + public final static String PARAM_TARGET_REPO_PATH = "targetRepoPath"; + + // DEPENDENCY INJECTION + private Keyring keyring; + private RepositoryFactory repositoryFactory; + private Repository nodeRepository; + + public Object execute(ExecutionEvent event) throws ExecutionException { + + Session currSession = null; + try { + // Target Repository + String targetRepoPath = event.getParameter(PARAM_TARGET_REPO_PATH); + currSession = nodeRepository.login(); + Node targetRepoNode = currSession.getNode(targetRepoPath); + + FetchWizard wizard = new FetchWizard(keyring, repositoryFactory, + nodeRepository); + wizard.setTargetRepoNode(targetRepoNode); + WizardDialog dialog = new WizardDialog( + HandlerUtil.getActiveShell(event), wizard); + + int result = dialog.open(); + if (result == Dialog.OK) + CommandHelpers.callCommand(RefreshDistributionsView.ID); + return null; + } catch (RepositoryException e) { + throw new SlcException("Unable te retrieve repo node from path", e); + } finally { + JcrUtils.logoutQuietly(currSession); + } + } + + // DEPENDENCY INJECTION + public void setRepositoryFactory(RepositoryFactory repositoryFactory) { + this.repositoryFactory = repositoryFactory; + } + + public void setKeyring(Keyring keyring) { + this.keyring = keyring; + } + + public void setNodeRepository(Repository repository) { + this.nodeRepository = repository; + } +} \ No newline at end of file