]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java
Clarify overall project structure.
[gpl/argeo-slc.git] / cms / org.argeo.slc.client.ui.dist / src / org / argeo / slc / client / ui / dist / controllers / DistTreeContentProvider.java
diff --git a/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java b/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/controllers/DistTreeContentProvider.java
deleted file mode 100644 (file)
index b7e25d1..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.argeo.slc.client.ui.dist.controllers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.Property;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.RepositoryFactory;
-import javax.jcr.Session;
-import javax.jcr.nodetype.NodeType;
-
-import org.argeo.api.NodeConstants;
-import org.argeo.api.NodeUtils;
-import org.argeo.api.security.Keyring;
-import org.argeo.cms.ArgeoNames;
-import org.argeo.cms.ArgeoTypes;
-import org.argeo.eclipse.ui.TreeParent;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.client.ui.dist.model.RepoElem;
-import org.argeo.slc.repo.RepoConstants;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-/**
- * Enables browsing in local and remote SLC software repositories. Keyring and
- * repository factory must be injected
- */
-public class DistTreeContentProvider implements ITreeContentProvider {
-       private static final long serialVersionUID = -7640840211717811421L;
-
-       /* DEPENDENCY INJECTION */
-       private RepositoryFactory repositoryFactory;
-       private Keyring keyring;
-
-       // Context
-       private Session nodeSession;
-       List<RepoElem> repositories = new ArrayList<RepoElem>();
-
-       public Object[] getElements(Object input) {
-               Repository nodeRepository = (Repository) input;
-               try {
-                       if (nodeSession != null)
-                               dispose();
-                       nodeSession = nodeRepository.login(NodeConstants.HOME_WORKSPACE);
-
-                       String reposPath = NodeUtils.getUserHome(nodeSession).getPath() + RepoConstants.REPOSITORIES_BASE_PATH;
-
-                       if (!nodeSession.itemExists(reposPath))
-                               initializeModel(nodeSession);
-
-                       NodeIterator repos = nodeSession.getNode(reposPath).getNodes();
-                       while (repos.hasNext()) {
-                               Node repoNode = repos.nextNode();
-                               if (repoNode.isNodeType(ArgeoTypes.ARGEO_REMOTE_REPOSITORY)) {
-                                       String label = repoNode.isNodeType(NodeType.MIX_TITLE)
-                                                       ? repoNode.getProperty(Property.JCR_TITLE).getString()
-                                                       : repoNode.getName();
-                                       repositories.add(new RepoElem(repositoryFactory, keyring, repoNode, label));
-                               }
-                       }
-               } catch (RepositoryException e) {
-                       throw new SlcException("Cannot get base elements", e);
-               }
-               return repositories.toArray();
-       }
-
-       public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-       }
-
-       // @Override
-       public Object[] getChildren(Object parentElement) {
-               if (parentElement instanceof TreeParent)
-                       return ((TreeParent) parentElement).getChildren();
-               else
-                       return null;
-       }
-
-       // @Override
-       public Object getParent(Object element) {
-               if (element instanceof TreeParent)
-                       return ((TreeParent) element).getParent();
-               return null;
-       }
-
-       // @Override
-       public boolean hasChildren(Object element) {
-               if (element instanceof TreeParent)
-                       return ((TreeParent) element).hasChildren();
-               else
-                       return false;
-       }
-
-       public void dispose() {
-               for (RepoElem repoElem : repositories)
-                       repoElem.dispose();
-               repositories = new ArrayList<RepoElem>();
-               JcrUtils.logoutQuietly(nodeSession);
-       }
-
-       private void initializeModel(Session nodeSession) {
-               try {
-                       Node homeNode = NodeUtils.getUserHome(nodeSession);
-                       if (homeNode == null) // anonymous
-                               throw new SlcException("User must be authenticated.");
-
-                       // make sure base directory is available
-                       Node repos = JcrUtils.mkdirs(homeNode, RepoConstants.REPOSITORIES_BASE_PATH, null);
-                       if (nodeSession.hasPendingChanges())
-                               nodeSession.save();
-
-                       // register default local java repository
-                       String alias = RepoConstants.DEFAULT_JAVA_REPOSITORY_ALIAS;
-                       Repository javaRepository = NodeUtils.getRepositoryByAlias(repositoryFactory, alias);
-                       if (javaRepository != null) {
-                               if (!repos.hasNode(alias)) {
-                                       Node repoNode = repos.addNode(alias, ArgeoTypes.ARGEO_REMOTE_REPOSITORY);
-                                       repoNode.setProperty(ArgeoNames.ARGEO_URI, "vm:///" + alias);
-                                       repoNode.addMixin(NodeType.MIX_TITLE);
-                                       repoNode.setProperty(Property.JCR_TITLE, RepoConstants.DEFAULT_JAVA_REPOSITORY_LABEL);
-                                       nodeSession.save();
-                               }
-                       }
-               } catch (RepositoryException e) {
-                       throw new SlcException("Cannot initialize model", e);
-               }
-       }
-
-       /* DEPENDENCY INJECTION */
-       public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
-               this.repositoryFactory = repositoryFactory;
-       }
-
-       public void setKeyring(Keyring keyring) {
-               this.keyring = keyring;
-       }
-}
\ No newline at end of file