[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