]> git.argeo.org Git - lgpl/argeo-commons.git/blob - server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/model/RepositoriesNode.java
Some refactoring of the model and of command handling.
[lgpl/argeo-commons.git] / server / plugins / org.argeo.jcr.ui.explorer / src / main / java / org / argeo / jcr / ui / explorer / model / RepositoriesNode.java
1 package org.argeo.jcr.ui.explorer.model;
2
3 import java.util.Map;
4
5 import javax.jcr.Repository;
6 import javax.jcr.RepositoryFactory;
7
8 import org.argeo.eclipse.ui.TreeParent;
9 import org.argeo.jcr.RepositoryRegister;
10
11 /**
12 * UI Tree component. Implements the Argeo abstraction of a
13 * {@link RepositoryFactory} that enable a user to "mount" various repositories
14 * in a single Tree like View. It is usually meant to be at the root of the UI
15 * Tree and thus {@link getParent()} method will return null.
16 *
17 * The {@link RepositoryFactory} is injected at instantiation time and must be
18 * use get or register new {@link Repository} objects upon which a reference is
19 * kept here.
20 */
21
22 public class RepositoriesNode extends TreeParent {
23 private final RepositoryRegister repositoryRegister;
24
25 public RepositoriesNode(String name, RepositoryRegister repositoryRegister,
26 TreeParent parent) {
27 super(name);
28 this.repositoryRegister = repositoryRegister;
29 }
30
31 /**
32 * Override normal behaviour to initialize the various repositories only at
33 * request time
34 */
35 @Override
36 public synchronized Object[] getChildren() {
37 if (isLoaded()) {
38 return super.getChildren();
39 } else {
40 // initialize current object
41 Map<String, Repository> refRepos = repositoryRegister
42 .getRepositories();
43 for (String name : refRepos.keySet()) {
44 super.addChild(new RepositoryNode(name, refRepos.get(name),
45 this));
46 }
47 return super.getChildren();
48 }
49 }
50
51 public void registerNewRepository(String alias, Repository repository) {
52 // TODO: implement this
53 // Create a new RepositoryNode Object
54 // add it
55 // super.addChild(new RepositoriesNode(...));
56 }
57
58 /** Returns the {@link RepositoryRegister} wrapped by thgis object. */
59 public RepositoryRegister getRepositoryRegister() {
60 return repositoryRegister;
61 }
62 }