Keep removing dependency to JCR.
[gpl/argeo-suite.git] / org.argeo.app.ui / src / org / argeo / app / ui / openlayers / OverviewMap.java
index dbb3119ae2bc4d680bad1e9e79c777243cd5dfd1..e4e63b86eb030f889561c2cefe76bb038926bab6 100644 (file)
@@ -4,12 +4,16 @@ import java.util.List;
 
 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;
@@ -21,22 +25,24 @@ import org.eclipse.swt.widgets.Control;
 
 /** 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);
                                                        }
@@ -45,15 +51,15 @@ public class OverviewMap implements CmsUiProvider {
                        }, 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"));
@@ -63,4 +69,9 @@ public class OverviewMap implements CmsUiProvider {
                // apafMap.setCenter(-2.472, 8.010);
                map.addPoints(geoPoints);
        }
+
+       public void setJcrContentProvider(JcrContentProvider jcrContentProvider) {
+               this.jcrContentProvider = jcrContentProvider;
+       }
+
 }