[jboss-svn-commits] JBL Code SVN: r20554 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: rule and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 17 06:18:16 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-06-17 06:18:16 -0400 (Tue, 17 Jun 2008)
New Revision: 20554

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DynamicFact.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/FactType.java
Log:
small improvements for generated beans

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java	2008-06-17 10:14:39 UTC (rev 20553)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/factmodel/ClassDefinition.java	2008-06-17 10:18:16 UTC (rev 20554)
@@ -24,9 +24,12 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.drools.base.ClassFieldAccessor;
 import org.drools.base.ClassFieldAccessorCache;
@@ -249,4 +252,21 @@
 		this.getField(field).getFieldAccessor().setValue(bean, value);
 	}
 
+	public Map<String, Object> getAsMap(Object bean) {
+		Map<String, Object> m = new HashMap<String, Object>(fields.size());
+		for (Iterator<Map.Entry<String, FieldDefinition>> iterator = this.fields.entrySet().iterator(); iterator.hasNext();) {
+			Map.Entry<String, FieldDefinition> ent = iterator.next();
+			Object val = ent.getValue().getFieldAccessor().getValue(bean);
+			m.put(ent.getKey(), val);
+		}
+		return m;
+	}
+
+	public void setFromMap(Object bean, Map<String, Object> data) {
+		for (Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator(); iterator.hasNext();) {
+			Map.Entry<String, Object> ent = iterator.next();
+			set(bean, ent.getKey(), ent.getValue());
+		}
+	}
+
 }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DynamicFact.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DynamicFact.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DynamicFact.java	2008-06-17 10:18:16 UTC (rev 20554)
@@ -0,0 +1,109 @@
+package org.drools.rule;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * DO NOT USE THIS YET. Use FactType instead.
+ *
+ * @author michaelneale
+ *
+ */
+public class DynamicFact implements Map<String, Object> {
+
+	private Object bean;
+	private FactType typeDef;
+
+	public DynamicFact(Object bean, FactType typeDef) {
+		this.bean = bean;
+		this.typeDef = typeDef;
+	}
+
+	public void clear() {
+		throw new UnsupportedOperationException();
+	}
+
+	public boolean containsKey(Object key) {
+		return this.typeDef.getField((String) key) != null;
+	}
+
+	public boolean containsValue(Object arg0) {
+		throw new UnsupportedOperationException();
+	}
+
+	public Set entrySet() {
+
+		Set set = new HashSet();
+
+		List<FactField> list = this.typeDef.getFields();
+		for (FactField factField : list) {
+			final FactField ff = factField;
+			Map.Entry<String, Object> ent = new Map.Entry<String, Object>() {
+
+				public String getKey() {
+					return ff.getName();
+				}
+
+				public Object getValue() {
+					return typeDef.get(bean, ff.getName());
+				}
+
+				public Object setValue(Object o) {
+					typeDef.set(bean, ff.getName(), o);
+					return o;
+				}
+
+			};
+		}
+
+		return set;
+
+	}
+
+	public Object get(Object fieldName) {
+		return this.typeDef.get(bean, (String) fieldName);
+	}
+
+	public boolean isEmpty() {
+		return this.typeDef.getFields().size() == 0;
+	}
+
+	public Set<String> keySet() {
+		return null;
+	}
+
+	public Object put(String key, Object value) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void putAll(Map arg0) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public Object remove(Object arg0) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public int size() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public Collection values() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Object getFactObject() {
+		return this.bean;
+	}
+
+
+
+}


Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DynamicFact.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/FactType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/FactType.java	2008-06-17 10:14:39 UTC (rev 20553)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/FactType.java	2008-06-17 10:18:16 UTC (rev 20554)
@@ -19,6 +19,7 @@
 package org.drools.rule;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * FactType declarations are fact definitions (like classes) that
@@ -48,4 +49,8 @@
     public void set(Object bean, String field, Object value);
 
     public Object get(Object bean, String field);
+
+    public Map<String, Object> getAsMap(Object bean);
+
+    public void setFromMap(Object bean, Map<String, Object> values);
 }




More information about the jboss-svn-commits mailing list