[Mulgara-svn] r1772 - trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi
pag at mulgara.org
pag at mulgara.org
Wed Aug 12 19:04:18 UTC 2009
Author: pag
Date: 2009-08-12 12:04:17 -0700 (Wed, 12 Aug 2009)
New Revision: 1772
Modified:
trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformer.java
trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformerUnitTest.java
Log:
added generics to, and a new private class to reduce the reuse of the same generics code over and over
Modified: trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformer.java
===================================================================
--- trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformer.java 2009-08-12 19:01:41 UTC (rev 1771)
+++ trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformer.java 2009-08-12 19:04:17 UTC (rev 1772)
@@ -47,7 +47,6 @@
import java.util.List;
import java.util.Map;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;
import java.util.Arrays;
@@ -75,6 +74,7 @@
*/
public abstract class ConjunctiveTransformer extends AbstractSymbolicTransformer {
/** Logger */
+ @SuppressWarnings("unused")
private static final Logger logger = Logger.getLogger(ConjunctiveTransformer.class.getName());
protected URI modelTypeURI;
@@ -83,7 +83,7 @@
this.modelTypeURI = modelTypeURI;
}
- public abstract ConstraintExpression constructConstraintExpression(ConstraintElement model, Map byVarSubject, Map byConstSubject) throws SymbolicTransformationException;
+ public abstract ConstraintExpression constructConstraintExpression(ConstraintElement model, Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>> byVarSubject, Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>> byConstSubject) throws SymbolicTransformationException;
@Override
@@ -125,19 +125,17 @@
return cc;
}
- List args = new ArrayList();
+ List<ConstraintExpression> args = new ArrayList<ConstraintExpression>();
args.addAll(acc.getResidualArgs());
- Map varSubByModel = acc.getVarArgsByModel();
- Map constSubByModel = acc.getConstArgsByModel();
+ ArgMap varSubByModel = acc.getVarArgsByModel();
+ ArgMap constSubByModel = acc.getConstArgsByModel();
- Set modelSet = new HashSet();
+ Set<ConstraintElement> modelSet = new HashSet<ConstraintElement>();
modelSet.addAll(varSubByModel.keySet());
modelSet.addAll(constSubByModel.keySet());
- Iterator models = modelSet.iterator();
- while (models.hasNext()) {
- ConstraintElement model = (ConstraintElement)models.next();
- args.add(constructConstraintExpression(model, (Map)varSubByModel.get(model), (Map)constSubByModel.get(model)));
+ for (ConstraintElement model: modelSet) {
+ args.add(constructConstraintExpression(model, varSubByModel.get(model), constSubByModel.get(model)));
}
return new ConstraintConjunction(args);
@@ -147,9 +145,7 @@
public ConjAccumulator transformConj(SymbolicTransformationContext context, ConstraintConjunction cc, ConjAccumulator acc)
throws SymbolicTransformationException {
- Iterator args = cc.getElements().iterator();
- while (args.hasNext()) {
- ConstraintExpression arg = (ConstraintExpression)args.next();
+ for (ConstraintExpression arg: cc.getElements()) {
if (arg instanceof ConstraintConjunction) {
acc = transformConj(context, (ConstraintConjunction)arg, acc);
} else if (arg instanceof ConstraintDisjunction) {
@@ -163,20 +159,32 @@
return acc;
}
+ /**
+ * Convenience interface to avoid having to work with the full template pattern of:
+ * Map<ConstraintElement,Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>>>
+ */
+ private interface ArgMap extends Map<ConstraintElement,Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>>> {
+ }
+ /** Convenience class for implementing ArgMap with a HashMap. */
+ private class ArgHashMap extends HashMap<ConstraintElement,Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>>>
+ implements ArgMap {
+ private static final long serialVersionUID = -5787565491022825665L;
+ }
+
private class ConjAccumulator {
private SymbolicTransformationContext context;
- private Map varArgsByModel;
- private Map constArgsByModel;
- private List residualArgs;
- private boolean transformed;
+ // Map<ConstraintElement,Map<Variable,Map>> varArgsByModel;
+ private ArgMap varArgsByModel;
+ private ArgMap constArgsByModel;
+ private List<ConstraintExpression> residualArgs;
public ConjAccumulator(SymbolicTransformationContext context) {
this.context = context;
- varArgsByModel = new HashMap();
- constArgsByModel = new HashMap();
- residualArgs = new ArrayList();
+ varArgsByModel = new ArgHashMap();
+ constArgsByModel = new ArgHashMap();
+ residualArgs = new ArrayList<ConstraintExpression>();
}
@@ -215,22 +223,22 @@
}
- private void insertByModel(ConstraintElement model, Map target, Constraint arg) {
- Map bySubject = (Map)target.get(model);
+ private void insertByModel(ConstraintElement model, Map<ConstraintElement,Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>>> target, Constraint arg) {
+ Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>> bySubject = target.get(model);
if (bySubject == null) {
- bySubject = new HashMap();
+ bySubject = new HashMap<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>>();
target.put(model, bySubject);
}
- Map byPredicate = (Map)bySubject.get(arg.getElement(0));
+ Map<ConstraintElement,List<ConstraintElement>> byPredicate = bySubject.get(arg.getElement(0));
if (byPredicate == null) {
- byPredicate = new HashMap();
+ byPredicate = new HashMap<ConstraintElement,List<ConstraintElement>>();
bySubject.put(arg.getElement(0), byPredicate);
}
- List objects = (List)byPredicate.get(arg.getElement(1));
+ List<ConstraintElement> objects = byPredicate.get(arg.getElement(1));
if (objects == null) {
- objects = new ArrayList();
+ objects = new ArrayList<ConstraintElement>();
byPredicate.put(arg.getElement(1), objects);
}
@@ -242,15 +250,15 @@
return (varArgsByModel.size() != 0) || (constArgsByModel.size() != 0);
}
- public List getResidualArgs() {
+ public List<ConstraintExpression> getResidualArgs() {
return residualArgs;
}
- public Map getVarArgsByModel() {
+ public ArgMap getVarArgsByModel() {
return varArgsByModel;
}
- public Map getConstArgsByModel() {
+ public ArgMap getConstArgsByModel() {
return constArgsByModel;
}
}
Modified: trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformerUnitTest.java
===================================================================
--- trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformerUnitTest.java 2009-08-12 19:01:41 UTC (rev 1771)
+++ trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/ConjunctiveTransformerUnitTest.java 2009-08-12 19:04:17 UTC (rev 1772)
@@ -47,7 +47,6 @@
// Third party packages
// import org.apache.log4j.Logger;
-import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestCase; // JUnit
import junit.framework.TestSuite;
@@ -569,26 +568,27 @@
}
public ConstraintExpression constructConstraintExpression(ConstraintElement model,
- Map byVarSubject, Map byConstSubject) throws SymbolicTransformationException {
+ Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>> byVarSubject,
+ Map<ConstraintElement,Map<ConstraintElement,List<ConstraintElement>>> byConstSubject) throws SymbolicTransformationException {
String id = model.toString() +
- "|V" + sortedMap((Map<?,?>)byVarSubject) +
- "|C" + sortedMap((Map<?,?>)byConstSubject);
+ "|V" + sortedMap(byVarSubject) +
+ "|C" + sortedMap(byConstSubject);
return new TestConstraint(id);
}
- String sortedMap(Map<?,?> map) {
+ String sortedMap(Map<ConstraintElement,?> map) {
if (map == null) return "{}";
return createSortedMap(map).toString();
}
@SuppressWarnings("unchecked")
- SortedMap<?,?> createSortedMap(Map<?,?> m) {
- SortedMap<?,?> sm = new TreeMap(m);
+ SortedMap<ConstraintElement,?> createSortedMap(Map<ConstraintElement,?> m) {
+ SortedMap<ConstraintElement,?> sm = new TreeMap(m);
for (Map.Entry entry: sm.entrySet()) {
Object v = entry.getValue();
if (v instanceof Map) {
- entry.setValue(createSortedMap((Map<?,?>)v));
+ entry.setValue(createSortedMap((Map<ConstraintElement,?>)v));
}
}
return sm;
More information about the Mulgara-svn
mailing list