[jboss-svn-commits] JBL Code SVN: r19319 - in labs/jbossrules/contrib/machinelearning/decisiontree/src: test and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Mar 29 22:53:26 EDT 2008


Author: gizil
Date: 2008-03-29 22:53:26 -0400 (Sat, 29 Mar 2008)
New Revision: 19319

Added:
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukFileExample.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukObjectExample.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/RestaurantOld.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/builder/
Removed:
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukFileExample.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukObjectExample.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BooleanDomain.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DBFactSet.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTree.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTreeBuilder.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTreeBuilderMT.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Domain.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DomainFactory.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FSFactSet.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Fact.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FactSet.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FactSetFactory.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/LeafNode.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/LiteralDomain.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/NumericDomain.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/OOFactSet.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Restaurant.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/RulePrinter.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/TreeNode.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Util.java
   labs/jbossrules/contrib/machinelearning/decisiontree/src/test/WorkingMemory.java
Log:
new file system

Copied: labs/jbossrules/contrib/machinelearning/decisiontree/src/test (from rev 19045, labs/jbossrules/contrib/machinelearning/decisiontree/src/id3)

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukFileExample.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/BocukFileExample.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukFileExample.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,44 +0,0 @@
-package id3;
-
-
-public class BocukFileExample {
-
-	public static void main(String[] args) {
-		
-
-		WorkingMemory simple = new WorkingMemory();
-
-
-		/* insert the guys */
-		//String klassCar =  FactSetFactory.insertCarSet(simple);
-		String klassNursery =  FactSetFactory.insertNurserySet(simple);
-		
-		//String klassAdvertisement = FactSetFactory.insertAdvertisementSet(simple);
-
-		
-		boolean buildTree = true;
-		if (buildTree) {
-
-			DecisionTreeBuilder bocuk = new DecisionTreeBuilder();
-			//DecisionTreeBuilderMT bocuk = new DecisionTreeBuilderMT();
-
-			long dt = System.currentTimeMillis();
-			//DecisionTree bocuksTree = bocuk.build(simple, klassCar, "classCar", null);
-			DecisionTree bocuksTree = bocuk.build(simple, klassNursery, "classnursery", null);
-			
-			//DecisionTree bocuksTree = bocuk.build(simple, klassAdvertisement, "classAdvertisement", FactSetFactory.attributesOfAdvertisement);
-			
-			
-			dt = System.currentTimeMillis() - dt;
-			System.out.println("Time"+dt + " facts read: "+bocuksTree.getNumRead() + " num call: "+ bocuk.getNumCall() );
-			//System.out.println(bocuksTree);
-
-			RulePrinter my_printer = new RulePrinter();
-			my_printer.printer(bocuksTree);
-		}
-	}
-
-
-
-}
-

Added: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukFileExample.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukFileExample.java	                        (rev 0)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukFileExample.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -0,0 +1,50 @@
+package test;
+
+import java.util.List;
+
+import dt.DecisionTree;
+import dt.builder.IDTreeBuilder;
+import dt.memory.FactSetFactory;
+import dt.memory.WorkingMemory;
+import dt.tools.RulePrinter;
+
+public class BocukFileExample {
+
+	public static void main(String[] args) {
+		
+
+		WorkingMemory simple = new WorkingMemory();
+
+
+		/* insert the guys */
+		//String klassCar =  FactSetFactory.insertCarSet(simple);
+		String klassNursery =  FactSetFactory.insertNurserySet(simple);
+		
+		//String klassAdvertisement = FactSetFactory.insertAdvertisementSet(simple);
+
+		
+		boolean buildTree = true;
+		if (buildTree) {
+
+			IDTreeBuilder bocuk = new IDTreeBuilder();
+			//DecisionTreeBuilderMT bocuk = new DecisionTreeBuilderMT();
+
+			long dt = System.currentTimeMillis();
+			//DecisionTree bocuksTree = bocuk.build(simple, klassCar, "classCar", null);
+			DecisionTree bocuksTree = bocuk.build(simple, klassNursery, "classnursery", null);
+			
+			//DecisionTree bocuksTree = bocuk.build(simple, klassAdvertisement, "classAdvertisement", FactSetFactory.attributesOfAdvertisement);
+			
+			
+			dt = System.currentTimeMillis() - dt;
+			System.out.println("Time"+dt + " facts read: "+bocuksTree.getNumRead() + " num call: "+ bocuk.getNumCall() );
+			//System.out.println(bocuksTree);
+
+			RulePrinter my_printer = new RulePrinter();
+			my_printer.printer(bocuksTree, null, null);
+		}
+	}
+
+
+}
+

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukObjectExample.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/BocukObjectExample.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukObjectExample.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,45 +0,0 @@
-package id3;
-
-import java.util.ArrayList;
-
-public class BocukObjectExample {
-
-	public static void main(String[] args) {
-		Restaurant arest = new Restaurant(true, false,  false,  true, "Full", 1,   false,   false,  "Thai",    "30-60",  false);
-		Class<?> k = arest.getClass();
-		ArrayList<Object> facts = new ArrayList<Object>();
-		facts.add(new Restaurant(true, false,  false,  true, "Full", 1,   false,   false,  "Thai",    "30-60",  false));
-		facts.add(new Restaurant(false,  true, false,  false,  "Some", 1,   false,   false,  "Burger",  "0-10",   true));
-		facts.add(new Restaurant(true, false,  true, true, "Full", 1,   true,   false,  "Thai",    "10-30",  true));
-		facts.add(new Restaurant(true, false,  true, false,  "Full", 3, false,   true, "French",  ">60",    false)); 
-		facts.add(new Restaurant(false,  true, false,  true, "Some", 2,  true,  true, "Italian", "0-10",   true));
-		facts.add(new Restaurant(false,  true, false,  false,  "None", 1,   true,  false,  "Burger",  "0-10",   false));
-		facts.add(new Restaurant(false,  false,  false,  true, "Some", 2,  true,  true, "Thai",    "0-10",   true));
-		facts.add(new Restaurant(false,  true, true, false,  "Full", 1,   true,  false,  "Burger",  ">60",    false)); 
-		facts.add(new Restaurant(true, true, true, true, "Full", 3, false,   true, "Italian", "10-30",  false)); 
-		facts.add(new Restaurant(false,  false,  false,  false,  "None", 1,   false,   false,  "Thai",    "0-10",   false)); 
-		facts.add(new Restaurant(true, true, true, true, "Full", 1,   false,   false,  "Burger",  "30-60",  true));
-
-		WorkingMemory simple = new WorkingMemory();
-
-
-		for(Object r: facts) {
-			try {
-				simple.insert(r);
-
-			} catch (Exception e) {
-				System.out.println("Inserting element "+ r + " and "+ e);
-			}
-		}
-		
-		DecisionTreeBuilder bocuk = new DecisionTreeBuilder();
-		
-		long dt = System.currentTimeMillis();
-		DecisionTree bocuksTree = bocuk.build(simple, k, "will_wait", null);
-		dt = System.currentTimeMillis() - dt;
-		System.out.println("Time"+dt+"\n"+bocuksTree);
-		
-		RulePrinter my_printer = new RulePrinter();
-		my_printer.printer(bocuksTree);
-	}
-}

Added: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukObjectExample.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukObjectExample.java	                        (rev 0)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BocukObjectExample.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -0,0 +1,51 @@
+package test;
+
+import java.util.ArrayList;
+
+import dt.DecisionTree;
+import dt.builder.IDTreeBuilder;
+import dt.memory.OOFactSet;
+import dt.memory.WorkingMemory;
+import dt.tools.RulePrinter;
+
+public class BocukObjectExample {
+
+	public static void main(String[] args) {
+		RestaurantOld arest = new RestaurantOld(true, false,  false,  true, "Full", 1,   false,   false,  "Thai",    "30-60",  false);
+		Class<?> k = arest.getClass();
+		ArrayList<Object> facts = new ArrayList<Object>();
+		facts.add(new RestaurantOld(true, false,  false,  true, "Full", 1,   false,   false,  "Thai",    "30-60",  false));
+		facts.add(new RestaurantOld(false,  true, false,  false,  "Some", 1,   false,   false,  "Burger",  "0-10",   true));
+		facts.add(new RestaurantOld(true, false,  true, true, "Full", 1,   true,   false,  "Thai",    "10-30",  true));
+		facts.add(new RestaurantOld(true, false,  true, false,  "Full", 3, false,   true, "French",  ">60",    false)); 
+		facts.add(new RestaurantOld(false,  true, false,  true, "Some", 2,  true,  true, "Italian", "0-10",   true));
+		facts.add(new RestaurantOld(false,  true, false,  false,  "None", 1,   true,  false,  "Burger",  "0-10",   false));
+		facts.add(new RestaurantOld(false,  false,  false,  true, "Some", 2,  true,  true, "Thai",    "0-10",   true));
+		facts.add(new RestaurantOld(false,  true, true, false,  "Full", 1,   true,  false,  "Burger",  ">60",    false)); 
+		facts.add(new RestaurantOld(true, true, true, true, "Full", 3, false,   true, "Italian", "10-30",  false)); 
+		facts.add(new RestaurantOld(false,  false,  false,  false,  "None", 1,   false,   false,  "Thai",    "0-10",   false)); 
+		facts.add(new RestaurantOld(true, true, true, true, "Full", 1,   false,   false,  "Burger",  "30-60",  true));
+
+		WorkingMemory simple = new WorkingMemory();
+		OOFactSet fs = simple.getFactSet(arest.getClass());
+
+		for(Object r: facts) {
+			try {
+				//simple.insert(element)
+				fs.insert(r);
+			} catch (Exception e) {
+				System.out.println("Inserting element "+ r + " and "+ e);
+			}
+		}
+		
+		IDTreeBuilder bocuk = new IDTreeBuilder();
+		
+		long dt = System.currentTimeMillis();
+		DecisionTree bocuksTree = bocuk.build(simple, k, "will_wait", null);
+		dt = System.currentTimeMillis() - dt;
+		System.out.println("Time"+dt+"\n"+bocuksTree);
+		
+		RulePrinter my_printer = new RulePrinter();
+		my_printer.printer(bocuksTree,"id3" , new String("src/id3/rules"+".drl"));
+	}
+}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BooleanDomain.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/BooleanDomain.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/BooleanDomain.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,82 +0,0 @@
-package id3;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class BooleanDomain implements Domain<Boolean> {
-
-	private String fName;
-	private ArrayList<Boolean> fValues;
-	private boolean constant;
-
-
-	public BooleanDomain(String _name) {
-		fName = _name.trim();
-		fValues = new ArrayList<Boolean>();
-		fValues.add(Boolean.TRUE);
-		fValues.add(Boolean.FALSE);
-	}
-	
-	public boolean isDiscrete() {
-		return true;
-	}
-
-	public String getName() {
-		return fName;
-	}
-
-	public boolean contains(Boolean value) {
-		return true;
-	}
-
-	public void addValue(Boolean value) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public List<Boolean> getValues() {
-		return fValues;
-	}
-	
-	public int hashCode() {
-		return fName.hashCode();
-	}
-
-	public boolean isConstant() {
-		return this.constant;
-	}
-
-	public void setConstant() {
-		this.constant = true;	
-	}
-	
-	public Object readString(String data) {
-		if (isValid(data))
-			return Boolean.parseBoolean(data);
-		else 
-			return null;
-	}
-	
-	public boolean isValid(String string) {
-		try{
-			Boolean.parseBoolean(string);
-			return true;
-		}
-		catch (Exception e){
-			return false;
-		}
-	}
-	
-	public boolean isPossible(Object value) {
-		//if (isDiscrete() && constant)
-		if (value instanceof Boolean && fValues.contains(value))
-			return true;
-		return false;
-	}
-	
-	public String toString() {
-		String out = fName;
-		return out;
-	}
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DBFactSet.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/DBFactSet.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DBFactSet.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,32 +0,0 @@
-package id3;
-
-import java.util.Collection;
-
-public class DBFactSet implements FactSet{
-
-	public void assignTo(Collection<Fact> c) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public String getClassName() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public Domain<?> getDomain(String attr) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public Collection<Domain<?>> getDomains() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public int getSize() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTree.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/DecisionTree.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTree.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,235 +0,0 @@
-package id3;
-
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-
-public class DecisionTree {
-	
-	public long FACTS_READ = 0;
-	
-	/* set of the attributes, their types*/
-	private Hashtable<String, Domain<?>> domainSet; 
-
-	/* the class of the objects */
-	private String className;
-
-	/* the target attribute */
-	private String target;
-
-	
-	private TreeNode root;
-
-	/* all attributes that can be used during classification */
-	private ArrayList<String> attrsToClassify;
-
-	DecisionTree(String klass) {
-		this.className = klass;
-		this.domainSet = new Hashtable<String, Domain<?>>();
-		this.attrsToClassify = new ArrayList<String>();
-	}
-	
-	
-	private Object getConsensus(List<Fact> facts) {
-		List<?> targetValues = getPossibleValues(this.target);	
-		Hashtable<Object, Integer> facts_in_class = getStatistics(facts, target, targetValues);
-		
-		int winner_vote = 0;
-		Object winner = null;
-		for (Object key: targetValues) {
-
-			int num_in_class = facts_in_class.get(key).intValue();
-			if (num_in_class > winner_vote) {
-				winner_vote = num_in_class;
-				winner = key;
-			}
-		}
-		return winner;
-	}
-
-
-//*OPT*	public double calculateGain(List<FactSet> facts, String attributeName) {	
-	public double calculateGain(List<Fact> facts, String attributeName) {
-		return getInformation(facts) - getGain(facts, attributeName);
-	}
-
-//*OPT*	public double getGain(List<FactSet> facts, String attributeToSplit) {
-	public double getGain(List<Fact> facts, String attributeToSplit) {
-		System.out.println("What is the attributeToSplit? "+attributeToSplit);
-		List<?> attributeValues = getPossibleValues(attributeToSplit);
-
-		String attr_sum = "sum";
-
-		List<?> targetValues = getPossibleValues(target);
-		//Hashtable<Object, Integer> facts_in_class = new Hashtable<Object, Integer>(targetValues.size());
-
-		/* initialize the hashtable */
-		Hashtable<Object, Hashtable<Object, Integer>> facts_of_attribute = new Hashtable<Object, Hashtable<Object, Integer>>(attributeValues.size());
-		for (Object attr: attributeValues) {
-			facts_of_attribute.put(attr, new Hashtable<Object, Integer>(targetValues.size()+1));
-			for (Object t: targetValues) {
-				facts_of_attribute.get(attr).put(t, 0);
-			}
-			facts_of_attribute.get(attr).put(attr_sum, 0);
-		}
-
-
-		int total_num_facts= 0;
-//*OPT*		for (FactSet fs: facts) {
-//*OPT*			for (Fact f: fs.getFacts()) {
-		for (Fact f: facts) {
-				total_num_facts ++;
-				Object targetKey = f.getFieldValue(target);
-				//System.out.println("My key: "+ targetKey.toString());
-
-				Object attr_key = f.getFieldValue(attributeToSplit);
-				int num = facts_of_attribute.get(attr_key).get(targetKey).intValue();
-				num ++;
-				facts_of_attribute.get(attr_key).put(targetKey, num);
-
-				int total_num = facts_of_attribute.get(attr_key).get(attr_sum).intValue();
-				total_num ++;
-				facts_of_attribute.get(attr_key).put(attr_sum, total_num);
-
-//				System.out.println("getGain of "+attributeToSplit+
-//				": total_num "+ facts_of_attribute.get(attr_key).get(attr_sum) +
-//				" and "+facts_of_attribute.get(attr_key).get(targetKey) +
-//				" at attr=" + attr_key + " of t:"+targetKey);
-		}
-		FACTS_READ += facts.size();
-//*OPT*			}
-//*OPT*		}
-
-		double sum = 0.0;
-		for (Object attr: attributeValues) {
-			int total_num_attr = facts_of_attribute.get(attr).get(attr_sum).intValue();
-			
-			double sum_attr = 0.0;
-			if (total_num_attr > 0)
-				for (Object t: targetValues) {
-					int num_attr_target = facts_of_attribute.get(attr).get(t).intValue();
-
-					double prob = (double)num_attr_target/total_num_attr;
-					//System.out.println("prob "+ prob);
-					sum_attr += (prob == 0.0) ? 0.0 : (-1* prob * Util.log2(prob));
-				}
-			sum += ((double)total_num_attr/(double)total_num_facts) * sum_attr;
-		}
-		return sum;
-	}
-	
-//*OPT*		public double getInformation(List<FactSet> facts) {	
-	Hashtable<Object, Integer> getStatistics(List<Fact> facts, String target, List<?> targetValues) {
-		Hashtable<Object, Integer> facts_in_class = new Hashtable<Object, Integer>(targetValues.size());
-
-		for (Object t: targetValues) {
-			facts_in_class.put(t, 0);
-		}
-
-		int total_num_facts= 0;
-//*OPT*		for (FactSet fs: facts) {
-//*OPT*			for (Fact f: fs.getFacts()) {
-		for (Fact f: facts) {
-				total_num_facts++;
-				Object key = f.getFieldValue(target);
-				//System.out.println("My key: "+ key.toString());
-				facts_in_class.put(key, facts_in_class.get(key).intValue() + 1); // bocuk kafa :P
-		}
-		FACTS_READ += facts.size();
-//*OPT*			}
-//*OPT*		}
-		return facts_in_class;
-	}
-
-
-//*OPT*	public double getInformation(List<FactSet> facts) {
-	/** it returns the information value of facts
-	 *  entropy that characterizes the (im)purity of an arbitrary collection of examples
-	 *  @param facts list of facts
-	 */ 
-	public double getInformation(List<Fact> facts) {
-
-		List<?> targetValues = getPossibleValues(this.target);
-		
-		Hashtable<Object, Integer> facts_in_class = getStatistics(facts, target, targetValues);
-		int total_num_facts = facts.size();
-		double sum = 0;
-		for (Object key: targetValues) {
-			int num_in_class = facts_in_class.get(key).intValue();
-			//System.out.println("num_in_class : "+ num_in_class + " key "+ key + " and the total num "+ total_num_facts);
-			double prob = (double) num_in_class / (double) total_num_facts;
-			
-			//double log2= Util.log2(prob);
-			//double plog2p= prob*log2;
-			sum += (prob == 0.0) ? 0.0 :-1* prob * Util.log2(prob);
-			//System.out.println("prob "+ prob +" and the plog(p)"+plog2p+" where the sum: "+sum);
-		}
-		return sum;
-	}
-	
-	public void setTarget(String targetField) {
-		target = targetField;
-		attrsToClassify.remove(target);
-	}
-
-	public void addDomain(Domain<?> domain) {
-		domainSet.put(domain.getName(), domain);
-		if (!domain.getName().equals(this.target))
-			attrsToClassify.add(domain.getName());
-			
-	}
-
-	public List<?> getPossibleValues(String fieldName) {
-		return domainSet.get(fieldName).getValues();
-	}
-	
-	public List<String> getAttributes() {
-		return attrsToClassify;
-	}
-
-	public String getTarget() {
-		return target;
-	}
-	
-	public String getName() {
-		return className;
-	}
-
-
-	public Domain<?> getDomain(String key) {
-		return domainSet.get(key);
-	}
-
-	
-	public TreeNode getRoot() {
-		return(root);
-		
-	}
-	
-	public void setRoot(TreeNode root) {
-		this.root = root;
-		
-	}
-	
-	public long getNumRead() {
-		return FACTS_READ;
-	}
-	@Override
-	public String toString() {
-		return "Facts scanned " + FACTS_READ + "\n" + root.toString();
-	}
-	
-	
-	/* **OPT
-		int getTotalSize(List<FactSet> facts) {
-
-			int num = 0;
-			for(FactSet fs : facts) {
-				num += fs.getSize();
-			}
-
-			return num;
-		}
-	*/
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTreeBuilder.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/DecisionTreeBuilder.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTreeBuilder.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,248 +0,0 @@
-package id3;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Hashtable;
-import java.util.List;
-
-public class DecisionTreeBuilder {
-
-	class MyThread extends Thread {
-		DecisionTreeBuilder builder;
-		DecisionTree dt;
-		List<Fact> facts;
-		List<String> attributeNames;
-		TreeNode currentNode = null;
-		Object value = null;
-		TreeNode result = null;
-		@Override
-		public void run() {
-			result = builder.id3(dt, facts, attributeNames);
-			currentNode.addNode(value, result);
-		}
-	}
-	
-	MyThread helper;
-	private int FUNC_CALL = 0;
-	private int num_fact_processed = 0;
-	
-	/* 
-	 * treebuilder.execute(workingmemory, classtoexecute, attributestoprocess)
-
-	foreach factset in workingmemory
-		if classtoexecute.isAssignableFrom( factset.class )
-			internaladd(factset)
-
-	internalprocess(attributestoprocess)
-	 */
-
-	public DecisionTree build(WorkingMemory wm, Class<?> klass, String targetField, Collection<String> workingAttributes) {
-
-		DecisionTree dt = new DecisionTree(klass.getName());
-//		**OPT		List<FactSet> facts = new ArrayList<FactSet>();
-		ArrayList<Fact> facts = new ArrayList<Fact>();
-		FactSet klass_fs = null;
-		for (FactSet fs: wm.getFactsets()) {
-			if (fs instanceof OOFactSet) {
-				if (klass.isAssignableFrom(((OOFactSet) fs).getFactClass())) {
-//					**OPT		facts.add(fs);
-					fs.assignTo(facts); // adding all facts of fs to "facts
-				}
-			}
-			if (klass.getName() == fs.getClassName()) {
-				klass_fs = fs;
-			}
-		}
-		dt.FACTS_READ += facts.size();
-		
-		num_fact_processed = facts.size();
-			
-		if (workingAttributes != null)
-			for (String attr: workingAttributes) {
-				dt.addDomain(klass_fs.getDomain(attr));
-			}
-		else 
-			for (Domain<?> d: klass_fs.getDomains())
-				dt.addDomain(d);
-
-		dt.setTarget(targetField);
-		
-		ArrayList<String> attrs = new ArrayList<String>(dt.getAttributes());
-		Collections.sort(attrs);
-
-		TreeNode root = id3(dt, facts, attrs);
-		dt.setRoot(root);
-
-		return dt;
-	}
-
-	
-	public DecisionTree build(WorkingMemory wm, String klass, String targetField, Collection<String> workingAttributes) {
-
-		DecisionTree dt = new DecisionTree(klass);
-//		**OPT		List<FactSet> facts = new ArrayList<FactSet>();
-		ArrayList<Fact> facts = new ArrayList<Fact>();
-		FactSet klass_fs = null;
-		for (FactSet fs: wm.getFactsets()) {
-			if (klass == fs.getClassName()) {
-//				**OPT		facts.add(fs);
-				fs.assignTo(facts); // adding all facts of fs to "facts"
-
-				klass_fs = fs;
-				break;
-			}
-		}
-		dt.FACTS_READ += facts.size();
-		num_fact_processed = facts.size(); 
-			
-		if (workingAttributes != null)
-			for (String attr: workingAttributes) {
-				System.out.println("Bok degil "+ attr);
-				if (attr =="aratio") {
-					System.out.println("Bok");
-					System.exit(0);
-				}
-				dt.addDomain(klass_fs.getDomain(attr));
-			}
-		else 
-			for (Domain<?> d: klass_fs.getDomains())
-				dt.addDomain(d);
-
-		dt.setTarget(targetField);
-		
-		ArrayList<String> attrs = new ArrayList<String>(dt.getAttributes());
-		Collections.sort(attrs);
-
-		TreeNode root = id3(dt, facts, attrs);
-		dt.setRoot(root);
-
-		return dt;
-	}
-	//*OPT*	private TreeNode decisionTreeLearning(List<FactSet> facts,
-	//*OPT*										  List<String> attributeNames) {
-	private TreeNode id3(DecisionTree dt, List<Fact> facts, List<String> attributeNames) {
-		
-		FUNC_CALL  ++;
-		if (facts.size() == 0) {
-			throw new RuntimeException("Nothing to classify, factlist is empty");
-		}
-		/* let's get the statistics of the results */
-		List<?> targetValues = dt.getPossibleValues(dt.getTarget());	
-		Hashtable<Object, Integer> stats = dt.getStatistics(facts, dt.getTarget(), targetValues);
-
-		int winner_vote = 0;
-		int num_supporters = 0;
-		Object winner = null;		
-		for (Object key: targetValues) {
-
-			int num_in_class = stats.get(key).intValue();
-			if (num_in_class>0)
-				num_supporters ++;
-			if (num_in_class > winner_vote) {
-				winner_vote = num_in_class;
-				winner = key;
-			}
-		}
-
-		/* if all elements are classified to the same value */
-		if (num_supporters == 1) {
-			//*OPT*			return new LeafNode(facts.get(0).getFact(0).getFieldValue(target));
-			LeafNode classifiedNode = new LeafNode(dt.getDomain(dt.getTarget()), winner);
-			classifiedNode.setRank((double)facts.size()/(double)num_fact_processed);
-			return classifiedNode;
-		}
-
-		/* if  there is no attribute left in order to continue */
-		if (attributeNames.size() == 0) {
-			/* an heuristic of the leaf classification*/
-			LeafNode noAttributeLeftNode = new LeafNode(dt.getDomain(dt.getTarget()), winner);
-			noAttributeLeftNode.setRank((double)winner_vote/(double)num_fact_processed);
-			return noAttributeLeftNode;
-		}
-
-		/* id3 starts */
-		String chosenAttribute = attributeWithGreatestGain(dt, facts, attributeNames);
-
-		System.out.println(Util.ntimes("*", 20)+" 1st best attr: "+ chosenAttribute);
-
-		TreeNode currentNode = new TreeNode(dt.getDomain(chosenAttribute));
-		//ConstantDecisionTree m = majorityValue(ds);
-		/* the majority */
-
-		List<?> attributeValues = dt.getPossibleValues(chosenAttribute);
-		Hashtable<Object, List<Fact> > filtered_facts = splitFacts(facts, chosenAttribute, attributeValues);
-		dt.FACTS_READ += facts.size();
-		
-		 
-//		if (FUNC_CALL ==5) {
-//			System.out.println("FUNC_CALL:" +FUNC_CALL);
-//			System.exit(0);
-//		}
-		for (int i = 0; i < attributeValues.size(); i++) {
-			/* split the last two class at the same time */
-			Object value = attributeValues.get(i);
-			
-			ArrayList<String> attributeNames_copy = new ArrayList<String>(attributeNames);
-			attributeNames_copy.remove(chosenAttribute);
-			
-			if (filtered_facts.get(value).isEmpty()) {
-				/* majority !!!! */
-				LeafNode majorityNode = new LeafNode(dt.getDomain(dt.getTarget()), winner);
-				majorityNode.setRank(0.0);
-				currentNode.addNode(value, majorityNode);
-			} else {
-				TreeNode newNode = id3(dt, filtered_facts.get(value), attributeNames_copy);
-				currentNode.addNode(value, newNode);
-			}
-		}
-
-		return currentNode;
-	}
-	
-	//String chooseAttribute(List<FactSet> facts, List<String> attrs) {
-	public String attributeWithGreatestGain(DecisionTree dt, List<Fact> facts, List<String> attrs) {
-
-		double dt_info = dt.getInformation(facts);
-		double greatestGain = 0.0;
-		String attributeWithGreatestGain = attrs.get(0);
-		for (String attr : attrs) {
-			double gain = dt_info - dt.getGain(facts, attr);
-			System.out.println("Attribute: "+attr +" the gain: "+gain);
-			if (gain > greatestGain) {
-				greatestGain = gain;
-				attributeWithGreatestGain = attr;
-			}
-		}
-
-		return attributeWithGreatestGain;
-	}
-	
-	public Hashtable<Object, List<Fact> > splitFacts(List<Fact> facts, String attributeName, 
-													 List<?> attributeValues) {		
-		Hashtable<Object, List<Fact> > factLists = new Hashtable<Object, List<Fact> >(attributeValues.size());
-		for (Object v: attributeValues) {
-			factLists.put(v, new ArrayList<Fact>());
-		}
-		for (Fact f : facts) {
-			factLists.get(f.getFieldValue(attributeName)).add(f);
-		}
-		return factLists;
-	}
-
-	public void testEntropy(DecisionTree dt, List<Fact> facts) {
-		double initial_info = dt.getInformation(facts); //entropy value
-
-		System.out.println("initial_information: "+ initial_info);
-
-		String first_attr = attributeWithGreatestGain(dt, facts, dt.getAttributes());
-
-		System.out.println("best attr: "+ first_attr);
-	}
-	
-	public int getNumCall() {
-		return FUNC_CALL;
-	}
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTreeBuilderMT.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/DecisionTreeBuilderMT.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DecisionTreeBuilderMT.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,310 +0,0 @@
-package id3;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Hashtable;
-import java.util.List;
-
-public class DecisionTreeBuilderMT {
-
-	class MyThread extends Thread {
-		DecisionTreeBuilderMT builder;
-		DecisionTree dt;
-		List<Fact> facts;
-		List<String> attributeNames;
-		TreeNode currentNode = null;
-		Object value = null;
-		TreeNode result = null;
-		@Override
-		public void run() {
-			result = builder.id3(dt, facts, attributeNames);
-			currentNode.addNode(value, result);
-		}
-	}
-
-	MyThread helper;
-	private int FUNC_CALL = 0;
-	private int num_fact_processed = 0;
-
-	/* 
-	 * treebuilder.execute(workingmemory, classtoexecute, attributestoprocess)
-
-	foreach factset in workingmemory
-		if classtoexecute.isAssignableFrom( factset.class )
-			internaladd(factset)
-
-	internalprocess(attributestoprocess)
-	 */
-
-	public DecisionTree build(WorkingMemory wm, Class<?> klass, String targetField, Collection<String> workingAttributes) {
-
-		DecisionTree dt = new DecisionTree(klass.getName());
-//		**OPT		List<FactSet> facts = new ArrayList<FactSet>();
-		ArrayList<Fact> facts = new ArrayList<Fact>();
-		FactSet klass_fs = null;
-		for (FactSet fs: wm.getFactsets()) {
-			if (fs instanceof OOFactSet) {
-				if (klass.isAssignableFrom(((OOFactSet)fs).getFactClass())) {
-//					**OPT		facts.add(fs);
-					((OOFactSet)fs).assignTo(facts); // adding all facts of fs to "facts"
-
-					if (klass == ((OOFactSet)fs).getFactClass()) {
-						klass_fs = fs;
-					}
-				}
-			} else if (klass.getName()== fs.getClassName()) {
-
-			}
-
-		}
-		dt.FACTS_READ += facts.size();
-
-		num_fact_processed = facts.size();
-
-		if (workingAttributes != null)
-			for (String attr: workingAttributes) {
-				dt.addDomain(klass_fs.getDomain(attr));
-			}
-		else 
-			for (Domain<?> d: klass_fs.getDomains())
-				dt.addDomain(d);
-
-		dt.setTarget(targetField);
-
-		ArrayList<String> attrs = new ArrayList<String>(dt.getAttributes());
-		Collections.sort(attrs);
-
-		helper = new MyThread();
-//		System.out.println("IS ALIVE"+helper.isAlive());
-		TreeNode root = id3(dt, facts, attrs);
-		try {
-			helper.join();
-		} catch (InterruptedException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		dt.setRoot(root);
-
-		return dt;
-	}
-
-	public DecisionTree build(WorkingMemory wm, String klass, String targetField, Collection<String> workingAttributes) {
-
-		DecisionTree dt = new DecisionTree(klass);
-//		**OPT		List<FactSet> facts = new ArrayList<FactSet>();
-		ArrayList<Fact> facts = new ArrayList<Fact>();
-		FactSet klass_fs = null;
-		for (FactSet fs: wm.getFactsets()) {
-			if (klass == fs.getClassName()) {
-//				**OPT		facts.add(fs);
-				fs.assignTo(facts); // adding all facts of fs to "facts"
-
-				klass_fs = fs;
-				break;
-			}
-		}
-		dt.FACTS_READ += facts.size();
-		num_fact_processed = facts.size(); 
-
-		if (workingAttributes != null)
-			for (String attr: workingAttributes) {
-				System.out.println("Bok degil "+ attr);
-				if (attr =="aratio") {
-					System.out.println("Bok");
-					System.exit(0);
-				}
-				dt.addDomain(klass_fs.getDomain(attr));
-			}
-		else 
-			for (Domain<?> d: klass_fs.getDomains())
-				dt.addDomain(d);
-
-		dt.setTarget(targetField);
-
-		ArrayList<String> attrs = new ArrayList<String>(dt.getAttributes());
-		Collections.sort(attrs);
-
-		helper = new MyThread();
-		//System.out.println("IS ALIVE"+helper.isAlive());
-		TreeNode root = id3(dt, facts, attrs);
-		try {
-			helper.join();
-		} catch (InterruptedException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		dt.setRoot(root);
-
-		return dt;
-	}
-
-	/*
-	 function ID3
-		Input:   (R: a set of non-target attributes,
-          		  C: the target attribute,
-          		  S: a training set) returns a decision tree;
-		begin
-   			If S is empty, return a single node with 
-      			value Failure;
-   			If S consists of records all with the same 
-      			value for the target attribute, 
-      			return a single leaf node with that value;
-   			If R is empty, 
-   				then return a single node with the value of the most frequent of the values of the target attribute 
-   				that are found in records of S; [in that case there may be be errors, 
-   				examples that will be improperly classified];
-   			Let A be the attribute with largest 
-      			Gain(A,S) among attributes in R;
-   			Let {aj| j=1,2, .., m} be the values of attribute A;
-   			Let {Sj| j=1,2, .., m} be the subsets of S consisting respectively of records with value aj for A;
-   			Return a tree with root labeled A and arcs labeled a1, a2, .., am going respectively 
-      			to the trees (ID3(R-{A}, C, S1), ID3(R-{A}, C, S2),.....,ID3(R-{A}, C, Sm);
-   			Recursively apply ID3 to subsets {Sj| j=1,2, .., m} until they are empty
-		end
-
-
-	 */
-	//*OPT*	private TreeNode decisionTreeLearning(List<FactSet> facts,
-	//*OPT*										  List<String> attributeNames) {
-	//*OPT*	private TreeNode decisionTreeLearning(List<FactSet> facts,
-	//*OPT*										  List<String> attributeNames) {
-	private TreeNode id3(DecisionTree dt, List<Fact> facts, List<String> attributeNames) {
-
-		FUNC_CALL  ++;
-		if (facts.size() == 0) {
-			throw new RuntimeException("Nothing to classify, factlist is empty");
-		}
-		/* let's get the statistics of the results */
-		List<?> targetValues = dt.getPossibleValues(dt.getTarget());	
-		Hashtable<Object, Integer> stats = dt.getStatistics(facts, dt.getTarget(), targetValues);
-
-		int winner_vote = 0;
-		int num_supporters = 0;
-		Object winner = null;		
-		for (Object key: targetValues) {
-
-			int num_in_class = stats.get(key).intValue();
-			if (num_in_class>0)
-				num_supporters ++;
-			if (num_in_class > winner_vote) {
-				winner_vote = num_in_class;
-				winner = key;
-			}
-		}
-
-		/* if all elements are classified to the same value */
-		if (num_supporters == 1) {
-			//*OPT*			return new LeafNode(facts.get(0).getFact(0).getFieldValue(target));
-			LeafNode classifiedNode = new LeafNode(dt.getDomain(dt.getTarget()), winner);
-			classifiedNode.setRank((double)facts.size()/(double)num_fact_processed);
-			return classifiedNode;
-		}
-
-		/* if  there is no attribute left in order to continue */
-		if (attributeNames.size() == 0) {
-			/* an heuristic of the leaf classification*/
-			LeafNode noAttributeLeftNode = new LeafNode(dt.getDomain(dt.getTarget()), winner);
-			noAttributeLeftNode.setRank((double)winner_vote/(double)num_fact_processed);
-			return noAttributeLeftNode;
-		}
-
-		/* id3 starts */
-		String chosenAttribute = attributeWithGreatestGain(dt, facts, attributeNames);
-
-		System.out.println(Util.ntimes("*", 20)+" 1st best attr: "+ chosenAttribute);
-
-		TreeNode currentNode = new TreeNode(dt.getDomain(chosenAttribute));
-		//ConstantDecisionTree m = majorityValue(ds);
-		/* the majority */
-
-		List<?> attributeValues = dt.getPossibleValues(chosenAttribute);
-		Hashtable<Object, List<Fact> > filtered_facts = splitFacts(facts, chosenAttribute, attributeValues);
-		dt.FACTS_READ += facts.size();
-
-
-//		if (FUNC_CALL ==5) {
-//		System.out.println("FUNC_CALL:" +FUNC_CALL);
-//		System.exit(0);
-//		}
-		for (int i = 0; i < attributeValues.size(); i++) {
-			/* split the last two class at the same time */
-			Object value = attributeValues.get(i);
-
-			ArrayList<String> attributeNames_copy = new ArrayList<String>(attributeNames);
-			attributeNames_copy.remove(chosenAttribute);
-
-			if (filtered_facts.get(value).isEmpty()) {
-				/* majority !!!! */
-				LeafNode majorityNode = new LeafNode(dt.getDomain(dt.getTarget()), winner);
-				majorityNode.setRank(0.0);
-				currentNode.addNode(value, majorityNode);
-			} else {
-//				TreeNode newNode = id3(dt, filtered_facts.get(value), attributeNames_copy);
-//				currentNode.addNode(value, newNode);
-				if (helper.isAlive()) {
-					TreeNode newNode = id3(dt, filtered_facts.get(value), attributeNames_copy);
-					currentNode.addNode(value, newNode);
-				}
-				else {
-					helper.attributeNames = attributeNames_copy;
-					helper.builder = this;
-					helper.dt = dt;
-					helper.facts = filtered_facts.get(value);
-					helper.value = value;
-					helper.currentNode = currentNode;
-					helper.start();
-					System.out.println("helper thread launched");
-				}
-			}
-		}
-
-		return currentNode;
-	}
-
-	//String chooseAttribute(List<FactSet> facts, List<String> attrs) {
-	public String attributeWithGreatestGain(DecisionTree dt, List<Fact> facts, List<String> attrs) {
-
-		double dt_info = dt.getInformation(facts);
-		double greatestGain = 0.0;
-		String attributeWithGreatestGain = attrs.get(0);
-		for (String attr : attrs) {
-			double gain = dt_info - dt.getGain(facts, attr);
-			System.out.println("Attribute: "+attr +" the gain: "+gain);
-			if (gain > greatestGain) {
-				greatestGain = gain;
-				attributeWithGreatestGain = attr;
-			}
-		}
-
-		return attributeWithGreatestGain;
-	}
-
-	public Hashtable<Object, List<Fact> > splitFacts(List<Fact> facts, String attributeName, 
-			List<?> attributeValues) {		
-		Hashtable<Object, List<Fact> > factLists = new Hashtable<Object, List<Fact> >(attributeValues.size());
-		for (Object v: attributeValues) {
-			factLists.put(v, new ArrayList<Fact>());
-		}
-		for (Fact f : facts) {
-			factLists.get(f.getFieldValue(attributeName)).add(f);
-		}
-		return factLists;
-	}
-
-	public void testEntropy(DecisionTree dt, List<Fact> facts) {
-		double initial_info = dt.getInformation(facts); //entropy value
-
-		System.out.println("initial_information: "+ initial_info);
-
-		String first_attr = attributeWithGreatestGain(dt, facts, dt.getAttributes());
-
-		System.out.println("best attr: "+ first_attr);
-	}
-	
-	public int getNumCall() {
-		return FUNC_CALL;
-	}
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Domain.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/Domain.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Domain.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,65 +0,0 @@
-package id3;
-
-import java.util.List;
-
-public interface Domain<T> {
-	
-	boolean isConstant();
-	void setConstant();
-	
-	boolean contains(T value);
-
-	String getName();
-
-	void addValue(T value);
-	
-	List<T> getValues();
-	
-	Object readString(String data);
-	
-	String toString();
-	boolean isPossible(Object value) throws Exception;
-}
-
-
-
-/*
-workingmemory.insert(object)
-
-	factset f = factsets_hashtable[object.class]
-	if f == null
-		f = createnew_factset(object.class);
-	f.insert(object)
-	
-	
-factset workingmemory.createnew_factset(class)
-
-	factset newfs = new newfactset(class) 
-	foreach field in class
-		domain d = domainset_hashtable[field]
-		if d == null
-			d = createnew_domain(field)
-		newfs.adddomain(d)
-
-
-factset.insert(object)
-
-	fact f;
-	foreach field in object
-		domain d = domainset_hashtable[field];
-		attribute attr = d.createattribute(field.value)
-		f.add(attr)
-	addfact(f)
-
-
-treebuilder.execute(workingmemory, classtoexecute, attributestoprocess)
-
-	foreach factset in workingmemory
-		if classtoexecute.isAssignableFrom( factset.class )
-			internaladd(factset)
-
-	internalprocess(attributestoprocess)
-
-
-*/
-

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DomainFactory.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/DomainFactory.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/DomainFactory.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,61 +0,0 @@
-package id3;
-
-public class DomainFactory {
-	public static BooleanDomain createBooleanDomain(String name) {
-		return new BooleanDomain(name);
-		
-	}
-	
-	public static NumericDomain createNumericDomain(String name) {
-		return new NumericDomain(name);
-	}
-
-	public static LiteralDomain createLiteralDomain(String name) {
-		return new LiteralDomain(name);
-	}
-	
-	public static Domain<?> createDomainFromClass(Class<?> c, String domainName) {
-		if (c.isPrimitive())
-			if (c.getName().equalsIgnoreCase("boolean")) {
-				System.out.println("Yuuuupiii boolean");
-				return createBooleanDomain(domainName);
-			} else if (c.getName().equalsIgnoreCase("int") || 
-					 c.getName().equalsIgnoreCase("double") || 
-					 c.getName().equalsIgnoreCase("float")) {
-				System.out.println("Yuuuupiii number");
-				return createNumericDomain(domainName);
-			} else
-				return createComplexDomain(c,"kicimi ye simple: "+domainName);
-		else if (c.isAssignableFrom(String.class)) {
-			System.out.println("Yuuuupiii string");
-			return createLiteralDomain(domainName);
-		} else if (c.isAssignableFrom(Integer.class) || 
-			c.isAssignableFrom(Double.class)  ||
-			c.isAssignableFrom(Float.class)) {
-			return createNumericDomain(domainName);
-		} else if (c.isAssignableFrom(Boolean.class))
-			return createBooleanDomain(domainName);
-		else
-			return createComplexDomain(c,domainName);
-	}
-
-	private static Domain<?> createComplexDomain(Class<?> c, String domainName) {
-		System.out.println("Bok ye this is complex type: "+ c);
-		return null;
-	}
-	
-//	public static Domain<?> createDomainFromString(String data, String domainName) {
-//		if (c.isNumeric()) {
-//			System.out.println("Yuuuupiii string");
-//			return createNumericDomain(domainName);
-//		} else if (c.true/false || 
-//			c.isAssignableFrom(Double.class)  ||
-//			c.isAssignableFrom(Float.class)) {
-//			return createNumericDomain(domainName);
-//		} else if (c.is literal )
-//			return createLiteral(domainName);
-//		else
-//			return createComplexDomain(c,domainName);
-//	}
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FSFactSet.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/FSFactSet.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FSFactSet.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,133 +0,0 @@
-package id3;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-
-public class FSFactSet implements FactSet{
-
-	private List<Fact> facts;
-
-	/* set of attributes defining the type of the fact */
-	//private Set<T> validDomains;
-	private Hashtable<String, Domain<?>> validDomains;
-
-	private String fs_class; 
-	
-	
-	public FSFactSet(String element_class) {
-		this.facts = new ArrayList<Fact>();
-		this.validDomains = new Hashtable<String, Domain<?>>();
-		this.fs_class = element_class;
-	}
-
-
-	public FSFactSet(String element_class, List<Domain<?>> domains) {
-		this.facts = new ArrayList<Fact>();
-		this.validDomains = new Hashtable<String, Domain<?>>(domains.size());
-		this.fs_class = element_class;
-		
-		for (Domain<?> d: domains) {
-			//d.setConstant();
-			validDomains.put(d.getName(), d);
-		}
-		
-	}
-	public boolean insert(String data, List<Domain<?>> domains, String separator){
-		// assume the domains are in the same order with value
-		Fact newfact = new Fact();
-		//Hashtable<String,Object> attributes = new Hashtable<String,Object>();
-		if (data.endsWith("."))
-			data = data.substring(0, data.length()-1);
-		List<String> attributeValues = Arrays.asList(data.split(separator));
-		
-		if (domains.size()== attributeValues.size()){
-
-			Iterator<Domain<?>> domain_it = domains.iterator();
-			Iterator<String> value_it = attributeValues.iterator();
-			while(domain_it.hasNext() && value_it.hasNext()){
-				Domain attr_domain = domain_it.next();
-				//String name = attr_domain.getName();
-
-				Object value =  attr_domain.readString(value_it.next());
-				
-				//System.out.println("Domain "+ name+ " and the value"+value);
-				try {
-					if (value == null) {
-						value = new Double(-1);
-					} else {
-						if (attr_domain.isPossible(value))
-							attr_domain.addValue(value);
-					}
-					newfact.add(attr_domain, value);
-				} catch (Exception e) {
-					System.out.println(e+ " the domain: "+attr_domain.getName()+ " does not accept "+ value);
-					//e.printStackTrace();
-				}
-			}
-			//String targetAttributeName = dataSetSpec.getTarget();
-			//AttributeSpecification attributeSpec =dataSetSpec.getAttributeSpecFor(targetAttributeName );
-			//System.out.println("Fact: "+newfact);
-			boolean result = facts.add(newfact);
-			return result;
-		}
-		else{
-			throw new RuntimeException("Unable to construct Example from " + data);
-		}
-	}
-	
-
-
-	public void add(Fact newFact) {
-		facts.add(newFact);
-	}
-
-
-	public Fact getFact(int index) {
-		return facts.get(index);
-	}
-	
-	public void assignTo(Collection<Fact> c) {
-		c.addAll(facts);
-	}
-	
-	public int getSize() {
-		return facts.size();
-	}
-	
-	/* TODO iterator */ 
-	public Collection<Domain<?>> getDomains() {
-		return validDomains.values();
-	} 
-	
-	/* TODO iterator */ 
-	public Collection<String> getDomainKeys() {
-		return validDomains.keySet();
-	} 
-	
-	public Domain<?> getDomain(String field) {
-		return validDomains.get(field);	
-	}
-
-	public void addDomain(String field, Domain<?> fieldDomain) {
-		validDomains.put(field, fieldDomain);	
-	}
-	
-
-	public String getClassName() {
-		return fs_class;
-	}
-	
-	public String toString() {
-		String out = "";
-		for (Fact f: facts) {
-			out += f.toString() +"\n";
-		}
-		return out;
-	}
-	
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Fact.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/Fact.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Fact.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,75 +0,0 @@
-package id3;
-import java.util.Hashtable;
-import java.util.Set;
-
-
-public class Fact {
-
-	private Hashtable<String, Domain<?>> fields;
-	private Hashtable<String, Object> values;
-
-	public Fact() {
-		this.values = new Hashtable<String, Object>();
-		this.fields = new Hashtable<String, Domain<?>>();
-		/* while creating the fact i should add the possible keys, the valid domains */
-	}
-	
-	public Fact(Set<Domain<?>> domains) {
-		this.fields = new Hashtable<String, Domain<?>>();
-		for (Domain<?> d: domains)
-			this.fields.put(d.getName(), d);
-		this.values = new Hashtable<String, Object>();
-		//this.attributes. of the keys are only these domains
-		/* while creating the fact i should add the possible keys, the valid domains */
-	}
-
-	/*public Fact(Hashtable<Domain<?>, Attribute<?>> attributes) {
-		this.attributes = attributes;
-	}*/
-	
-	/* 
-	 * TODO do i need to check anything before adding 
-	 * maybe i should check if the domain specifications are written somewhere
-	 * 
-	 */
-	public void add(Domain<?> its_domain, Object value) throws Exception {
-		if (!its_domain.isPossible(value))
-			throw new Exception("The value "+value +" is not possible what is going on in domain: "+ its_domain.getName());
-		//System.out.println("Bocuk wants to see the names of the domains "+ its_domain.getName());
-		fields.put(its_domain.getName(), its_domain);
-		values.put(its_domain.getName(), value);
-	}
-
-	public Object getFieldValue(String field_name) {
-		return values.get(field_name);
-	}
-
-	public String getAttributeValueAsString(String name) {
-		Object attr = getFieldValue(name);
-		return (attr != null) ? attr.toString() : null;
-	}
-
-	public boolean equals(Object o) {
-		if (this == o) {
-			return true;
-		}
-		if ((o == null) || (this.getClass() != o.getClass())) {
-			return false;
-		}
-		Fact other = (Fact) o;
-		return fields.equals(other.fields); //TODO work on the equals() fnc
-	}
-
-	public int hashCode() {
-		return fields.hashCode();
-	}
-
-	public String toString() {
-		String out = "";
-		for (String key: fields.keySet())
-		{
-			out += fields.get(key) +"="+values.get(key)+",";
-		}
-		return out;
-	}
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FactSet.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/FactSet.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FactSet.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,19 +0,0 @@
-package id3;
-
-import java.util.Collection;
-
-public interface FactSet {
-
-	String getClassName();
-	
-	void assignTo(Collection<Fact> c);
-
-	Domain<?> getDomain(String attr);
-
-	/* TODO iterator */ 
-	public Collection<Domain<?>> getDomains();
-
-	public int getSize();
-	
-	public String toString();
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FactSetFactory.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/FactSetFactory.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/FactSetFactory.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,196 +0,0 @@
-package id3;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class FactSetFactory {
-	
-	public static String insertNurserySet(WorkingMemory simple) {
-		/*
-		 * not_recom, recommend, very_recom, priority, spec_prior
-
-		| attributes
-
-	parents:     usual, pretentious, great_pret.
-	has_nurs:    proper, less_proper, improper, critical, very_crit.
-	form:        complete, completed, incomplete, foster.
-	children:    1, 2, 3, more.
-	housing:     convenient, less_conv, critical.
-	finance:     convenient, inconv.
-	social:      nonprob, slightly_prob, problematic.
-	health:      recommended, priority, not_recom.
-
-		 */
-
-		String filename = "../data/nursery/nursery.data.txt";
-		String separator = ",";
-		String klass = "Nursey";
-		ArrayList<Domain<?>> domains = new ArrayList<Domain<?>>();
-		domains.add(new LiteralDomain("parents", new String[]{"usual", "pretentious", "great_pret"}));
-		domains.add(new LiteralDomain("has_nurs", new String[]{"proper", "less_proper", "improper", "critical", "very_crit"}));
-		domains.add(new LiteralDomain("form", new String[]{"complete", "completed", "incomplete", "foster"}));
-		domains.add(new LiteralDomain("children", new String[]{"1", "2", "3", "more"}));
-		domains.add(new LiteralDomain("housing", new String[]{"convenient", "less_conv", "critical"}));
-		domains.add(new LiteralDomain("finance", new String[]{"convenient", "inconv"}));
-		domains.add(new LiteralDomain("social", new String[]{"nonprob", "slightly_prob", "problematic"}));
-		domains.add(new LiteralDomain("health", new String[]{"recommended", "priority", "not_recom"}));
-		domains.add(new LiteralDomain("classnursery", new String[]{"not_recom", "recommend", "very_recom", "priority", "spec_prior"}));
-
-		for (Domain<?> d: domains) {
-			d.setConstant();
-		}
-
-		try {
-			FactSetFactory.fromFile(simple, filename, klass, domains , separator);
-			//simple.insert(facts);
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		
-		return klass;
-	}
-
-	public static String insertCarSet(WorkingMemory simple) {
-		/*
-		 * | class values
-
-				unacc, acc, good, vgood
-
-		   | attributes
-
-				buying:   vhigh, high, med, low.
-				maint:    vhigh, high, med, low.
-				doors:    2, 3, 4, 5, more.
-				persons:  2, 4, more.
-				lug_boot: small, med, big.
-				safety:   low, med, high.
-
-		 */
-
-		String filename = "../data/car/car.data.txt";
-		String separator = ",";
-		String klass = "Car";
-		ArrayList<Domain<?>> domains = new ArrayList<Domain<?>>();
-		domains.add(new LiteralDomain("buying", new String[]{"vhigh", "high", "med", "low"}));
-		domains.add(new LiteralDomain("maint", new String[]{"vhigh", "high", "med", "low"}));
-		domains.add(new LiteralDomain("doors", new String[]{"2", "3", "4", "5more"}));
-		domains.add(new LiteralDomain("persons", new String[]{"2", "4", "more"}));
-		domains.add(new LiteralDomain("lug_boot", new String[]{"small", "med", "big"}));
-		domains.add(new LiteralDomain("safety", new String[]{"low", "med", "high"}));
-		domains.add(new LiteralDomain("classCar", new String[]{"unacc", "acc", "good", "vgood"}));
-
-		for (Domain<?> d: domains) {
-			d.setConstant();
-		}
-
-		try {
-			FactSetFactory.fromFile(simple, filename, klass, domains , separator);
-			//simple.insert(facts);
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		
-		return klass;
-	}
-
-	public static String insertAdvertisementSet(WorkingMemory simple) {
-
-		String filename = "../data/advertisement/ad.data.txt";
-		String separator = ",";
-		String klass = "Advertisement";
-		
-		String domainFileName = "../data/advertisement/data_domains.txt";
-		String separatorDomain = ":";
-		ArrayList<Domain<?>> domains;
-		//FSFactSet facts;
-		try {
-			domains = FactSetFactory.fromFileDomain(domainFileName, separatorDomain);
-			
-			FactSetFactory.fromFile(simple, filename, klass, domains , separator);
-			//simple.insert(facts);
-		} catch (Exception e1) {
-			// TODO Auto-generated catch block
-			e1.printStackTrace();
-		}
-		return klass;
-
-	}
-
-
-
-	public static ArrayList<String> attributesOfAdvertisement = new ArrayList<String>();
-
-	
-
-	public static ArrayList<Domain<?>> fromFileDomain(String domainFileName, String separator) 
-	throws Exception {
-
-		ArrayList<Domain<?>> domains = new ArrayList<Domain<?>>();
-		NumericDomain height = new NumericDomain("height");
-		height.setContinuous();
-		
-		NumericDomain width = new NumericDomain("width");
-		height.setContinuous();
-		
-		NumericDomain aratio = new NumericDomain("aratio");
-		height.setContinuous();
-		domains.add(height);
-		domains.add(width);
-		domains.add(aratio);
-
-		BufferedReader reader = new BufferedReader(new InputStreamReader(
-				FactSetFactory.class.getResourceAsStream( domainFileName )));//"../data/" +
-		String line;
-		while ((line = reader.readLine()) != null) {
-			if (!line.startsWith("|")) {
-				List<String> attributeValues = Arrays.asList(line.split(separator, 2));
-				//BooleanDomain newDomain = 
-				attributesOfAdvertisement.add(attributeValues.get(0));
-				domains.add(new BooleanDomain(attributeValues.get(0)));
-			}
-		}
-		
-		domains.add(new LiteralDomain("classAdvertisement", new String[]{"ad", "nonad"}));
-		attributesOfAdvertisement.add("classAdvertisement");
-		System.out.println("# of domains:"+ domains.size());
-
-		return domains;
-
-	}
-	public static void fromFile(WorkingMemory wm, String filename, String klass,List<Domain<?>> domains,String separator) 
-	throws Exception {
-//		FSFactSet fs  = new FSFactSet(klass, domains);
-//
-//		for (Domain<?> d: domains) {
-//			fs.addDomain(d.getName(), d);
-//		}
-
-		BufferedReader reader = new BufferedReader(new InputStreamReader(
-				FactSetFactory.class.getResourceAsStream( filename )));//"../data/" +
-		String line;
-		while ((line = reader.readLine()) != null) {
-//			Fact newFact = fromString(line,domains,separator);
-//			fs.add(newFact);
-			//String element, String name, String separator, List<Domain<?>> domains
-			line = line.trim();
-			if (line.length()==0)
-				break;
-			wm.insert(line,klass, separator,domains);
-		}
-	}
-
-	
-
-	public static Fact fromObject(Object data, List<Domain<?>> domains) {
-		Fact newfact = new Fact();
-		return newfact;
-	}
-
-
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/LeafNode.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/LeafNode.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/LeafNode.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,43 +0,0 @@
-package id3;
-
-
-public class LeafNode extends TreeNode {
-	//represents leaf nodes with the target value
-	private Object targetValue;
-	private double rank;
-
-	public LeafNode(Domain<?> targetDomain, Object value){
-		super(targetDomain);
-		this.targetValue = value;
-	}
-	
-	public void addNode(Object attributeValue, TreeNode node) {
-		throw new RuntimeException("cannot add Node to a leaf node");
-	}
-	
-	public void addLeaf(Object attributeValue, String target, Boolean targetValue) {
-		throw new RuntimeException("cannot add Leaf to a final node");
-	}
-	
-	public Object getValue() {
-		return targetValue;
-	}
-	
-	public double getRank() {
-		return rank;
-	}
-
-	public void setRank(double rank) {
-		this.rank = rank;
-	}
-	
-	public String toString(){
-		return "DECISION -> " + targetValue.toString();
-	}
-	
-	public String toString(int depth, StringBuffer buf) {
-		buf.append(Util.ntimes("\t",depth+1));
-		buf.append("DECISION -> " +targetValue.toString()+"\n");
-		return buf.toString();
-	}
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/LiteralDomain.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/LiteralDomain.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/LiteralDomain.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,94 +0,0 @@
-package id3;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class LiteralDomain implements Domain<String> {
-
-	private String fName;
-	private List<String> fValues;
-	private boolean constant;
-	//private boolean discrete;
-
-
-	public LiteralDomain(String _name) {
-		fName = _name.trim();
-		fValues = new ArrayList<String>();
-		//discrete = true;
-	}
-	
-	public LiteralDomain(String _name, String[] possibleValues) {
-		fName = _name;
-		fValues = Arrays.asList(possibleValues);
-		//discrete = true;
-	}
-	
-//	public void setContinuous() {
-//		discrete = false;
-//	}
-
-	
-//	public boolean isDiscrete() {
-//		return discrete;
-//	}
-
-	public String getName() {
-		return fName;
-	}
-	
-	public void addValue(String value) {
-		if (constant)
-			return;
-		//if (discrete) {
-		if (!fValues.contains(value))
-			fValues.add(value);
-//		} else {
-//			fValues.add(value);
-//		}
-		
-	}
-
-	public boolean contains(String value) {
-		for(String n: fValues) {
-			if (value.equalsIgnoreCase(n))
-				return true;
-		}
-		return false;
-	}
-
-	public List<String> getValues() {
-		return fValues;
-	}
-	
-	public int hashCode() {
-		return fName.hashCode();
-	}
-
-	public boolean isConstant() {
-		return this.constant;
-	}
-
-	public void setConstant() {
-		this.constant = true;
-		
-	}
-	
-	public Object readString(String data) {
-		return data.trim();
-	}
-	
-	public boolean isPossible(Object value) {
-		if (!(value instanceof String))
-			return false;
-		if (constant && !fValues.contains(value))
-			return false;
-		return true;
-	}
-	
-	public String toString() {
-		String out = fName;
-		return out;
-	}
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/NumericDomain.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/NumericDomain.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/NumericDomain.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,153 +0,0 @@
-package id3;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class NumericDomain implements Domain<Number> {
-
-	private String fName;
-	private ArrayList<Number> fValues;
-	private boolean constant;
-	private boolean discrete;
-
-
-	public NumericDomain(String _name) {
-		fName = _name.trim();
-		fValues = new ArrayList<Number>();
-		discrete = true;
-	}
-	public void setContinuous() {
-		discrete = false;
-	}
-	
-	public boolean isDiscrete() {
-		return discrete;
-	}
-
-	public String getName() {
-		return fName;
-	}
-
-	public void addValue(Number value) {
-		if (constant)
-			return;
-		if (discrete) {
-			if (!fValues.contains(value))
-				fValues.add(value);
-		} else {
-			if (fValues.isEmpty()) {
-				fValues.add(value);
-				return;
-			} else if (fValues.size()==1) {
-				if (value.doubleValue() < fValues.get(0).doubleValue()) {
-					Number first = fValues.remove(0);
-					fValues.add(value);
-					fValues.add(first);
-				} else if (value.doubleValue() > fValues.get(0).doubleValue()) {
-					fValues.add(value);
-				}	
-				return;
-			} else {
-				if (value.doubleValue() > fValues.get(1).doubleValue()) {
-					fValues.remove(1);
-					fValues.add(1, value);
-					return;
-				}
-				if (value.doubleValue() < fValues.get(0).doubleValue()) {
-					fValues.remove(0);
-					fValues.add(0, value);	
-					return;
-				}
-			}
-		}
-		
-	}
-
-	public boolean contains(Number value) {
-		for(Number n: fValues) {
-			if (value.intValue() == n.intValue() ||
-				value.doubleValue() == n.doubleValue() ||
-				value.floatValue() == n.floatValue())
-				return true;
-		}
-		return false;
-	}
-
-	public List<Number> getValues() {
-		return fValues;
-	}
-	
-	public int hashCode() {
-		return fName.hashCode();
-	}
-
-	public boolean isConstant() {
-		return this.constant;
-	}
-
-	public void setConstant() {
-		this.constant = true;	
-	}
-
-	public Object readString(String data) {
-		if (isValid(data))
-			return Double.parseDouble(data);
-		else 
-			return null;
-	}
-	
-	public boolean isValid(String string) {
-		if (string == null)
-			return true;
-		try{
-			Double.parseDouble(string);
-			return true;
-		}
-		catch (Exception e){
-			return false;
-		}
-	}
-
-	public boolean isPossible(Object value) throws Exception {
-		//System.out.println("NumericDomain.isPossible() start "+ value+ " ?");
-		
-		if (!(value instanceof Number))
-			return false;
-		//System.exit(0);
-		if (constant) {
-			//System.out.println("NumericDomain.isPossible() constant "+ value+ " ?");
-			//System.exit(0);
-			
-			if (discrete) {
-				if (fValues.contains(value))
-					return true;
-				
-				//System.out.println("NumericDomain.isPossible() constant && discrete "+ value+ " ?");
-				//System.exit(0);
-			} else {
-				if (fValues.isEmpty() || fValues.size()==1)
-					throw new Exception("Numerical domain "+fName+" is constant and not discrete but bounds are not set: possible values size: "+ fValues.size());
-				if (((Number)value).doubleValue() >= fValues.get(0).doubleValue() && 
-					((Number)value).doubleValue() <= fValues.get(1).doubleValue()) {
-					return true;	
-				}
-				//System.out.println("NumericDomain.isPossible() "+ value+ " ?");
-			}
-		} else {
-			return true;
-		}
-		
-		//System.out.println("NumericDomain.isPossible() end "+ value+ " ?");
-		//System.exit(0);
-		
-		return false;
-	}
-	
-	public String toString() {
-		String out = fName;
-		return out;
-	}
-	
-
-
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/OOFactSet.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/OOFactSet.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/OOFactSet.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,133 +0,0 @@
-package id3;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Hashtable;
-import java.util.List;
-
-public class OOFactSet implements FactSet{
-
-	private List<Fact> facts;
-
-	/* set of attributes defining the type of the fact */
-	//private Set<T> validDomains;
-	private Hashtable<String, Domain<?>> validDomains;
-
-	private Class<?> fs_class;
-	
-	public OOFactSet(Class<?> fact_class) {//Class<? extends Object>
-		this.facts = new ArrayList<Fact>();
-		this.validDomains = new Hashtable<String, Domain<?>>();
-		this.fs_class = fact_class;
-	}
-
-	/*
-	 	factset.insert(object)
-			fact f;
-			foreach field in object
-				domain d = domainset_hashtable[field];
-				attribute attr = d.createattribute(field.value)
-				f.add(attr)
-			addfact(f)
-	 */
-	public boolean insert(Object element) {
-		Fact f = new Fact();
-
-		Class<?> element_class = element.getClass();
-		Method [] element_methods = element_class.getDeclaredMethods();
-		for (Method m: element_methods) {
-			String m_name = m.getName();
-			String return_type_name = m.getReturnType().getName();
-			if (Util.isGetter(m_name) & Util.isSimpleType(return_type_name) ) {
-//				if (!Util.isSimpleType(return_type_name))
-//					continue; // in the future we should support classes
-				String field = Util.getAttributeName(m_name);
-
-				/*
-				 * when u first read the element
-				 * 	if the domain specifications are already given 
-				 * 		then read from there and 
-				 * 			 dont add each new value you read, just check if it is valid
-				 * otherwise you create a new domain for that attribute
-				 * Domain attributeSpec = dataSetSpec.getDomain(attr_name);
-				 */
-				Domain fieldDomain = validDomains.get(field);
-				
-				//String
-				Object field_value;
-				try {
-					field_value = m.invoke(element);
-					
-					//Object attribute =  fieldDomain.createAttribute(field_value);
-					if (fieldDomain.isPossible(field_value))
-						fieldDomain.addValue(field_value);
-					f.add(fieldDomain, field_value);
-					//System.out.println("FactSet.insert f "+ f + " fielddomain name "+fieldDomain.getName()+" value: "+field_value+".");
-					
-				} catch (IllegalArgumentException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (IllegalAccessException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (InvocationTargetException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-				
-				
-				
-			}
-		}
-		
-		boolean result = facts.add(f);
-		//System.out.println("FactSet.insert f "+ f + " result "+result+" facts.size(): "+facts.size()+".");
-		return result;
-		
-		
-	}
-	
-	public Fact getFact(int index) {
-		return facts.get(index);
-	}
-	
-	public void assignTo(Collection<Fact> c) {
-		c.addAll(facts);
-	}
-	
-	public int getSize() {
-		return facts.size();
-	}
-	
-	/* TODO iterator */ 
-	public Collection<Domain<?>> getDomains() {
-		return validDomains.values();
-	} 
-	
-	/* TODO iterator */ 
-	public Collection<String> getDomainKeys() {
-		return validDomains.keySet();
-	} 
-	
-	public Domain<?> getDomain(String field) {
-		return validDomains.get(field);	
-	}
-
-	public void addDomain(String field, Domain<?> fieldDomain) {
-		validDomains.put(field, fieldDomain);	
-	}
-	
-	public Class<?> getFactClass() {
-		return fs_class;
-	}
-
-	public String getClassName() {
-		return fs_class.getName();
-	}
-
-	
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Restaurant.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/Restaurant.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Restaurant.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,147 +0,0 @@
-package id3;
-
-
-public class Restaurant {
-	
-
-	private boolean alternate; 	//yesno
-	private boolean bar; 		//yesno
-	private boolean fri_sat ;	//yesno
-	private boolean hungry; 		//yesno
-	private String patrons; 	//String[]{"None","Some","Full"});
-	private int price; 		//",new String[]{"$","$$","$$$"});
-	private boolean raining; 	//yesno
-	private boolean reservation; //yesno
-	private String type; 		//",new String[]{"French","Italian","Thai","Burger"});
-	private String wait_estimate;	//",new String[]{"0-10","10-30","30-60",">60"});
-	private boolean will_wait; 	//yesno
-	
-	
-	public Restaurant (boolean alt, boolean b, boolean f_s, boolean hung, String pat, int pri, 
-				boolean rain, boolean reserv, String t, String wait, boolean will) {
-		alternate = alt; 		//yesno
-		bar = b; 				//yesno
-		fri_sat = f_s;			//yesno
-		hungry = hung; 			//yesno
-		patrons = pat; 			//",new String[]{"None","Some","Full"});
-		price = pri; 			//",new String[]{"$","$$","$$$"});
-		raining = rain; 		//yesno
-		reservation = reserv; 	//yesno
-		type = t; 				//",new String[]{"French","Italian","Thai","Burger"});
-		wait_estimate = wait; 	//",new String[]{"0-10","10-30","30-60",">60"});
-		will_wait = will; 		//yesno
-	}
-
-
-	public boolean getAlternate() {
-		return alternate;
-	}
-
-
-	public void setAlternate(boolean alternate) {
-		this.alternate = alternate;
-	}
-
-
-	public boolean getBar() {
-		return bar;
-	}
-
-
-	public void setBar(boolean bar) {
-		this.bar = bar;
-	}
-
-
-	public boolean getFri_sat() {
-		return fri_sat;
-	}
-
-
-	public void setFri_sat(boolean fri_sat) {
-		this.fri_sat = fri_sat;
-	}
-
-
-	public boolean getHungry() {
-		return hungry;
-	}
-
-
-	public void setHungry(boolean hungry) {
-		this.hungry = hungry;
-	}
-
-
-	public String getPatrons() {
-		return patrons;
-	}
-
-
-	public void setPatrons(String patrons) {
-		this.patrons = patrons;
-	}
-
-
-	public int getPrice() {
-		return price;
-	}
-
-
-	public void setPrice(int price) {
-		this.price = price;
-	}
-
-
-	public boolean getRaining() {
-		return raining;
-	}
-
-
-	public void setRaining(boolean raining) {
-		this.raining = raining;
-	}
-
-
-	public boolean getReservation() {
-		return reservation;
-	}
-
-
-	public void setReservation(boolean reservation) {
-		this.reservation = reservation;
-	}
-
-
-	public String getType() {
-		return type;
-	}
-
-
-	public void setType(String type) {
-		this.type = type;
-	}
-
-
-	public String getWait_estimate() {
-		return wait_estimate;
-	}
-
-
-	public void setWait_estimate(String wait_estimate) {
-		this.wait_estimate = wait_estimate;
-	}
-
-
-	public boolean getWill_wait() {
-		return will_wait;
-	}
-
-
-	public void setWill_wait(boolean will_wait) {
-		this.will_wait = will_wait;
-	}
-	
-	
-
-}

Added: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/RestaurantOld.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/test/RestaurantOld.java	                        (rev 0)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/RestaurantOld.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -0,0 +1,147 @@
+package test;
+
+
+public class RestaurantOld {
+	
+
+	private boolean alternate; 	//yesno
+	private boolean bar; 		//yesno
+	private boolean fri_sat ;	//yesno
+	private boolean hungry; 		//yesno
+	private String patrons; 	//String[]{"None","Some","Full"});
+	private int price; 		//",new String[]{"$","$$","$$$"});
+	private boolean raining; 	//yesno
+	private boolean reservation; //yesno
+	private String type; 		//",new String[]{"French","Italian","Thai","Burger"});
+	private String wait_estimate;	//",new String[]{"0-10","10-30","30-60",">60"});
+	private boolean will_wait; 	//yesno
+	
+	
+	public RestaurantOld (boolean alt, boolean b, boolean f_s, boolean hung, String pat, int pri, 
+				boolean rain, boolean reserv, String t, String wait, boolean will) {
+		alternate = alt; 		//yesno
+		bar = b; 				//yesno
+		fri_sat = f_s;			//yesno
+		hungry = hung; 			//yesno
+		patrons = pat; 			//",new String[]{"None","Some","Full"});
+		price = pri; 			//",new String[]{"$","$$","$$$"});
+		raining = rain; 		//yesno
+		reservation = reserv; 	//yesno
+		type = t; 				//",new String[]{"French","Italian","Thai","Burger"});
+		wait_estimate = wait; 	//",new String[]{"0-10","10-30","30-60",">60"});
+		will_wait = will; 		//yesno
+	}
+
+
+	public boolean getAlternate() {
+		return alternate;
+	}
+
+
+	public void setAlternate(boolean alternate) {
+		this.alternate = alternate;
+	}
+
+
+	public boolean getBar() {
+		return bar;
+	}
+
+
+	public void setBar(boolean bar) {
+		this.bar = bar;
+	}
+
+
+	public boolean getFri_sat() {
+		return fri_sat;
+	}
+
+
+	public void setFri_sat(boolean fri_sat) {
+		this.fri_sat = fri_sat;
+	}
+
+
+	public boolean getHungry() {
+		return hungry;
+	}
+
+
+	public void setHungry(boolean hungry) {
+		this.hungry = hungry;
+	}
+
+
+	public String getPatrons() {
+		return patrons;
+	}
+
+
+	public void setPatrons(String patrons) {
+		this.patrons = patrons;
+	}
+
+
+	public int getPrice() {
+		return price;
+	}
+
+
+	public void setPrice(int price) {
+		this.price = price;
+	}
+
+
+	public boolean getRaining() {
+		return raining;
+	}
+
+
+	public void setRaining(boolean raining) {
+		this.raining = raining;
+	}
+
+
+	public boolean getReservation() {
+		return reservation;
+	}
+
+
+	public void setReservation(boolean reservation) {
+		this.reservation = reservation;
+	}
+
+
+	public String getType() {
+		return type;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+
+	public String getWait_estimate() {
+		return wait_estimate;
+	}
+
+
+	public void setWait_estimate(String wait_estimate) {
+		this.wait_estimate = wait_estimate;
+	}
+
+
+	public boolean getWill_wait() {
+		return will_wait;
+	}
+
+
+	public void setWill_wait(boolean will_wait) {
+		this.will_wait = will_wait;
+	}
+	
+	
+
+}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/RulePrinter.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/RulePrinter.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/RulePrinter.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,252 +0,0 @@
-package id3;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Stack;
-
-public class RulePrinter {
-	
-	private ArrayList<String> ruleText;
-	//private ArrayList<ArrayList<NodeValue>> rule_list;
-	private ArrayList<Rule> rules;
-	
-	private Stack<NodeValue> nodes;
-	
-	private Object ruleObject;
-	//private RuleComparator rule_comp = new RuleComparator();
-	
-	public RulePrinter() {
-		ruleText = new ArrayList<String>();
-		//rule_list = new ArrayList<ArrayList<NodeValue>>();
-		rules = new ArrayList<Rule>();
-		
-		/* most important */
-		nodes = new Stack<NodeValue>();
-	}
-	
-	public void printer(DecisionTree dt) {//, PrintStream object
-		ruleObject = dt.getName();
-		dfs(dt.getRoot());
-		
-//		int j = 0;
-//		for( String rule: ruleText) {
-//			j++;
-//			System.out.println("Rule " +j + " suggests that \n"+ rule +".\n");
-//		}
-		
-		int i = 0;
-		Collections.sort(rules, Rule.getRankComparator());
-		for( Rule rule: rules) {
-			i++;
-			System.out.println("//rule " +i + " write to drl \n"+ rule +"\n");
-		}
-	}
-	
-	private void dfs(TreeNode my_node) {
-		NodeValue node_value = new NodeValue(my_node);
-		nodes.push(node_value);
-		
-		if (my_node instanceof LeafNode) {
-			node_value.setNodeValue(((LeafNode) my_node).getValue());
-			ruleText.add(print(nodes));
-			//rule_list.add(spit(nodes));
-			// what if more than one condition (more than one leafNode)
-			
-			rules.add(spitRule(nodes));
-			return;
-		}
-		
-		Hashtable<Object,TreeNode> children = my_node.getChildren();
-		for (Object attributeValue : children.keySet()) {
-			//System.out.println("Domain: "+ my_node.getDomain().getName() + " the value:"+ attributeValue);
-			node_value.setNodeValue(attributeValue);		
-			TreeNode child = children.get(attributeValue);
-			dfs(child);
-			nodes.pop();
-		}
-		return;
-		
-		
-			
-		
-	}
-	private ArrayList<NodeValue> spit(Stack<NodeValue> nodes) {
-		ArrayList<NodeValue> list_nodes = new ArrayList<NodeValue>(nodes.size());
-		Iterator<NodeValue> it = nodes.iterator();
-
-		while (it.hasNext()) {
-			
-			NodeValue current = it.next();
-			list_nodes.add(current);
-		}
-		return list_nodes;	
-	}
-	
-	private Rule spitRule(Stack<NodeValue> nodes) {
-						//, Stack<NodeValue> leaves // if more than one leaf
-		Rule newRule = new Rule(nodes.size());// (nodes, leaves) //if more than one leaf
-		Iterator<NodeValue> it = nodes.iterator();
-
-		while (it.hasNext()) {
-			
-			NodeValue current = it.next();
-			if (it.hasNext()) { 
-				newRule.addCondition(current);
-			} else {
-				newRule.addAction(current);
-			}
-		}
-		return newRule;	
-	}
-	
-	private String print(Stack<NodeValue> nodes) {
-		Iterator<NodeValue> it = nodes.iterator();
-		
-		String out = "rule \"1 rank:\" \n";
-		out += "\t when";
-		out += "\t\t "+ruleObject+"Object("+ "";
-		while (it.hasNext()) {
-			
-			NodeValue current = it.next();
-			if (it.hasNext()) { 
-				out += "" + current.getDomain() + " == "+ current.getNodeValue() +" & " ;
-			} else {
-				out = out.substring(0, out.length()-2) + ")\n";
-				out += "\n\t then ";
-				out += "\n\t\t System.out.println(\"Decision (\"" + current.getDomain() + "\") = \""+ current.getNodeValue()+");";
-			}
-		}
-		
-		/*
-		 
-		rule "Good Bye"
-    		dialect "java"
-			when
-				Message( status == Message.GOODBYE, message : message )
-			then
-				System.out.println( "Goodbye: " + message ); 
-		end
-		 */
-		return out;	
-	}
-	
-}
-
-
-
-
-class Rule {
-
-	private double rank;
-	private ArrayList<NodeValue> conditions;
-	private ArrayList<NodeValue>  actions;
-	
-	Rule(int numCond) {
-		conditions = new ArrayList<NodeValue>(numCond);
-		actions = new ArrayList<NodeValue>(1);
-	}
-
-	public double getRank() {
-		return rank;
-	}
-
-	public void addCondition(NodeValue current) {
-		conditions.add(new NodeValue(current.getNode(), current.getNodeValue()));
-	}
-	public void addAction(NodeValue current) {
-		actions.add(new NodeValue(current.getNode(), current.getNodeValue()));
-		rank = ((LeafNode)current.getNode()).getRank();
-	}
-	
-	
-	public String toString() {
-		/*
-		 
-		rule "Good Bye"
-    		dialect "java"
-			when
-				Message( status == Message.GOODBYE, message : message )
-			then
-				System.out.println( "Goodbye: " + message ); 
-		end
-		 */
-
-		String out = "rule \"#x rank:"+rank+"\" \n";
-		out += "\t when";
-		out += "\n\t\t Object("+ "";
-		for (NodeValue cond: conditions) {
-			out += cond + " & ";
-		}
-	
-		out = out.substring(0, out.length()-3) + ")\n";
-		
-		
-		String action = "";
-		for (NodeValue act: actions) {
-			action += act.getNodeValue() + " & ";
-		}
-		action = action.substring(0, action.length()-3);
-		
-		out += "\n\t then ";
-		out += "\n\t\t System.out.println(\"Decision (\"+" + action + "+\")\");";
-
-		return out;
-	}
-	
-
-	public static Comparator<Rule> getRankComparator() {
-		return new RuleComparator();
-	}
-	
-	private static class RuleComparator implements Comparator<Rule>{
-		public int compare(Rule r1, Rule r2) {
-			if (r1.getRank() < r2.getRank())
-				return -1;
-			else if (r1.getRank() > r2.getRank())
-				return 1;
-			else
-				return 0;
-		}	
-	}
-}
-
-
-class NodeValue {
-	
-	private TreeNode node;
-	private Object nodeValue;
-	
-	
-	NodeValue(TreeNode n) {
-		this.node = n;
-	}
-	
-	NodeValue(TreeNode n, Object value) {
-		this.node = n;
-		this.nodeValue = value;
-	}
-	public String getDomain() {
-		return node.getDomain().getName();
-	}
-	
-	public TreeNode getNode() {
-		return node;
-	}
-	public void setNode(TreeNode node) {
-		this.node = node;
-	}
-	public Object getNodeValue() {
-		return nodeValue;
-	}
-	public void setNodeValue(Object nodeValue) {
-		this.nodeValue = nodeValue;
-	}
-	public String toString() {
-		return node.getDomain() + " == "+ nodeValue; 
-	}
-		
-}
-

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/TreeNode.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/TreeNode.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/TreeNode.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,58 +0,0 @@
-package id3;
-import java.util.Hashtable;
-
-
-public class TreeNode {
-	
-	private Domain<?> domain;
-	private Hashtable<Object, TreeNode> children;
-	
-	
-	public TreeNode(Domain<?> domain)
-	{
-		this.domain = domain;
-		this.children = new Hashtable<Object, TreeNode>();
-	}
-	
-	
-	public void addNode(Object attributeValue, TreeNode node) {
-		children.put(attributeValue, node);
-	}
-
-	public Domain<?> getDomain() {
-		return domain;
-	}
-
-	public void setDomain(Domain<?> domain) {
-		this.domain = domain;
-	}
-
-	public Hashtable<Object, TreeNode> getChildren() {
-		return children;
-	}
-
-	public void setChildren(Hashtable<Object, TreeNode> children) {
-		this.children = children;
-	}
-	
-	public String toString() {
-		return toString(1, new StringBuffer());
-	}
-
-	public String toString(int depth, StringBuffer buf) {
-		if (domain != null) {
-			buf.append(Util.ntimes("\t", depth));
-			buf.append(Util.ntimes("***",1));
-			buf.append( domain.getName() + " \n");
-			for (Object attributeValue : children.keySet()) {
-				buf.append(Util.ntimes("\t", depth + 1));
-				buf.append("+" + attributeValue );
-				buf.append("\n");
-				TreeNode child = children.get(attributeValue);
-				buf.append(child.toString(depth + 1, new StringBuffer()));
-			}
-		}
-		return buf.toString();
-	}
-	
-}

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Util.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/Util.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/Util.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,43 +0,0 @@
-package id3;
-
-public class Util {
-	
-	public static String ntimes(String s,int n){
-		StringBuffer buf = new StringBuffer();
-		for (int i = 0; i < n; i++) {
-			buf.append(s);
-		}
-		return buf.toString();
-	}
-	
-	//private static HashSet<String> simpletype = new HashSet<String>(0);
-	public static boolean isSimpleType(String type_name) {
-//		simpletype.contains(type_name)
-		if (type_name.equalsIgnoreCase("boolean") ||
-			type_name.equalsIgnoreCase("int") ||
-			type_name.equalsIgnoreCase("double") ||
-			type_name.equalsIgnoreCase("float") ||
-			type_name.equalsIgnoreCase("java.lang.String"))
-			return true;
-		return false;
-	}
-
-	public static boolean isGetter(String method_name) {
-		if (method_name.startsWith("get") || method_name.startsWith("is") )
-			return true;
-		return false;
-	}
-
-	public static String getAttributeName(String method_name) {
-		if (method_name.startsWith("get"))
-			return method_name.substring(3, method_name.length()).toLowerCase();
-		else if (method_name.startsWith("is"))
-			return method_name.substring(2, method_name.length()).toLowerCase();
-		return null;
-	}
-
-	public static double log2(double prob) {
-		return Math.log(prob) / Math.log(2);
-	}
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/contrib/machinelearning/decisiontree/src/test/WorkingMemory.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/decisiontree/src/id3/WorkingMemory.java	2008-03-17 23:56:55 UTC (rev 19045)
+++ labs/jbossrules/contrib/machinelearning/decisiontree/src/test/WorkingMemory.java	2008-03-30 02:53:26 UTC (rev 19319)
@@ -1,196 +0,0 @@
-package id3;
-
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.Hashtable;
-import java.util.List;
-
-public class WorkingMemory {
-	
-	private Hashtable<String, FactSet> factsets;
-
-	private Hashtable<String, Domain<?>> domainset;
-	
-	public WorkingMemory() {
-		factsets = new Hashtable<String, FactSet>();
-		domainset = new Hashtable<String, Domain<?>>();
-	}
-
-	public void insert(Object element) {
-		String element_class = element.getClass().getName();
-		//System.out.println("Get the keys:"+ factsets.keys());
-		//System.out.println("WorkingMemory.get class "+ element_class + " exist? "+ factsets.containsKey(element_class));
-		
-		OOFactSet fs;
-		if (!factsets.containsKey(element_class))
-			fs = create_factset(element);
-		else
-			fs = (OOFactSet) factsets.get(element_class);//TODO should i cast
-		
-		fs.insert(element);
-		System.out.println("WorkingMemory.insert(object) inserted element fs.size() "+ fs.getSize());
-	}
-	
-	public void insert(String element, String name, String separator, List<Domain<?>> domains) {
-
-		FSFactSet fs;
-		if (!factsets.containsKey(name)) {
-			fs =  new FSFactSet(name, domains);
-			for (Domain<?> d: domains) {
-				fs.addDomain(d.getName(), d);
-				if (domainset.containsKey(d.getName()) || domainset.contains(d)) {
-					System.out.println("WorkingMemory.insert Already exist domain bla????? name: "+name+ " domain: "+d.getName());
-					System.exit(0);
-				} else
-					domainset.put(d.getName(), d);
-			}
-			factsets.put(name, fs);
-		} else
-			fs = (FSFactSet) factsets.get(name);//TODO should i cast
-		
-		fs.insert(element, domains, separator);
-		//System.out.println("WorkingMemory.insert(string) inserted element fs.size() "+ fs.getSize());
-	}
-	
-//	public void insert(FactSet fs) {
-//		System.out.println("factset : "+ fs.getSize());
-//		if (!factsets.containsKey(fs.getClassName())) {
-//			for (Domain<?> d : fs.getDomains()) {
-//				System.out.println("Domain"+ d.getName());
-//				if (domainset.containsKey(d.getName()) || domainset.contains(d))
-//					System.out.println("Already exist domain bla?????");
-//				else
-//					domainset.put(d.getName(), d);
-//				
-//				//System.out.println("WorkingMemory.create_factset field "+ field + " fielddomain name "+fieldDomain.getName()+" return_type_name: "+return_type_name+".");
-//				
-//				
-//			}
-//			factsets.put(fs.getClassName(), fs);
-//		} else {
-//			System.out.println("Already exist bla?????");
-//		}
-//	}
-
-	
-	/* factset workingmemory.createnew_factset(class) 
-	 * 	=> instead of the class i have to pass the object itself because i am going to invoke the method
-	 * 	=> no actually i will not invoke
-	 * 		factset newfs = new newfactset(class) 
-	 *			foreach field in class
-	 *			domain d = domainset_hashtable[field]
-	 *			if d == null
-	 *				d = createnew_domain(field)
-	 *			newfs.adddomain(d)=> why do you add this the factset? 
-	 *								 we said that the domains should be independent from the factset
-	 */
-	private OOFactSet create_factset(Object element) {
-		//System.out.println("WorkingMemory.create_factset element "+ element );
-		
-		Class<?> element_class = element.getClass();
-		OOFactSet newfs = new OOFactSet(element_class);
-
-		Method [] element_methods = element_class.getDeclaredMethods();
-		for( Method m: element_methods) {
-			
-			
-			String m_name = m.getName();
-			String return_type_name = m.getReturnType().getName();
-			//System.out.println("WorkingMemory.create_factset m "+ m + " method name "+m_name+" return_type_name: "+return_type_name+".");
-			if (Util.isGetter(m_name) & Util.isSimpleType(return_type_name)) {
-				String field = Util.getAttributeName(m_name);
-				/*
-				 * when u first read the element
-				 * 	if the domain specifications are already given 
-				 * 		then read from there and 
-				 * 			 dont add each new value you read, just check if it is valid
-				 * otherwise you create a new domain for that attribute
-				 * Domain attributeSpec = dataSetSpec.getDomain(attr_name);
-				 */
-				Domain<?> fieldDomain;
-				if (!domainset.containsKey(field))
-					fieldDomain = DomainFactory.createDomainFromClass(m.getReturnType(), field);
-				else
-					fieldDomain = domainset.get(field);
-				
-				//System.out.println("WorkingMemory.create_factset field "+ field + " fielddomain name "+fieldDomain.getName()+" return_type_name: "+return_type_name+".");
-				
-				domainset.put(field, fieldDomain);
-				newfs.addDomain(field, fieldDomain);
-				
-				//System.out.println("START: WorkingMemory.create_factset domainset size "+ domainset.size() + " newfs size "+newfs.getFacts().size()+".");
-				
-			}
-		}
-		
-		factsets.put(element_class.getName(), newfs);
-		return newfs;
-	}
-	
-	/* TODO: iterator */ 
-	public Collection<FactSet> getFactsets() {
-		return factsets.values();
-	}
-
-	public Domain<?> getDomain(String field) {
-		return domainset.get(field);
-	}
-
-	public boolean containsDomainKey(String field) {
-		return domainset.containsKey(field);
-	}
-
-	public void putDomain(String field, Domain<?> fieldDomain) {
-		this.domainset.put(field, fieldDomain);
-		
-	}
-
-	public void putFactSet(String klass_name, FactSet newfs) {
-		factsets.put(klass_name, newfs);	
-	}
-
-	public boolean containsFactSetKey(String field) {
-		return factsets.containsKey(field);
-	}
-}
-
-
-/*
-workingmemory.insert(object)
-
-	factset fs = factsets_hashtable[object.class]
-	if fs == null
-		fs = createnew_factset(object.class);
-	fs.insert(object)
-	
-	
-factset workingmemory.createnew_factset(class)
-
-	factset newfs = new newfactset(class) 
-	foreach field in class
-		domain d = domainset_hashtable[field]
-		if d == null
-			d = createnew_domain(field)
-		newfs.adddomain(d)
-
-
-factset.insert(object)
-
-	fact f;
-	foreach field in object
-		domain d = domainset_hashtable[field];
-		attribute attr = d.createattribute(field.value)
-		f.add(attr)
-	addfact(f)
-
-
-treebuilder.execute(workingmemory, classtoexecute, attributestoprocess)
-
-	foreach factset in workingmemory
-		if classtoexecute.isAssignableFrom( factset.class )
-			internaladd(factset)
-
-	internalprocess(attributestoprocess)
-
-
-*/
\ No newline at end of file




More information about the jboss-svn-commits mailing list