[jboss-svn-commits] JBL Code SVN: r20719 - in labs/jbossrules/trunk/drools-guvnor/src: main/java/org/drools/guvnor/client/factmodel and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 24 01:31:37 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-06-24 01:31:37 -0400 (Tue, 24 Jun 2008)
New Revision: 20719

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FactMetaModel.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FieldMetaModel.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/FactModelContentHandler.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/contenthandler/FactModelContentHandlerTest.java
Log:
modelling changes

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FactMetaModel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FactMetaModel.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FactMetaModel.java	2008-06-24 05:31:37 UTC (rev 20719)
@@ -0,0 +1,31 @@
+package org.drools.guvnor.client.factmodel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.guvnor.client.modeldriven.brl.PortableObject;
+
+/**
+ * Represents the GUI data for a fact model definition.
+ *
+ * @author Michael Neale
+ */
+public class FactMetaModel implements PortableObject {
+
+	public String name;
+
+	/**
+	 * @gwt.typeArgs <org.drools.brms.client.factmodel.FieldMetaModel>
+	 */
+	public List fields = new ArrayList();
+
+	public FactMetaModel() {}
+	public FactMetaModel(String name, List fields) {
+		this.name = name;
+		this.fields = fields;
+	}
+
+
+
+}
+


Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FactMetaModel.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FieldMetaModel.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FieldMetaModel.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FieldMetaModel.java	2008-06-24 05:31:37 UTC (rev 20719)
@@ -0,0 +1,16 @@
+package org.drools.guvnor.client.factmodel;
+
+import org.drools.guvnor.client.modeldriven.brl.PortableObject;
+
+public class FieldMetaModel implements PortableObject {
+
+	public String name;
+	public String type;
+
+	public FieldMetaModel() {}
+	public FieldMetaModel(String name, String type) {
+		this.name = name;
+		this.type = type;
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/factmodel/FieldMetaModel.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/FactModelContentHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/FactModelContentHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/FactModelContentHandler.java	2008-06-24 05:31:37 UTC (rev 20719)
@@ -0,0 +1,95 @@
+package org.drools.guvnor.server.contenthandler;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.guvnor.client.factmodel.FactMetaModel;
+import org.drools.guvnor.client.factmodel.FieldMetaModel;
+import org.drools.guvnor.client.rpc.RuleAsset;
+import org.drools.guvnor.server.builder.BRMSPackageBuilder;
+import org.drools.guvnor.server.builder.ContentPackageAssembler.ErrorLogger;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.DroolsParserException;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.TypeDeclarationDescr;
+import org.drools.lang.descr.TypeFieldDescr;
+import org.drools.repository.AssetItem;
+import org.drools.repository.PackageItem;
+import org.drools.repository.RulesRepositoryException;
+
+import com.google.gwt.user.client.rpc.SerializableException;
+
+public class FactModelContentHandler extends ContentHandler implements IRuleAsset {
+
+	@Override
+	public void retrieveAssetContent(RuleAsset asset, PackageItem pkg,
+			AssetItem item) throws SerializableException {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void storeAssetContent(RuleAsset asset, AssetItem repoAsset)
+			throws SerializableException {
+		// TODO Auto-generated method stub
+
+	}
+
+
+	String toDRL(FactMetaModel mm) {
+		StringBuilder sb = new StringBuilder();
+		sb.append("declare " + mm.name);
+		for (int i = 0; i < mm.fields.size(); i++) {
+			FieldMetaModel f = (FieldMetaModel) mm.fields.get(i);
+			sb.append("\n\t");
+			sb.append(f.name + ": " + f.type);
+		}
+		sb.append("\nend");
+		return sb.toString();
+	}
+
+	List<FactMetaModel> toModel(String drl) throws DroolsParserException {
+    	DrlParser parser = new DrlParser();
+    	PackageDescr pkg = parser.parse(drl);
+    	if (parser.hasErrors()) {
+    		throw new RulesRepositoryException("The model drl " + drl + " is not valid");
+    	}
+    	List<TypeDeclarationDescr> types = pkg.getTypeDeclarations();
+    	List<FactMetaModel> list = new ArrayList<FactMetaModel>(types.size());
+    	for (TypeDeclarationDescr td : types) {
+    		FactMetaModel mm = new FactMetaModel();
+			mm.name = td.getTypeName();
+			Map<String, TypeFieldDescr> fields = td.getFields();
+			for (Iterator<String> iterator = fields.keySet().iterator(); iterator.hasNext();) {
+				String fieldName = iterator.next();
+				TypeFieldDescr descr = fields.get(fieldName);
+				FieldMetaModel fm = new FieldMetaModel(fieldName, descr.getPattern().getObjectType());
+				mm.fields.add(fm);
+			}
+			list.add(mm);
+		}
+    	return list;
+	}
+
+	String toDRL(List<FactMetaModel> models) {
+		StringBuilder sb = new StringBuilder();
+		for (FactMetaModel factMetaModel : models) {
+			String drl = toDRL(factMetaModel);
+			sb.append(drl + "\n\n");
+		}
+		return sb.toString().trim();
+	}
+
+	public void assembleDRL(BRMSPackageBuilder builder, AssetItem asset, StringBuffer buf) {
+		buf.append(asset.getContent());
+	}
+
+	public void compile(BRMSPackageBuilder builder, AssetItem asset, ErrorLogger logger) throws DroolsParserException, IOException {
+		builder.addPackageFromDrl( new StringReader(asset.getContent()) );
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/FactModelContentHandler.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/contenthandler/FactModelContentHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/contenthandler/FactModelContentHandlerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/contenthandler/FactModelContentHandlerTest.java	2008-06-24 05:31:37 UTC (rev 20719)
@@ -0,0 +1,58 @@
+package org.drools.guvnor.server.contenthandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.guvnor.client.factmodel.FactMetaModel;
+import org.drools.guvnor.client.factmodel.FieldMetaModel;
+
+public class FactModelContentHandlerTest extends TestCase {
+
+    public void testToDrl() {
+
+        List<FieldMetaModel> fields = new ArrayList<FieldMetaModel>();
+        fields.add(new FieldMetaModel("f1", "int"));
+        fields.add(new FieldMetaModel("f2", "String"));
+
+        FactMetaModel mm = new FactMetaModel("FooBar", fields);
+
+        FactModelContentHandler ch = new FactModelContentHandler();
+        String drl = ch.toDRL(mm);
+        assertNotNull(drl);
+        System.err.println(drl);
+        assertEquals("declare FooBar\n\tf1: int\n\tf2: String\nend", drl);
+
+
+        FactMetaModel mm2 = new FactMetaModel("BooBah", new ArrayList());
+        List<FactMetaModel> models = new ArrayList<FactMetaModel>();
+        models.add(mm);
+        models.add(mm2);
+
+        drl = ch.toDRL(models);
+        System.err.println(drl);
+        assertTrue(drl.indexOf("FooBar") > -1);
+        assertTrue(drl.indexOf("BooBah") > drl.indexOf("FooBar"));
+    }
+
+    public void testFromDrl()  throws Exception {
+    	String drl = "declare FooBar\n\tf1: int\n\tf2: String\nend";
+
+    	FactModelContentHandler ch = new FactModelContentHandler();
+    	List<FactMetaModel> list = ch.toModel(drl);
+    	assertEquals(1, list.size());
+    	FactMetaModel mm = list.get(0);
+    	assertEquals("FooBar", mm.name);
+    	assertEquals(2, mm.fields.size());
+    	FieldMetaModel fm = (FieldMetaModel) mm.fields.get(1);
+    	assertEquals("f1", fm.name);
+    	assertEquals("int", fm.type);
+
+    	fm = (FieldMetaModel) mm.fields.get(0);
+    	assertEquals("f2", fm.name);
+    	assertEquals("String", fm.type);
+
+    }
+}
+


Property changes on: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/contenthandler/FactModelContentHandlerTest.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list