Author: michiel
Date: 2010-03-25 15:29:07 +0100 (Thu, 25 Mar 2010)
New Revision: 41613

Added:
   speeltuin/mihxil/portal/trunk/src/main/config/components/blockssyncer.xml
   speeltuin/mihxil/portal/trunk/src/main/config/security/
   
speeltuin/mihxil/portal/trunk/src/main/config/security/classauthentication.xml
   speeltuin/mihxil/portal/trunk/src/main/java/org/mmbase/framework/
   
speeltuin/mihxil/portal/trunk/src/main/java/org/mmbase/framework/BlocksToDatabaseSyncer.java
Modified:
   speeltuin/mihxil/portal/trunk/src/main/config/builders/core/blocks.xml
Log:
arranged that all blocks of component repostiory are mapped to objects and then 
can be used (depedning on fix for   MMB-1944)

Modified: speeltuin/mihxil/portal/trunk/src/main/config/builders/core/blocks.xml
===================================================================
--- speeltuin/mihxil/portal/trunk/src/main/config/builders/core/blocks.xml      
2010-03-25 14:28:13 UTC (rev 41612)
+++ speeltuin/mihxil/portal/trunk/src/main/config/builders/core/blocks.xml      
2010-03-25 14:29:07 UTC (rev 41613)
@@ -28,6 +28,11 @@
          <guiname xml:lang="en">Component</guiname>
          <guiname xml:lang="zh">模型</guiname>
        </gui>
+      <editor>
+        <positions>
+          <list>1</list>
+        </positions>
+      </editor>
        <datatype base="components" 
xmlns="http://www.mmbase.org/xmlns/datatypes"; />
      </field>
     <field name="name">
@@ -41,7 +46,7 @@
       </gui>
       <editor>
         <positions>
-          <list>1</list>
+          <list>2</list>
         </positions>
       </editor>
       <datatype base="eline" xmlns="http://www.mmbase.org/xmlns/datatypes"; >
@@ -70,7 +75,9 @@
         <guiname xml:lang="nl">Weergave</guiname>
         <guiname xml:lang="en">Display Type</guiname>
       </gui>
-      <datatype base="windowstate" 
xmlns="http://www.mmbase.org/xmlns/datatypes"; />
+      <datatype base="windowstate" 
xmlns="http://www.mmbase.org/xmlns/datatypes";>
+        <default value="NORMAL" />
+      </datatype>
     </field>
     <field name="refreshpolicy">
       <gui>

Added: speeltuin/mihxil/portal/trunk/src/main/config/components/blockssyncer.xml
===================================================================
--- speeltuin/mihxil/portal/trunk/src/main/config/components/blockssyncer.xml   
                        (rev 0)
+++ speeltuin/mihxil/portal/trunk/src/main/config/components/blockssyncer.xml   
2010-03-25 14:29:07 UTC (rev 41613)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<component
+    name="blockssyncer"
+    version="1"
+    xmlns="http://www.mmbase.org/xmlns/component";
+    xmlns:xi="http://www.w3.org/2001/XInclude";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+    xsi:schemaLocation="http://www.mmbase.org/xmlns/component 
http://www.mmbase.org/xmlns/component.xsd";>
+
+  <class name="org.mmbase.framework.BlocksToDatabaseSyncer" />
+
+  <dependency component="core" version="9" />
+
+
+</component>

Added: 
speeltuin/mihxil/portal/trunk/src/main/config/security/classauthentication.xml
===================================================================
--- 
speeltuin/mihxil/portal/trunk/src/main/config/security/classauthentication.xml  
                            (rev 0)
+++ 
speeltuin/mihxil/portal/trunk/src/main/config/security/classauthentication.xml  
    2010-03-25 14:29:07 UTC (rev 41613)
@@ -0,0 +1,8 @@
+<?xml version="1.0" ?>
+<!DOCTYPE security PUBLIC "-//MMBase//DTD classsecurity config 1.0//EN" 
"http://www.mmbase.org/dtd/classsecurity_1_0.dtd";>
+<security>
+  <authenticate class="org\.mmbase\.framework\.BlocksToDatabaseSyncer">
+    <property name="rank" value="administrator" />
+  </authenticate>
+
+</security>

Added: 
speeltuin/mihxil/portal/trunk/src/main/java/org/mmbase/framework/BlocksToDatabaseSyncer.java
===================================================================
--- 
speeltuin/mihxil/portal/trunk/src/main/java/org/mmbase/framework/BlocksToDatabaseSyncer.java
                                (rev 0)
+++ 
speeltuin/mihxil/portal/trunk/src/main/java/org/mmbase/framework/BlocksToDatabaseSyncer.java
        2010-03-25 14:29:07 UTC (rev 41613)
@@ -0,0 +1,72 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package org.mmbase.framework;
+
+import java.util.*;
+import org.mmbase.bridge.*;
+import org.mmbase.bridge.util.*;
+import org.mmbase.core.event.*;
+
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
+
+/**
+
+ * @author Michiel Meeuwissen
+ * @version $Id: ComponentRepository.java 38472 2009-09-07 13:47:12Z michiel $
+ * @since MMBase-1.9.4
+ */
+
+public class BlocksToDatabaseSyncer extends BasicComponent implements 
SystemEventListener {
+    private static final Logger LOG = 
Logging.getLoggerInstance(BlocksToDatabaseSyncer.class);
+
+
+    public BlocksToDatabaseSyncer(String name) {
+        super(name);
+        EventManager.getInstance().addEventListener(this);
+    }
+
+    public void notify(SystemEvent event) {
+        if (event instanceof ComponentRepository.Ready) {
+            Cloud cloud = 
ContextProvider.getDefaultCloudContext().getCloud("mmbase", "class", null);
+            NodeManager blocks = cloud.getNodeManager("blocks");
+            LOG.service("Syncing blocks builder with" + 
ComponentRepository.getInstance());
+            for (Component component : 
ComponentRepository.getInstance().getComponents()) {
+                LOG.service("Syncing component " + component);
+                for (Block block : component.getBlocks()) {
+                    LOG.debug("Syncing block " + block);
+                    NodeQuery query = blocks.createQuery();
+                    Queries.addConstraint(query, 
Queries.createConstraint(query, "component", Queries.getOperator("="), 
component.getName()));
+                    Queries.addConstraint(query, 
Queries.createConstraint(query, "name", Queries.getOperator("="), 
block.getName()));
+                    LOG.debug("Executing " + query.toSql());
+                    NodeList instances = blocks.getList(query);
+                    String description = block.getDescription().get(null);
+                    if (instances.size() == 0) {
+                        Node instance = blocks.createNode();
+                        instance.setStringValue("component", 
component.getName());
+                        instance.setStringValue("name", block.getName());
+                        instance.setStringValue("description", description);
+                        instance.commit();
+                        LOG.info("Created new block node " + instance);
+                    } else {
+                        LOG.debug("Found objects" + instances);
+                        Node instance = instances.get(0);
+                        if (! 
instance.getStringValue("description").equals(description)) {
+                            instance.setStringValue("description", 
description);
+                            instance.commit();
+                        }
+                    }
+                }
+            }
+            LOG.service("Ready");
+        }
+    }
+}
+

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to