[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