projects
/
lgpl
/
argeo-commons.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9a6babc
)
Implement lout at repository level in Data Explorer
author
Mathieu Baudier <mbaudier@argeo.org>
Tue, 6 Feb 2018 13:36:33 +0000
(14:36 +0100)
committer
Mathieu Baudier <mbaudier@argeo.org>
Tue, 6 Feb 2018 13:36:33 +0000
(14:36 +0100)
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/JcrDClickListener.java
patch
|
blob
|
history
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeLabelProvider.java
patch
|
blob
|
history
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoryElem.java
patch
|
blob
|
history
diff --git
a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/JcrDClickListener.java
b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/JcrDClickListener.java
index 7c06db92292e3cf8b7ba1342f68fdcacae93c6f9..3cee13a2ccb0e211ee6d6f4271c35962128da7aa 100644
(file)
--- a/
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/JcrDClickListener.java
+++ b/
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/JcrDClickListener.java
@@
-44,6
+44,7
@@
import org.argeo.cms.ui.workbench.util.CommandUtils;
import org.argeo.eclipse.ui.EclipseUiException;
import org.argeo.eclipse.ui.specific.OpenFile;
import org.argeo.eclipse.ui.specific.SingleSourcingException;
import org.argeo.eclipse.ui.EclipseUiException;
import org.argeo.eclipse.ui.specific.OpenFile;
import org.argeo.eclipse.ui.specific.SingleSourcingException;
+import org.argeo.jcr.JcrUtils;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
@@
-74,10
+75,12
@@
public class JcrDClickListener implements IDoubleClickListener {
Object obj = ((IStructuredSelection) event.getSelection()).getFirstElement();
if (obj instanceof RepositoryElem) {
RepositoryElem rpNode = (RepositoryElem) obj;
Object obj = ((IStructuredSelection) event.getSelection()).getFirstElement();
if (obj instanceof RepositoryElem) {
RepositoryElem rpNode = (RepositoryElem) obj;
- if (!rpNode.isConnected()) {
+ if (rpNode.isConnected()) {
+ rpNode.logout();
+ } else {
rpNode.login();
rpNode.login();
- nodeViewer.refresh(obj);
}
}
+ nodeViewer.refresh(obj);
} else if (obj instanceof WorkspaceElem) {
WorkspaceElem wn = (WorkspaceElem) obj;
if (wn.isConnected())
} else if (obj instanceof WorkspaceElem) {
WorkspaceElem wn = (WorkspaceElem) obj;
if (wn.isConnected())
@@
-105,8
+108,8
@@
public class JcrDClickListener implements IDoubleClickListener {
// we copy the node to a tmp file to be opened as a dirty
// workaround
File tmpFile = null;
// we copy the node to a tmp file to be opened as a dirty
// workaround
File tmpFile = null;
- OutputStream os = null;
- InputStream is = null;
+
//
OutputStream os = null;
+
//
InputStream is = null;
int i = name.lastIndexOf('.');
String prefix, suffix;
if (i == -1) {
int i = name.lastIndexOf('.');
String prefix, suffix;
if (i == -1) {
@@
-116,18
+119,20
@@
public class JcrDClickListener implements IDoubleClickListener {
prefix = name.substring(0, i);
suffix = name.substring(i);
}
prefix = name.substring(0, i);
suffix = name.substring(i);
}
- try {
+ Binary binary = null;
+ try (OutputStream os = new FileOutputStream(tmpFile)) {
tmpFile = File.createTempFile(prefix, suffix);
tmpFile.deleteOnExit();
tmpFile = File.createTempFile(prefix, suffix);
tmpFile.deleteOnExit();
-
os = new FileOutputStream(tmpFile
);
- Binary binary = node.getNode(JCR_CONTENT).getProperty(JCR_DATA).getBinary();
-
is = binary.getStream(
);
- IOUtils.copy(is, os);
+
binary = node.getNode(JCR_CONTENT).getProperty(JCR_DATA).getBinary(
);
+ try (InputStream is = binary.getStream();) {
+
IOUtils.copy(is, os
);
+ }
} catch (IOException e) {
throw new SingleSourcingException("Cannot open file " + prefix + "." + suffix, e);
} finally {
} catch (IOException e) {
throw new SingleSourcingException("Cannot open file " + prefix + "." + suffix, e);
} finally {
- IOUtils.closeQuietly(is);
- IOUtils.closeQuietly(os);
+ // IOUtils.closeQuietly(is);
+ // IOUtils.closeQuietly(os);
+ JcrUtils.closeQuietly(binary);
}
Path path = Paths.get(tmpFile.getAbsolutePath());
String uri = path.toUri().toString();
}
Path path = Paths.get(tmpFile.getAbsolutePath());
String uri = path.toUri().toString();
diff --git
a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeLabelProvider.java
b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeLabelProvider.java
index 35c178250ea950e827dafa9bacba3e763c630e51..d409812e088fc41ac237ed27a4cf40572a65f22b 100644
(file)
--- a/
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeLabelProvider.java
+++ b/
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/NodeLabelProvider.java
@@
-15,6
+15,7
@@
*/
package org.argeo.cms.ui.workbench.internal.jcr;
*/
package org.argeo.cms.ui.workbench.internal.jcr;
+import javax.jcr.NamespaceException;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.nodetype.NodeType;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.nodetype.NodeType;
@@
-28,6
+29,7
@@
import org.argeo.cms.ui.workbench.internal.jcr.model.SingleJcrNodeElem;
import org.argeo.cms.ui.workbench.internal.jcr.model.WorkspaceElem;
import org.argeo.cms.ui.workbench.jcr.JcrImages;
import org.argeo.eclipse.ui.EclipseUiException;
import org.argeo.cms.ui.workbench.internal.jcr.model.WorkspaceElem;
import org.argeo.cms.ui.workbench.jcr.JcrImages;
import org.argeo.eclipse.ui.EclipseUiException;
+import org.argeo.naming.LdapAttrs;
import org.argeo.node.NodeTypes;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.swt.graphics.Image;
import org.argeo.node.NodeTypes;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.swt.graphics.Image;
@@
-48,8
+50,7
@@
public class NodeLabelProvider extends ColumnLabelProvider {
} else
return super.getText(element);
} catch (RepositoryException e) {
} else
return super.getText(element);
} catch (RepositoryException e) {
- throw new EclipseUiException(
- "Unexpected JCR error while getting node name.");
+ throw new EclipseUiException("Unexpected JCR error while getting node name.");
}
}
}
}
@@
-59,8
+60,7
@@
public class NodeLabelProvider extends ColumnLabelProvider {
for (NodeType type : node.getMixinNodeTypes())
mixins.append(' ').append(type.getName());
for (NodeType type : node.getMixinNodeTypes())
mixins.append(' ').append(type.getName());
- return label + " [" + node.getPrimaryNodeType().getName() + mixins
- + "]";
+ return label + " [" + node.getPrimaryNodeType().getName() + mixins + "]";
}
@Override
}
@Override
@@
-110,13
+110,16
@@
public class NodeLabelProvider extends ColumnLabelProvider {
return JcrImages.FOLDER;
else if (node.getPrimaryNodeType().isNodeType(NodeType.NT_RESOURCE))
return JcrImages.BINARY;
return JcrImages.FOLDER;
else if (node.getPrimaryNodeType().isNodeType(NodeType.NT_RESOURCE))
return JcrImages.BINARY;
- else if (node.isNodeType(NodeTypes.NODE_USER_HOME))
- return JcrImages.HOME;
- else
- return JcrImages.NODE;
+ try {
+ // optimizes
+ if (node.hasProperty(LdapAttrs.uid.property()) && node.isNodeType(NodeTypes.NODE_USER_HOME))
+ return JcrImages.HOME;
+ } catch (NamespaceException e) {
+ // node namespace is not registered in this repo
+ }
+ return JcrImages.NODE;
} catch (RepositoryException e) {
} catch (RepositoryException e) {
- log.warn("Error while retrieving type for " + node
- + " in order to display corresponding image");
+ log.warn("Error while retrieving type for " + node + " in order to display corresponding image");
e.printStackTrace();
return null;
}
e.printStackTrace();
return null;
}
diff --git
a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoryElem.java
b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoryElem.java
index 118ab23febee05cbf0ddc3c03724eb71ae82400a..116aeeeb52bd4944224e0a6e5429a8ca417e5773 100644
(file)
--- a/
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoryElem.java
+++ b/
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/jcr/model/RepositoryElem.java
@@
-21,11
+21,13
@@
import javax.jcr.Session;
import org.argeo.eclipse.ui.EclipseUiException;
import org.argeo.eclipse.ui.TreeParent;
import org.argeo.eclipse.ui.EclipseUiException;
import org.argeo.eclipse.ui.TreeParent;
+import org.argeo.jcr.JcrUtils;
/**
/**
- * UI Tree component that wraps a JCR {@link Repository}. It also keeps a reference
- * to its parent Tree Ui component; typically the unique {@link RepositoriesElem}
- * object of the current view to enable bi-directionnal browsing in the tree.
+ * UI Tree component that wraps a JCR {@link Repository}. It also keeps a
+ * reference to its parent Tree Ui component; typically the unique
+ * {@link RepositoriesElem} object of the current view to enable bi-directionnal
+ * browsing in the tree.
*/
public class RepositoryElem extends TreeParent {
*/
public class RepositoryElem extends TreeParent {
@@
-44,8
+46,7
@@
public class RepositoryElem extends TreeParent {
public void login() {
try {
defaultSession = repositoryLogin("main");
public void login() {
try {
defaultSession = repositoryLogin("main");
- String[] wkpNames = defaultSession.getWorkspace()
- .getAccessibleWorkspaceNames();
+ String[] wkpNames = defaultSession.getWorkspace().getAccessibleWorkspaceNames();
for (String wkpName : wkpNames) {
if (wkpName.equals(defaultSession.getWorkspace().getName()))
addChild(new WorkspaceElem(this, wkpName, defaultSession));
for (String wkpName : wkpNames) {
if (wkpName.equals(defaultSession.getWorkspace().getName()))
addChild(new WorkspaceElem(this, wkpName, defaultSession));
@@
-57,13
+58,21
@@
public class RepositoryElem extends TreeParent {
}
}
}
}
+ public synchronized void logout() {
+ for (Object child : getChildren()) {
+ if (child instanceof WorkspaceElem)
+ ((WorkspaceElem) child).logout();
+ }
+ clearChildren();
+ JcrUtils.logoutQuietly(defaultSession);
+ defaultSession = null;
+ }
+
/**
/**
- * Actual call to the
- * {@link Repository#login(javax.jcr.Credentials, String)} method. To be
- * overridden.
+ * Actual call to the {@link Repository#login(javax.jcr.Credentials, String)}
+ * method. To be overridden.
*/
*/
- protected Session repositoryLogin(String workspaceName)
- throws RepositoryException {
+ protected Session repositoryLogin(String workspaceName) throws RepositoryException {
return repository.login(workspaceName);
}
return repository.login(workspaceName);
}