]> 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
+ refactoring of the JCR UI Model (in a MVC point of view)
[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 String name;
24 private final RepositoryRegister repositoryRegister;
25
26 public RepositoriesNode(String name, RepositoryRegister repositoryRegister,
27 TreeParent parent) {
28 super(name);
29 this.name = name;
30 this.repositoryRegister = repositoryRegister;
31 }
32
33 /**
34 * Override normal behaviour to initialize the various repositories only at
35 * request time
36 */
37 @Override
38 public synchronized Object[] getChildren() {
39 if (isLoaded()) {
40 return super.getChildren();
41 } else {
42 // initialize current object
43 Map<String, Repository> refRepos = repositoryRegister
44 .getRepositories();
45 for (String name : refRepos.keySet()) {
46 super.addChild(new RepositoryNode(name, refRepos.get(name),
47 this));
48 }
49 return super.getChildren();
50 }
51 }
52
53 public void registerNewRepository(String alias, Repository repository) {
54 // TODO: implement this
55 // Create a new RepositoryNode Object
56 // add it
57 // super.addChild(new RepositoriesNode(...));
58 }
59
60 /** Returns the {@link RepositoryRegister} wrapped by thgis object. */
61 public RepositoryRegister getRepositoryRegister() {
62 return repositoryRegister;
63 }
64
65 }