]>
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/RepositoryNode.java
0b73254855b513064b043b0482dfb35e3245c2db
2 * Copyright (C) 2007-2012 Mathieu Baudier
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org
.argeo
.jcr
.ui
.explorer
.model
;
18 import javax
.jcr
.Repository
;
19 import javax
.jcr
.RepositoryException
;
20 import javax
.jcr
.Session
;
22 import org
.argeo
.ArgeoException
;
23 import org
.argeo
.eclipse
.ui
.TreeParent
;
26 * UI Tree component. Wraps a JCR {@link Repository}. It also keeps a reference
27 * to its parent Tree Ui component; typically the unique {@link Repositories}
28 * object of the current view to enable bi-directionnal browsing in the tree.
31 public class RepositoryNode
extends TreeParent
implements UiNode
{
33 private final Repository repository
;
34 private Session defaultSession
= null;
36 /** Create a new repository with alias = name */
37 public RepositoryNode(String alias
, Repository repository
, TreeParent parent
) {
38 this(alias
, alias
, repository
, parent
);
41 /** Create a new repository with distinct name & alias */
42 public RepositoryNode(String alias
, String name
, Repository repository
,
45 this.repository
= repository
;
52 // SimpleCredentials sc = new SimpleCredentials("root",
53 // "demo".toCharArray());
54 // defaultSession = repository.login(sc);
55 defaultSession
= repositoryLogin(null);
56 String
[] wkpNames
= defaultSession
.getWorkspace()
57 .getAccessibleWorkspaceNames();
58 for (String wkpName
: wkpNames
) {
59 if (wkpName
.equals(defaultSession
.getWorkspace().getName()))
60 addChild(new WorkspaceNode(this, wkpName
, defaultSession
));
62 addChild(new WorkspaceNode(this, wkpName
));
64 } catch (RepositoryException e
) {
65 throw new ArgeoException("Cannot connect to repository " + alias
, e
);
69 /** Actual call to the {@link Repository#login(javax.jcr.Credentials, String)} method. To be overridden.*/
70 protected Session
repositoryLogin(String workspaceName
)
71 throws RepositoryException
{
72 return repository
.login(workspaceName
);
75 public Session
getDefaultSession() {
76 return defaultSession
;
79 /** returns the {@link Repository} referenced by the current UI Node */
80 public Repository
getRepository() {
84 public String
getAlias() {