return EntityType.user.basePath() + '/' + uid;
}
- public static Node getOrCreateUserNode(Session adminSession, LdapName userDn) {
+ private static Node getOrCreateUserNode(Session adminSession, LdapName userDn) {
try {
Node usersBase = adminSession.getNode(EntityType.user.basePath());
String uid = userDn.getRdn(userDn.size() - 1).getValue().toString();
<properties entry="config/cmsApp.properties"/>
<reference bind="addUiProvider" cardinality="0..n" interface="org.argeo.cms.ui.CmsUiProvider" name="CmsUiProvider" policy="dynamic" unbind="removeUiProvider"/>
<reference bind="addTheme" cardinality="1..n" interface="org.argeo.api.cms.CmsTheme" name="CmsTheme" policy="dynamic" unbind="removeTheme"/>
- <reference bind="setRepository" cardinality="1..1" interface="javax.jcr.Repository" name="Repository" policy="dynamic" target="(cn=ego)"/>
<reference bind="addLayer" cardinality="1..n" interface="org.argeo.app.ui.SuiteLayer" name="SuiteLayer" policy="dynamic" unbind="removeLayer"/>
<reference bind="setCmsUserManager" cardinality="1..1" interface="org.argeo.cms.CmsUserManager" name="CmsUserManager" policy="static"/>
<reference bind="setCmsContext" cardinality="1..1" interface="org.argeo.api.cms.CmsContext" name="CmsContext" policy="static"/>
<reference bind="setContentRepository" cardinality="1..1" interface="org.argeo.api.acr.ContentRepository" name="ContentRepository" policy="static"/>
- <reference bind="setJcrContentProvider" cardinality="1..1" interface="org.argeo.cms.jcr.acr.JcrContentProvider" name="JcrContentProvider" policy="static"/>
</scr:component>
<provide interface="org.argeo.cms.ui.CmsUiProvider"/>
</service>
<properties entry="config/contentEntryArea.properties"/>
+ <reference bind="setJcrContentProvider" cardinality="1..1" interface="org.argeo.cms.jcr.acr.JcrContentProvider" name="JcrContentProvider" policy="static"/>
</scr:component>
<provide interface="org.argeo.app.ui.SuiteLayer"/>
</service>
<properties entry="config/dashboardLayer.properties"/>
- <reference bind="setEntryArea" cardinality="1..1" interface="org.argeo.cms.ui.CmsUiProvider" name="CmsUiProvider" policy="dynamic" target="(service.pid=argeo.suite.ui.recentItems)"/>
</scr:component>
<service>
<provide interface="org.argeo.cms.ui.CmsUiProvider"/>
</service>
+ <reference bind="setJcrContentProvider" cardinality="1..1" interface="org.argeo.cms.jcr.acr.JcrContentProvider" name="JcrContentProvider" policy="static"/>
</scr:component>
package org.argeo.app.ui;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
+import org.argeo.api.acr.Content;
import org.argeo.api.cms.CmsView;
import org.argeo.cms.auth.CurrentUser;
import org.argeo.cms.swt.CmsSwtUtils;
public class DefaultDashboard implements CmsUiProvider {
@Override
- public Control createUi(Composite parent, Node context) throws RepositoryException {
+ public Control createUiPart(Composite parent, Content context) {
parent.setLayout(new GridLayout());
CmsView cmsView = CmsSwtUtils.getCmsView(parent);
if (cmsView.isAnonymous())
import java.util.Map;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
+import org.argeo.api.acr.Content;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.ui.CmsUiProvider;
import org.eclipse.swt.SWT;
/** Footer of a standard Argeo Suite application. */
public class DefaultFooter implements CmsUiProvider {
@Override
- public Control createUi(Composite parent, Node context) throws RepositoryException {
+ public Control createUiPart(Composite parent, Content context) {
parent.setLayout(CmsSwtUtils.noSpaceGridLayout());
Composite content = new Composite(parent, SWT.NONE);
content.setLayoutData(new GridData(0, 0));
return contentControl;
}
- protected Control createContent(Composite parent, Node context) throws RepositoryException {
+ protected Control createContent(Composite parent, Content context) {
return parent;
}
import java.util.Map;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
+import org.argeo.api.acr.Content;
import org.argeo.api.cms.CmsTheme;
import org.argeo.api.cms.CmsView;
import org.argeo.cms.Localized;
private Localized title = null;
@Override
- public Control createUi(Composite parent, Node context) throws RepositoryException {
+ public Control createUiPart(Composite parent, Content context) {
CmsView cmsView = CmsSwtUtils.getCmsView(parent);
CmsTheme theme = CmsSwtUtils.getCmsTheme(parent);
import java.util.Set;
import java.util.TreeMap;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
+import org.argeo.api.acr.Content;
+import org.argeo.api.cms.CmsLog;
import org.argeo.api.cms.CmsView;
import org.argeo.app.api.RankedObject;
import org.argeo.app.core.SuiteUtils;
-import org.argeo.api.cms.CmsLog;
import org.argeo.cms.Localized;
import org.argeo.cms.auth.CurrentUser;
import org.argeo.cms.swt.CmsSwtUtils;
private ClassLoader l10nClassLoader;
@Override
- public Control createUi(Composite parent, Node node) throws RepositoryException {
+ public Control createUiPart(Composite parent, Content node) {
CmsView cmsView = CmsSwtUtils.getCmsView(parent);
parent.setLayout(CmsSwtUtils.noSpaceGridLayout());
Composite appLayersC = new Composite(parent, SWT.NONE);
package org.argeo.app.ui;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
+import org.argeo.api.acr.Content;
import org.argeo.api.cms.CmsContext;
import org.argeo.api.cms.CmsView;
import org.argeo.cms.auth.CurrentUser;
private CmsContext cmsContext;
@Override
- public Control createUi(Composite parent, Node context) throws RepositoryException {
+ public Control createUiPart(Composite parent, Content context) {
CmsView cmsView = CmsSwtUtils.getCmsView(parent);
if (!cmsView.isAnonymous())
throw new IllegalStateException(CurrentUser.getUsername() + " is already logged in");
import java.util.TreeSet;
import javax.jcr.Node;
-import javax.jcr.Repository;
import javax.jcr.RepositoryException;
-import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
import javax.naming.InvalidNameException;
import javax.naming.ldap.LdapName;
import org.argeo.api.acr.Content;
import org.argeo.api.acr.ContentRepository;
-import org.argeo.api.acr.ContentSession;
import org.argeo.api.acr.spi.ProvidedSession;
import org.argeo.api.cms.CmsConstants;
import org.argeo.api.cms.CmsLog;
import org.argeo.cms.Localized;
import org.argeo.cms.jcr.CmsJcrUtils;
import org.argeo.cms.jcr.acr.JcrContent;
-import org.argeo.cms.jcr.acr.JcrContentProvider;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.swt.dialogs.CmsFeedback;
import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.cms.ux.CmsUxUtils;
import org.argeo.eclipse.ui.specific.UiContext;
-import org.argeo.jcr.Jcr;
import org.argeo.jcr.JcrException;
import org.argeo.util.LangUtils;
import org.eclipse.swt.SWT;
// ACR
private ContentRepository contentRepository;
- private JcrContentProvider jcrContentProvider;
+// private JcrContentProvider jcrContentProvider;
// JCR
- private Repository repository;
+// private Repository repository;
public void init(Map<String, Object> properties) {
if (log.isDebugEnabled())
throw new IllegalStateException("UI name should not be null");
CmsView cmsView = CmsSwtUtils.getCmsView(ui);
- ContentSession contentSession = CmsUxUtils.getContentSession(contentRepository, cmsView);
+ ProvidedSession contentSession = (ProvidedSession) CmsUxUtils.getContentSession(contentRepository, cmsView);
CmsUiProvider headerUiProvider = findUiProvider(headerPid);
CmsUiProvider footerUiProvider = findUiProvider(footerPid);
ui.setUserDir(userDir);
// ui.initSessions(getRepository(), publicBasePath);
} else {
- Session adminSession = null;
- try {
- adminSession = CmsJcrUtils.openDataAdminSession(getRepository(), null);
- Node userDirNode = SuiteUtils.getOrCreateCmsSessionNode(adminSession, cmsSession);
- Content userDir = contentSession.get(CmsConstants.SYS_WORKSPACE + userDirNode.getPath());
- ui.setUserDir(userDir);
-// ui.initSessions(getRepository(), userDirNode.getPath());
- } finally {
- Jcr.logout(adminSession);
- }
+// Session adminSession = null;
+// try {
+// adminSession = CmsJcrUtils.openDataAdminSession(getRepository(), null);
+// Node userDirNode = SuiteUtils.getOrCreateCmsSessionNode(adminSession, cmsSession);
+// Content userDir = contentSession.get(CmsConstants.SYS_WORKSPACE + userDirNode.getPath());
+// ui.setUserDir(userDir);
+//// ui.initSessions(getRepository(), userDirNode.getPath());
+// } finally {
+// Jcr.logout(adminSession);
+// }
+ Content userDir = contentSession.getSessionRunDir();
+ ui.setUserDir(userDir);
}
}
initLocale(cmsSession);
private <T> T findByType(Map<String, RankedObject<T>> byType, Content content) {
if (content == null)
throw new IllegalArgumentException("A node should be provided");
-
- if(content instanceof JcrContent) {
- Node context = ((JcrContent)content).getJcrNode();
- try {
- // mixins
- Set<String> types = new TreeSet<>();
- for (NodeType mixinType : context.getMixinNodeTypes()) {
- String mixinTypeName = mixinType.getName();
- if (byType.containsKey(mixinTypeName)) {
- types.add(mixinTypeName);
+
+ if (content instanceof JcrContent) {
+ Node context = ((JcrContent) content).getJcrNode();
+ try {
+ // mixins
+ Set<String> types = new TreeSet<>();
+ for (NodeType mixinType : context.getMixinNodeTypes()) {
+ String mixinTypeName = mixinType.getName();
+ if (byType.containsKey(mixinTypeName)) {
+ types.add(mixinTypeName);
+ }
+ for (NodeType superType : mixinType.getDeclaredSupertypes()) {
+ if (byType.containsKey(superType.getName())) {
+ types.add(superType.getName());
+ }
+ }
+ }
+ // primary node type
+ NodeType primaryType = context.getPrimaryNodeType();
+ String primaryTypeName = primaryType.getName();
+ if (byType.containsKey(primaryTypeName)) {
+ types.add(primaryTypeName);
}
- for (NodeType superType : mixinType.getDeclaredSupertypes()) {
+ for (NodeType superType : primaryType.getDeclaredSupertypes()) {
if (byType.containsKey(superType.getName())) {
types.add(superType.getName());
}
}
- }
- // primary node type
- NodeType primaryType = context.getPrimaryNodeType();
- String primaryTypeName = primaryType.getName();
- if (byType.containsKey(primaryTypeName)) {
- types.add(primaryTypeName);
- }
- for (NodeType superType : primaryType.getDeclaredSupertypes()) {
- if (byType.containsKey(superType.getName())) {
- types.add(superType.getName());
- }
- }
- // entity type
- if (context.isNodeType(EntityType.entity.get())) {
- if (context.hasProperty(EntityNames.ENTITY_TYPE)) {
- String entityTypeName = context.getProperty(EntityNames.ENTITY_TYPE).getString();
- if (byType.containsKey(entityTypeName)) {
- types.add(entityTypeName);
+ // entity type
+ if (context.isNodeType(EntityType.entity.get())) {
+ if (context.hasProperty(EntityNames.ENTITY_TYPE)) {
+ String entityTypeName = context.getProperty(EntityNames.ENTITY_TYPE).getString();
+ if (byType.containsKey(entityTypeName)) {
+ types.add(entityTypeName);
+ }
}
}
- }
// if (context.getPath().equals("/")) {// root node
// types.add("nt:folder");
// }
- if (CmsJcrUtils.isUserHome(context) && byType.containsKey("nt:folder")) {// home node
- types.add("nt:folder");
+ if (CmsJcrUtils.isUserHome(context) && byType.containsKey("nt:folder")) {// home node
+ types.add("nt:folder");
+ }
+
+ if (types.size() == 0)
+ throw new IllegalArgumentException(
+ "No type found for " + context + " (" + listTypes(context) + ")");
+ String type = types.iterator().next();
+ if (!byType.containsKey(type))
+ throw new IllegalArgumentException("No component found for " + context + " with type " + type);
+ return byType.get(type).get();
+ } catch (RepositoryException e) {
+ throw new IllegalStateException(e);
}
- if (types.size() == 0)
- throw new IllegalArgumentException("No type found for " + context + " (" + listTypes(context) + ")");
- String type = types.iterator().next();
- if (!byType.containsKey(type))
- throw new IllegalArgumentException("No component found for " + context + " with type " + type);
- return byType.get(type).get();
- } catch (RepositoryException e) {
- throw new IllegalStateException(e);
- }
-
- }else {
- throw new UnsupportedOperationException("Content "+content.getClass().getName()+" is not supported.");
+ } else {
+ throw new UnsupportedOperationException("Content " + content.getClass().getName() + " is not supported.");
}
}
if (state == null || !state.startsWith("/"))
return null;
- String path=state;
+ String path = state;
// String path = state.substring(1);
// String workspace;
// if (path.equals("")) {
ProvidedSession contentSession = (ProvidedSession) CmsUxUtils.getContentSession(contentRepository,
ui.getCmsView());
- String path = get(event,SuiteEvent.CONTENT_PATH);
-
+ String path = get(event, SuiteEvent.CONTENT_PATH);
+
// String nodePath = get(event, SuiteEvent.NODE_PATH);
if (path != null && path.equals(HOME_STATE))
return ui.getUserDir();
this.cmsUserManager = cmsUserManager;
}
- protected Repository getRepository() {
- return repository;
- }
-
- public void setRepository(Repository repository) {
- this.repository = repository;
- }
+// protected Repository getRepository() {
+// return repository;
+// }
+//
+// public void setRepository(Repository repository) {
+// this.repository = repository;
+// }
protected ContentRepository getContentRepository() {
return contentRepository;
this.contentRepository = contentRepository;
}
- public void setJcrContentProvider(JcrContentProvider jcrContentProvider) {
- this.jcrContentProvider = jcrContentProvider;
- }
+// public void setJcrContentProvider(JcrContentProvider jcrContentProvider) {
+// this.jcrContentProvider = jcrContentProvider;
+// }
}
import javax.jcr.nodetype.NodeType;
import javax.jcr.query.Query;
+import org.argeo.api.acr.Content;
+import org.argeo.api.cms.CmsConstants;
import org.argeo.api.cms.CmsTheme;
import org.argeo.app.api.EntityType;
import org.argeo.app.ui.SuiteEvent;
import org.argeo.app.ui.SuiteIcon;
import org.argeo.app.ui.widgets.TreeOrSearchArea;
+import org.argeo.cms.jcr.acr.JcrContentProvider;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.jcr.Jcr;
import org.eclipse.swt.widgets.Control;
public class ContentEntryArea implements CmsUiProvider {
+ private JcrContentProvider jcrContentProvider;
@Override
- public Control createUi(Composite parent, Node context) throws RepositoryException {
+ public Control createUiPart(Composite parent, Content context) {
CmsTheme theme = CmsSwtUtils.getCmsTheme(parent);
parent.setLayout(new GridLayout());
});
ui.getTreeViewer().setContentProvider(new SpacesContentProvider());
- ui.getTreeViewer().setInput(context.getSession());
+ Session session = jcrContentProvider.getJcrSession(context, CmsConstants.SYS_WORKSPACE);
+ ui.getTreeViewer().setInput(session);
return ui;
}
|| Jcr.isNodeType(node, NodeType.NT_FILE);
}
+ public void setJcrContentProvider(JcrContentProvider jcrContentProvider) {
+ this.jcrContentProvider = jcrContentProvider;
+ }
+
class Ui extends TreeOrSearchArea {
public Ui(Composite parent, int style) {
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import javax.jcr.observation.Event;
import javax.jcr.observation.EventIterator;
import javax.jcr.observation.EventListener;
import javax.jcr.query.Query;
+import org.argeo.api.acr.Content;
+import org.argeo.api.cms.CmsConstants;
import org.argeo.app.api.EntityType;
+import org.argeo.cms.jcr.acr.JcrContentProvider;
import org.argeo.cms.swt.CmsSwtUtils;
import org.argeo.cms.ui.CmsUiProvider;
import org.argeo.jcr.JcrException;
/** Displays an overview map. */
public class OverviewMap implements CmsUiProvider {
+ private JcrContentProvider jcrContentProvider;
@Override
- public Control createUi(Composite parent, Node context) throws RepositoryException {
+ public Control createUiPart(Composite parent, Content context) {
parent.setLayout(new GridLayout());
- refreshUi(parent, context);
+ Session session = jcrContentProvider.getJcrSession(context, CmsConstants.SYS_WORKSPACE);
try {
+ refreshUi(parent, session);
String[] nodeTypes = { EntityType.geopoint.get() };
- context.getSession().getWorkspace().getObservationManager().addEventListener(new EventListener() {
+ session.getWorkspace().getObservationManager().addEventListener(new EventListener() {
@Override
public void onEvent(EventIterator events) {
if (!parent.isDisposed())
parent.getDisplay().asyncExec(() -> {
try {
- refreshUi(parent, context);
+ refreshUi(parent, session);
} catch (RepositoryException e) {
throw new JcrException(e);
}
}, Event.PROPERTY_CHANGED | Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED, "/", true, null,
nodeTypes, false);
} catch (RepositoryException e) {
- throw new IllegalStateException("Cannot add JCR observer", e);
+ throw new JcrException("Cannot add JCR observer", e);
}
return parent;
}
- protected void refreshUi(Composite parent, Node context) throws RepositoryException {
+ protected void refreshUi(Composite parent, Session session) throws RepositoryException {
CmsSwtUtils.clear(parent);
- Query query = context.getSession().getWorkspace().getQueryManager()
+ Query query = session.getWorkspace().getQueryManager()
.createQuery("SELECT * FROM [" + EntityType.geopoint.get() + "]", Query.JCR_SQL2);
List<Node> geoPoints = JcrUtils.nodeIteratorToList(query.execute().getNodes());
OpenLayersMap map = new OpenLayersMap(parent, SWT.NONE, getClass().getResource("map-osm.html"));
// apafMap.setCenter(-2.472, 8.010);
map.addPoints(geoPoints);
}
+
+ public void setJcrContentProvider(JcrContentProvider jcrContentProvider) {
+ this.jcrContentProvider = jcrContentProvider;
+ }
+
}