[Mulgara-svn] r1760 - in trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational: . d2rq
pag at mulgara.org
pag at mulgara.org
Fri Jul 10 16:37:21 UTC 2009
Author: pag
Date: 2009-07-10 09:37:20 -0700 (Fri, 10 Jul 2009)
New Revision: 1760
Modified:
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/BNodeDesc.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/ColumnDesc.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/LiteralDesc.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/PatternDesc.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RedirectDesc.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalAnswer.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolver.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolverUnitTest.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalTransformer.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/VariableDesc.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/AdditionalPropertyElem.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/D2RQDefn.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatabaseElem.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatatypePropertyBridgeElem.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ObjectPropertyBridgeElem.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/PropertyBridgeElem.java
trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/TranslationTableElem.java
Log:
Added the getRowExpectedCount method to supplant getRowUpperBound, and removed warnings by adding generics
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/BNodeDesc.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/BNodeDesc.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/BNodeDesc.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -41,48 +41,39 @@
*/
package org.mulgara.resolver.relational;
-import java.util.Arrays;
import java.util.Set;
-import java.util.List;
import java.util.HashSet;
-import java.util.ArrayList;
-import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
-import java.net.URI;
-import java.net.URISyntaxException;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.jrdf.graph.Node;
-import org.jrdf.graph.URIReference;
-import org.jrdf.graph.Literal;
import org.mulgara.query.TuplesException;
import org.mulgara.query.rdf.VariableNodeImpl;
import org.mulgara.resolver.relational.d2rq.ClassMapElem;
-import org.mulgara.resolver.relational.d2rq.DatatypePropertyBridgeElem;
-import org.mulgara.resolver.relational.d2rq.ObjectPropertyBridgeElem;
public class BNodeDesc extends VariableDesc {
+ @SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(RelationalResolver.class);
- private final Set tables;
- private final Set columns;
+ private final Set<String> tables;
+ private final Set<String> columns;
private String bnodeClass;
- private Map columnIndices;
+ private Map<String,Integer> columnIndices;
public BNodeDesc(ClassMapElem cmap) {
super(cmap);
this.bnodeClass = cmap.klass;
String[] split = cmap.bNodeIdColumns.split("\\s*,\\s*");
- tables = new HashSet();
- columns = new HashSet();
- columnIndices = new HashMap();
+ tables = new HashSet<String>();
+ columns = new HashSet<String>();
+ columnIndices = new HashMap<String,Integer>();
for (int i = 0; i < split.length; i++) {
columns.add(split[i]);
@@ -96,9 +87,8 @@
public Node getNode(ResultSet resultSet) throws SQLException, TuplesException {
StringBuffer buff = new StringBuffer(bnodeClass);
- Iterator i = columns.iterator();
- while (i.hasNext()) {
- int index = ((Integer)columnIndices.get(i.next())).intValue();
+ for (String c: columns) {
+ int index = columnIndices.get(c).intValue();
buff.append("|||");
buff.append(resultSet.getString(index + 1));
}
@@ -106,11 +96,11 @@
return new VariableNodeImpl(buff.toString());
}
- public Set getTables() {
+ public Set<String> getTables() {
return tables;
}
- public Set getColumns() {
+ public Set<String> getColumns() {
return columns;
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/ColumnDesc.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/ColumnDesc.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/ColumnDesc.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -63,6 +63,7 @@
import org.mulgara.resolver.relational.d2rq.TranslationTableElem;
public class ColumnDesc extends VariableDesc {
+ @SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(ColumnDesc.class);
private String column;
@@ -70,7 +71,7 @@
private int index;
private TranslationTableElem ttable;
- private Class resourceType;
+ private Class<? extends Node> resourceType;
public ColumnDesc(ClassMapElem classMap) {
super(classMap);
@@ -132,11 +133,11 @@
return getColumn() + " = " + encode(getColumn(), value);
}
- public Set getTables() {
+ public Set<String> getTables() {
return Collections.singleton(table);
}
- public Set getColumns() {
+ public Set<String> getColumns() {
return Collections.singleton(column);
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/LiteralDesc.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/LiteralDesc.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/LiteralDesc.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -91,12 +91,12 @@
throw new IllegalStateException("Can't restrict literal");
}
- public Set getTables() {
- return Collections.EMPTY_SET;
+ public Set<String> getTables() {
+ return Collections.emptySet();
}
- public Set getColumns() {
- return Collections.EMPTY_SET;
+ public Set<String> getColumns() {
+ return Collections.emptySet();
}
public String getTable() {
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/PatternDesc.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/PatternDesc.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/PatternDesc.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -41,7 +41,6 @@
*/
package org.mulgara.resolver.relational;
-import java.util.Arrays;
import java.util.Set;
import java.util.List;
import java.util.HashSet;
@@ -63,24 +62,24 @@
import org.mulgara.query.rdf.URIReferenceImpl;
import org.mulgara.query.rdf.LiteralImpl;
import org.mulgara.resolver.relational.d2rq.ClassMapElem;
-import org.mulgara.resolver.relational.d2rq.D2RQDefn;
import org.mulgara.resolver.relational.d2rq.DatatypePropertyBridgeElem;
import org.mulgara.resolver.relational.d2rq.ObjectPropertyBridgeElem;
import org.mulgara.resolver.relational.d2rq.TranslationTableElem;
public class PatternDesc extends VariableDesc {
+ @SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(PatternDesc.class);
- private Set tables;
- private Set columns;
+ private Set<String> tables;
+ private Set<String> columns;
- private List pattern; // Order is str : column : str : column : ....
- private Class anticipClass;
+ private List<String> pattern; // Order is str : column : str : column : ....
+ private Class<? extends Node> anticipClass;
private URI datatype;
private String lang;
- private Map columnIndices;
+ private Map<String,Integer> columnIndices;
private TranslationTableElem ttable;
@@ -109,7 +108,7 @@
}
}
- private void init(String rawPattern, TranslationTableElem ttable, Class anticipatedClass) {
+ private void init(String rawPattern, TranslationTableElem ttable, Class<? extends Node> anticipatedClass) {
if (rawPattern == null) {
throw new IllegalArgumentException("Attempt to create PatternDesc with null pattern");
}
@@ -117,10 +116,10 @@
this.ttable = ttable;
anticipClass = anticipatedClass;
String[] split = rawPattern.split("@@");
- tables = new HashSet();
- columns = new HashSet();
- pattern = new ArrayList();
- columnIndices = new HashMap();
+ tables = new HashSet<String>();
+ columns = new HashSet<String>();
+ pattern = new ArrayList<String>();
+ columnIndices = new HashMap<String,Integer>();
boolean isColumn = true;
for (int i = 0; i < split.length; i++) {
isColumn = !isColumn; // Note this makes the initial state *false*
@@ -138,15 +137,14 @@
public Node getNode(ResultSet resultSet) throws SQLException, TuplesException {
StringBuffer buff = new StringBuffer();
- Iterator i = pattern.iterator();
boolean isColumn = true;
- while (i.hasNext()) {
+ for (String p: pattern) {
isColumn = !isColumn; // Note this makes the initial state *false*
if (isColumn) {
- int index = ((Integer)columnIndices.get(i.next())).intValue();
+ int index = columnIndices.get(p).intValue();
buff.append(resultSet.getString(index + 1));
} else {
- buff.append((String)i.next());
+ buff.append(p);
}
}
@@ -179,15 +177,17 @@
}
}
- public Set getTables() {
+ public Set<String> getTables() {
return tables;
}
- public Set getColumns() {
+ public Set<String> getColumns() {
return columns;
}
- private class EscapeContinuation extends Exception {}
+ private class EscapeContinuation extends Exception {
+ private static final long serialVersionUID = -7899849917859481249L;
+ }
public String restrict(String rdfValue) {
// Note: There are two possible approaches to this function. The first (simpler) approach is to
@@ -199,9 +199,9 @@
// independent terms. The resulting query can therefore be run against indicies where available,
// and is amenable to optimisation by the sql engine.
try {
- List terms = new ArrayList();
+ List<String> terms = new ArrayList<String>();
String value = rdfValue;
- Iterator i = pattern.iterator();
+ Iterator<String> i = pattern.iterator();
String str = (String)i.next();
if (!value.startsWith(str)) {
throw new EscapeContinuation();
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RedirectDesc.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RedirectDesc.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RedirectDesc.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -54,14 +54,15 @@
import org.mulgara.query.TuplesException;
public class RedirectDesc extends VariableDesc {
+ @SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(RedirectDesc.class);
- private List descs;
+ private List<VariableDesc> descs;
private int index;
public RedirectDesc(VariableDesc desc) {
super(desc.defn);
- this.descs = new ArrayList();
+ this.descs = new ArrayList<VariableDesc>();
}
/**
@@ -91,11 +92,11 @@
throw new IllegalStateException("Can't restrict using a RedirectDesc");
}
- public Set getTables() {
+ public Set<String> getTables() {
throw new IllegalStateException("RedirectDesc has no tables");
}
- public Set getColumns() {
+ public Set<String> getColumns() {
throw new IllegalStateException("RedirectDesc has no columns");
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalAnswer.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalAnswer.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalAnswer.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -45,28 +45,17 @@
// Standard Java packages.
import java.sql.Connection;
-import java.util.Arrays;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import java.util.Iterator;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import org.jrdf.graph.URIReference;
-import org.jrdf.graph.Literal;
-
// Local packages
import org.mulgara.query.Answer;
import org.mulgara.query.Cursor;
import org.mulgara.query.TuplesException;
import org.mulgara.query.Variable;
-import org.mulgara.query.rdf.URIReferenceImpl;
-import org.mulgara.query.rdf.LiteralImpl;
-import org.mulgara.store.tuples.AbstractTuples;
public class RelationalAnswer implements Answer {
private static Logger logger = Logger.getLogger(RelationalAnswer.class.getName());
@@ -74,10 +63,10 @@
private Connection conn;
private Statement statement;
private ResultSet result;
- private List variables;
+ private List<Variable> variables;
private RelationalQuery query;
- private List queryList;
- private Iterator queries;
+ private List<String> queryList;
+ private Iterator<String> queries;
public RelationalAnswer(RelationalQuery query, Connection conn) throws TuplesException {
if (logger.isDebugEnabled()) {
@@ -101,7 +90,7 @@
}
public Object getObject(int column) throws TuplesException {
- return getObject((Variable)variables.get(column));
+ return getObject(variables.get(column));
}
public Object getObject(String columnName) throws TuplesException {
@@ -131,7 +120,7 @@
queries = queryList.iterator();
if (queries.hasNext()) {
- result = statement.executeQuery((String)queries.next());
+ result = statement.executeQuery(queries.next());
}
} catch (SQLException es) {
throw new TuplesException("Failed to resolve query '" + query.getQuery() + "'", es);
@@ -162,7 +151,7 @@
}
public Variable[] getVariables() {
- return (Variable[])variables.toArray(new Variable[] {});
+ return variables.toArray(new Variable[] {});
}
public boolean isUnconstrained() {
@@ -178,6 +167,10 @@
return getRowCount();
}
+ public long getRowExpectedCount() {
+ return getRowCount();
+ }
+
public int getRowCardinality() {
return Cursor.MANY;
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalQuery.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -54,10 +54,8 @@
import org.apache.log4j.Logger;
import org.jrdf.graph.URIReference;
-import org.jrdf.graph.Literal
-;
+import org.jrdf.graph.Literal;
import org.mulgara.query.TuplesException;
-import org.mulgara.query.QueryException;
import org.mulgara.query.Variable;
@@ -75,30 +73,28 @@
/** Logger */
private static Logger logger = Logger.getLogger(RelationalQuery.class);
- private Set tableSet;
- private List columnList;
- private Set restrictionSet;
- private Map variableMap;
- private Set variableSet;
+ private Set<String> tableSet;
+ private List<String> columnList;
+ private Set<String> restrictionSet;
+ private Map<Variable,VariableDesc> variableMap;
+ private Set<Variable> variableSet;
- private Map unionCases;
- private List selectExtension;
+ private Map<LiteralDesc,List<UnionCase>> unionCases;
public RelationalQuery() {
- tableSet = new HashSet();
- columnList = new ArrayList();
- restrictionSet = new HashSet();
- variableMap = new HashMap();
- unionCases = new HashMap();
- selectExtension = new ArrayList();
- variableSet = new HashSet();
+ tableSet = new HashSet<String>();
+ columnList = new ArrayList<String>();
+ restrictionSet = new HashSet<String>();
+ variableMap = new HashMap<Variable,VariableDesc>();
+ unionCases = new HashMap<LiteralDesc,List<UnionCase>>();
+ variableSet = new HashSet<Variable>();
}
public void addTable(String table) {
tableSet.add(table);
}
- public void addTables(Set tables) {
+ public void addTables(Set<String> tables) {
tableSet.addAll(tables);
}
@@ -128,9 +124,9 @@
// variable predicate. This would result in multiple restrictions/variables associated
// with each union case. To handle that we probably would need to move the map generation
// out into the Resolution.
- List unionCaseList = (List)unionCases.get(predVariable);
+ List<UnionCase> unionCaseList = unionCases.get(predVariable);
if (unionCaseList == null) {
- unionCaseList = new ArrayList();
+ unionCaseList = new ArrayList<UnionCase>();
unionCases.put(predVariable, unionCaseList);
}
@@ -139,7 +135,7 @@
// Allow for the existence of variables in the object position that do not participate
// elsewhere in the constraint.
if (unionCase.obj instanceof Variable) {
- variableSet.add(unionCase.obj);
+ variableSet.add((Variable)unionCase.obj);
}
}
@@ -148,7 +144,7 @@
restrictionSet.add(restriction);
}
- public List getQuery() {
+ public List<String> getQuery() {
if (unionCases.size() == 0) {
String sql = "SELECT " + toList(columnList, ", ") + " FROM " + toList(tableSet, ", ");
if (restrictionSet.size() > 0) {
@@ -158,8 +154,8 @@
return Collections.singletonList(sql);
} else {
// Too many side-effects here. There must be a better way of doing this.
- List indexList = assignIndicies();
- List selectList = generateSelectQueries(new ArrayList(), new SubQuery(), indexList, 0);
+ List<LiteralDesc> indexList = assignIndicies();
+ List<String> selectList = generateSelectQueries(new ArrayList<String>(), new SubQuery(), indexList, 0);
if (!variableSet.equals(variableMap.keySet())) {
throw new IllegalStateException("Post query generated variableMap must match variableSet. map=" + variableMap + ", set=" + variableSet);
@@ -170,11 +166,9 @@
}
- private List assignIndicies() {
- List indexList = new ArrayList();
- Iterator i = unionCases.keySet().iterator();
- while (i.hasNext()) {
- LiteralDesc desc = (LiteralDesc)i.next();
+ private List<LiteralDesc> assignIndicies() {
+ List<LiteralDesc> indexList = new ArrayList<LiteralDesc>();
+ for (LiteralDesc desc: unionCases.keySet()) {
indexList.add(desc);
}
@@ -182,18 +176,19 @@
}
private class SubQuery implements Cloneable {
- public ArrayList columnList = new ArrayList();
- public ArrayList objColumnList = new ArrayList();
- public HashSet restrictionSet = new HashSet();
- public HashSet tableSet = new HashSet();
+ public ArrayList<String> columnList = new ArrayList<String>();
+ public ArrayList<String> objColumnList = new ArrayList<String>();
+ public HashSet<String> restrictionSet = new HashSet<String>();
+ public HashSet<String> tableSet = new HashSet<String>();
+ @SuppressWarnings("unchecked")
public Object clone() {
try {
SubQuery c = (SubQuery)super.clone();
- c.columnList = (ArrayList)columnList.clone();
- c.objColumnList = (ArrayList)objColumnList.clone();
- c.restrictionSet = (HashSet)restrictionSet.clone();
- c.tableSet = (HashSet)tableSet.clone();
+ c.columnList = (ArrayList<String>)columnList.clone();
+ c.objColumnList = (ArrayList<String>)objColumnList.clone();
+ c.restrictionSet = (HashSet<String>)restrictionSet.clone();
+ c.tableSet = (HashSet<String>)tableSet.clone();
return c;
} catch (CloneNotSupportedException ec) {
@@ -245,15 +240,13 @@
/**
* @return The accumulator is returned having accumulated the required select queries.
*/
- private List generateSelectQueries(List accum, SubQuery subQuery, List indexList, int index) {
+ private List<String> generateSelectQueries(List<String> accum, SubQuery subQuery, List<LiteralDesc> indexList, int index) {
if (index >= indexList.size()) {
accum.add(generateSelectQuery(subQuery));
} else {
- LiteralDesc desc = (LiteralDesc)indexList.get(index);
- List cases = (List)unionCases.get(desc);
- Iterator i = cases.iterator();
- while (i.hasNext()) {
- UnionCase cse = (UnionCase)i.next();
+ LiteralDesc desc = indexList.get(index);
+ List<UnionCase> cases = unionCases.get(desc);
+ for (UnionCase cse: cases) {
SubQuery sq = (SubQuery)subQuery.clone();
sq.columnList.add("'" + cse.pred + "'");
@@ -264,7 +257,7 @@
if (cse.obj instanceof Variable) { // Variable object.
// Obtain a redirect descriptor for variable.
- VariableDesc od = (VariableDesc)variableMap.get(cse.obj);
+ VariableDesc od = variableMap.get(cse.obj);
RedirectDesc rdesc;
if (od == null) {
rdesc = new RedirectDesc(desc);
@@ -284,9 +277,7 @@
sq.tableSet.addAll(cse.desc.getTables());
// Handle conditions and joins. cut-n-paste from includePropertyBridge - refactor required
- Iterator vjoins = cse.desc.getJoin().iterator();
- while (vjoins.hasNext()) {
- String join = (String)vjoins.next();
+ for (String join: cse.desc.getJoin()) {
sq.tableSet.addAll(RelationalResolver.extractTablesFromJoin(join));
sq.restrictionSet.add(join);
}
@@ -296,9 +287,7 @@
sq.columnList.add(Integer.toString(rdesc.addVariableDesc(cse.desc)));
// Handle Columns
- Iterator cols = cse.desc.getColumns().iterator();
- while (cols.hasNext()) {
- String c = (String)cols.next();
+ for (String c: cse.desc.getColumns()) {
int newIndex = columnList.indexOf(c);
if (newIndex == -1) {
newIndex = sq.columnList.indexOf(c);
@@ -317,9 +306,7 @@
sq.tableSet.addAll(cse.desc.getTables());
// Handle conditions and joins. cut-n-paste from includePropertyBridge - refactor required
- Iterator ljoins = cse.desc.getJoin().iterator();
- while (ljoins.hasNext()) {
- String join = (String)ljoins.next();
+ for (String join: cse.desc.getJoin()) {
sq.tableSet.addAll(RelationalResolver.extractTablesFromJoin(join));
sq.restrictionSet.add(join);
}
@@ -344,12 +331,12 @@
return accum;
}
- public List getVariables() {
- return new ArrayList(variableSet);
+ public List<Variable> getVariables() {
+ return new ArrayList<Variable>(variableSet);
}
public VariableDesc getVariableDesc(Variable var) throws TuplesException {
- VariableDesc desc = (VariableDesc)variableMap.get(var);
+ VariableDesc desc = variableMap.get(var);
if (desc == null) {
throw new TuplesException("Variable not found: " + var);
}
@@ -357,25 +344,16 @@
return desc;
}
- public static String toList(Collection strings, String delim) {
+ public static String toList(Collection<String> strings, String delim) {
StringBuffer result;
- Iterator i = strings.iterator();
+ Iterator<String> i = strings.iterator();
if (!i.hasNext()) {
return "";
} else {
- Object o = i.next();
- try {
- result = new StringBuffer((String)o);
- } catch (ClassCastException ec) {
- logger.warn("Attempting to cast " + o + " to string");
- throw ec;
- }
+ String s = i.next();
+ result = new StringBuffer(s);
}
-
- while (i.hasNext()) {
- result.append(delim + i.next().toString());
- }
-
+ while (i.hasNext()) result.append(delim + i.next().toString());
return result.toString();
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolution.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -46,6 +46,7 @@
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Properties;
import java.util.List;
import java.util.Map;
@@ -61,7 +62,6 @@
import org.mulgara.resolver.spi.EmptyResolution;
import org.mulgara.resolver.spi.LocalizedTuples;
import org.mulgara.resolver.spi.Resolution;
-import org.mulgara.resolver.spi.Resolver;
import org.mulgara.resolver.spi.ResolverSession;
import org.mulgara.store.tuples.Tuples;
import org.mulgara.store.tuples.TuplesOperations;
@@ -102,6 +102,7 @@
private int[] refCount;
private ResolverSession resolverSession;
private int[] columnMapping;
+ private long cachedCount = -1;
/**
* @param constraint the constraint to resolver, never <code>null</code>
@@ -141,11 +142,11 @@
}
public long getRowCount() throws TuplesException {
- if (result == null) {
- beforeFirst();
+ if (cachedCount == -1) {
+ if (result == null) beforeFirst();
+ cachedCount = result.getRowCount();
}
-
- return result.getRowCount();
+ return cachedCount;
}
public long getRowUpperBound() throws TuplesException {
@@ -160,10 +161,15 @@
//
// My intuition tells me that we want to be as far right as possible, so maybe this is the optimal
// solution..
- return Long.MAX_VALUE;
+ return cachedCount == -1 ? Long.MAX_VALUE : cachedCount;
}
+ public long getRowExpectedCount() throws TuplesException {
+ return cachedCount == -1 ? Long.MAX_VALUE : cachedCount;
+ }
+
+
public int getRowCardinality() throws TuplesException {
return Cursor.MANY;
}
@@ -212,8 +218,8 @@
}
}
- public List getOperands() {
- return new ArrayList();
+ public List<Tuples> getOperands() {
+ return Collections.emptyList();
}
public void beforeFirst() throws TuplesException {
@@ -266,7 +272,7 @@
}
- public Annotation getAnnotation(Class annotationClass) throws TuplesException {
+ public Annotation getAnnotation(Class<? extends Annotation> annotationClass) throws TuplesException {
return null;
}
@@ -292,11 +298,11 @@
throw new TuplesException("RelationalResolution does not support suffix != 0");
}
- Iterator i = constraint.getRdfTypeConstraints().iterator();
+ Iterator<ConstraintExpression> i = constraint.getRdfTypeConstraints().iterator();
if (!i.hasNext()) {
this.result = new EmptyResolution(constraint, true);
} else {
- List result = new ArrayList();
+ List<Tuples> result = new ArrayList<Tuples>();
try {
while (i.hasNext()) {
Constraint head = (Constraint)i.next();
@@ -305,7 +311,7 @@
this.result = TuplesOperations.join(result);
} finally {
- close((Tuples[]) result.toArray(new Tuples[result.size()]));
+ close(result.toArray(new Tuples[result.size()]));
}
}
@@ -383,14 +389,11 @@
includeInstanceQuery(query, subj, classMap);
// Include properties
- List additionalProperties = new ArrayList();
- Map propBs = (Map)defn.objPropBridges.get(classMap.klass);
- Map dataBs = (Map)defn.dataPropBridges.get(classMap.klass);
- List constraints = (List)constraint.getConstraintsBySubject(subj);
- Iterator i = constraints.iterator();
- while (i.hasNext()) {
- Constraint c = (Constraint)i.next();
-
+ List<Tuples> additionalProperties = new ArrayList<Tuples>();
+ Map<String,? extends PropertyBridgeElem> propBs = defn.objPropBridges.get(classMap.klass);
+ Map<String,? extends PropertyBridgeElem> dataBs = defn.dataPropBridges.get(classMap.klass);
+ List<Constraint> constraints = constraint.getConstraintsBySubject(subj);
+ for (Constraint c: constraints) {
ConstraintElement pred = c.getElement(1);
if (pred instanceof Variable) {
includeVariablePropertyBridge(query, (Variable)pred, c, propBs, dataBs);
@@ -399,9 +402,7 @@
includePropertyBridge(query, c, dataBs);
// If we find a matching additional property then save it for distribution over the result.
- Iterator aprops = classMap.additionalProperties.iterator();
- while (aprops.hasNext()) {
- AdditionalPropertyElem ape = (AdditionalPropertyElem)aprops.next();
+ for (AdditionalPropertyElem ape: classMap.additionalProperties) {
if (ape.name.equals(c.getElement(1).toString())) {
if (c.getElement(2) instanceof Variable) {
@@ -471,16 +472,13 @@
throw new TuplesException("Error in PK definition: " + classMap + " - " + desc);
}
query.addTables(desc.getTables());
- Iterator i = desc.getColumns().iterator();
- while (i.hasNext()) {
- String c = (String)i.next();
+ for (String c: desc.getColumns()) {
desc.assignColumnIndex(c, query.addColumn(c));
}
query.addVariable((Variable)instance, desc);
- Iterator j = classMap.condition.iterator();
- while (j.hasNext()) {
- query.addRestriction((String)j.next());
+ for (String c: classMap.condition) {
+ query.addRestriction(c);
}
} else { // subj !instanceof Variable
VariableDesc desc;
@@ -498,17 +496,16 @@
query.addTables(desc.getTables());
query.addRestriction(desc.restrict(instance.toString()));
- Iterator j = classMap.condition.iterator();
- while (j.hasNext()) {
- query.addRestriction((String)j.next());
+ for (String r: classMap.condition) {
+ query.addRestriction(r);
}
}
}
- private void includePropertyBridge(RelationalQuery query, Constraint c, Map propBs)
+ private void includePropertyBridge(RelationalQuery query, Constraint c, Map<String,? extends PropertyBridgeElem> propBs)
throws TuplesException {
ConstraintElement pred = c.getElement(1);
- PropertyBridgeElem propB = (PropertyBridgeElem)propBs.get(pred.toString());
+ PropertyBridgeElem propB = propBs.get(pred.toString());
if (propB != null) {
if (propB instanceof ObjectPropertyBridgeElem) {
includeObjectPropertyBridge(query, c.getElement(2), (ObjectPropertyBridgeElem)propB);
@@ -518,14 +515,11 @@
throw new TuplesException("Unknown propertybridge type");
}
- Iterator i = propB.condition.iterator();
- while (i.hasNext()) {
- query.addRestriction((String)i.next());
+ for (String r: propB.condition) {
+ query.addRestriction(r);
}
- Iterator j = propB.join.iterator();
- while (j.hasNext()) {
- String join = (String)j.next();
+ for (String join: propB.join) {
query.addTables(RelationalResolver.extractTablesFromJoin(join));
query.addRestriction(join);
}
@@ -534,30 +528,26 @@
private void includeVariablePropertyBridge(RelationalQuery query, Variable p, Constraint c,
- Map propBs, Map dataBs) throws TuplesException {
+ Map<String,? extends PropertyBridgeElem> propBs,
+ Map<String,? extends PropertyBridgeElem> dataBs) throws TuplesException {
- PropertyBridgeElem defn = (PropertyBridgeElem)(propBs.values().iterator().next());
+ PropertyBridgeElem defn = propBs.values().iterator().next();
LiteralDesc predDesc = new LiteralDesc(defn, p);
query.addVariable(p, predDesc);
- List descs = new ArrayList();
ConstraintElement obj = c.getElement(2);
- Iterator i = propBs.entrySet().iterator();
- while (i.hasNext()) {
- Map.Entry entry = (Map.Entry)i.next();
- String predicate = (String)entry.getKey();
- PropertyBridgeElem propB = (PropertyBridgeElem)entry.getValue();
+ for (Map.Entry<String,? extends PropertyBridgeElem> entry: propBs.entrySet()) {
+ String predicate = entry.getKey();
+ PropertyBridgeElem propB = entry.getValue();
VariableDesc vdesc = obtainDescForVariableProperty(propB);
if (vdesc != null) {
query.addUnionCase(predDesc, new UnionCase(predDesc, predicate, vdesc, obj));
}
}
- i = dataBs.entrySet().iterator();
- while (i.hasNext()) {
- Map.Entry entry = (Map.Entry)i.next();
- String predicate = (String)entry.getKey();
- PropertyBridgeElem pb = (PropertyBridgeElem)entry.getValue();
+ for (Map.Entry<String,? extends PropertyBridgeElem> entry: dataBs.entrySet()) {
+ String predicate = entry.getKey();
+ PropertyBridgeElem pb = entry.getValue();
VariableDesc vdesc = obtainDescForVariableProperty(pb);
if (vdesc != null) {
query.addUnionCase(predDesc, new UnionCase(predDesc, predicate, vdesc, obj));
@@ -655,9 +645,7 @@
throw new TuplesException("Error in property definition: " + desc);
}
query.addTables(desc.getTables());
- Iterator i = desc.getColumns().iterator();
- while (i.hasNext()) {
- String c = (String)i.next();
+ for (String c: desc.getColumns()) {
desc.assignColumnIndex(c, query.addColumn(c));
}
query.addVariable(v, desc);
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolver.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolver.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolver.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -44,16 +44,8 @@
// Java 2 standard packages
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.ArrayList;
-import java.util.Properties;
-import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
import java.util.Set;
-import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.transaction.xa.XAResource;
@@ -64,13 +56,9 @@
import org.jrdf.graph.Node;
// Locally written packages
-import org.mulgara.query.Answer;
import org.mulgara.query.Constraint;
import org.mulgara.query.ConstraintElement;
import org.mulgara.query.LocalNode;
-import org.mulgara.query.ConstraintConjunction;
-import org.mulgara.query.ConstraintExpression;
-import org.mulgara.query.ConstraintImpl;
import org.mulgara.query.QueryException;
import org.mulgara.query.TuplesException;
import org.mulgara.query.Variable;
@@ -79,7 +67,6 @@
import org.mulgara.resolver.spi.DummyXAResource;
import org.mulgara.resolver.spi.GlobalizeException;
import org.mulgara.resolver.spi.LocalizeException;
-import org.mulgara.resolver.spi.LocalizedTuples;
import org.mulgara.resolver.spi.EmptyResolution;
import org.mulgara.resolver.spi.Resolution;
import org.mulgara.resolver.spi.Resolver;
@@ -87,9 +74,6 @@
import org.mulgara.resolver.spi.ResolverException;
import org.mulgara.resolver.spi.ResolverSession;
import org.mulgara.resolver.spi.Statements;
-import org.mulgara.store.tuples.AbstractTuples;
-import org.mulgara.store.tuples.Tuples;
-import org.mulgara.store.tuples.TuplesOperations;
/**
@@ -297,10 +281,10 @@
}
- public static Set extractTablesFromJoin(String join) {
+ public static Set<String> extractTablesFromJoin(String join) {
Pattern p = Pattern.compile("\\w+\\.\\w+");
Matcher m = p.matcher(join);
- Set result = new HashSet();
+ Set<String> result = new HashSet<String>();
while (m.find()) {
result.add(parseTableFromColumn(m.group()));
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolverUnitTest.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolverUnitTest.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalResolverUnitTest.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -181,6 +181,7 @@
/**
* Create test objects.
*/
+ @SuppressWarnings("deprecation")
public void setUp() throws Exception {
if (database == null) {
// Create the persistence directory
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalTransformer.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalTransformer.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/RelationalTransformer.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -64,6 +64,7 @@
public class RelationalTransformer extends AbstractSymbolicTransformer {
/** Logger */
+ @SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(RelationalTransformer.class);
private URI modelTypeURI;
@@ -101,19 +102,17 @@
}
public ConstraintExpression transformConj(SymbolicTransformationContext context, ConstraintConjunction cc) throws SymbolicTransformationException {
- List retainedArgs = new ArrayList();
- Map relationalArgs = new HashMap();
+ List<ConstraintExpression> retainedArgs = new ArrayList<ConstraintExpression>();
+ Map<ConstraintElement,List<RelationalConstraint>> relationalArgs = new HashMap<ConstraintElement,List<RelationalConstraint>>();
boolean transformed = false;
- Iterator args = cc.getElements().iterator();
- while (args.hasNext()) {
- ConstraintExpression arg = (ConstraintExpression)args.next();
+ for (ConstraintExpression arg: cc.getElements()) {
if (arg instanceof RelationalConstraint) {
RelationalConstraint rc = (RelationalConstraint)arg;
- List rcArgs = (List)relationalArgs.get(rc.getModel());
+ List<RelationalConstraint> rcArgs = relationalArgs.get(rc.getModel());
if (rcArgs == null) {
- rcArgs = new ArrayList();
+ rcArgs = new ArrayList<RelationalConstraint>();
relationalArgs.put(rc.getModel(), rcArgs);
}
rcArgs.add(rc);
@@ -126,21 +125,16 @@
}
}
- Iterator argLists = relationalArgs.values().iterator();
- while (argLists.hasNext()) {
- Iterator rarg = ((List)argLists.next()).iterator();
+ for (List<RelationalConstraint> rargl: relationalArgs.values()) {
+ Iterator<RelationalConstraint> rarg = rargl.iterator();
RelationalConstraint rc = null;
- if (rarg.hasNext()) {
- rc = (RelationalConstraint)rarg.next();
- }
+ if (rarg.hasNext()) rc = rarg.next();
while (rarg.hasNext()) {
transformed = true;
- rc.conjoinWith((RelationalConstraint)rarg.next());
+ rc.conjoinWith(rarg.next());
}
- if (rc != null) {
- retainedArgs.add(rc);
- }
+ if (rc != null) retainedArgs.add(rc);
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/VariableDesc.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/VariableDesc.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/VariableDesc.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -51,6 +51,7 @@
import java.util.Set;
import org.jrdf.graph.Node;
+import org.jrdf.graph.URIReference;
import org.mulgara.query.TuplesException;
import org.mulgara.resolver.relational.d2rq.Constants;
import org.mulgara.resolver.relational.d2rq.D2RQDefn;
@@ -61,10 +62,10 @@
/** Logger. */
private static final Logger logger = Logger.getLogger(VariableDesc.class.getName());
- protected Map columnTypeMap;
+ protected Map<String,URIReference> columnTypeMap;
protected D2RQDefn defn;
- protected List join;
- protected List condition;
+ protected List<String> join;
+ protected List<String> condition;
protected VariableDesc(ClassMapElem defn) {
this((D2RQDefn)defn);
@@ -80,28 +81,28 @@
protected VariableDesc(D2RQDefn defn) {
this.defn = defn;
this.columnTypeMap = defn.getColumnTypeMap();
- this.join = new ArrayList();
- this.condition = new ArrayList();
+ this.join = new ArrayList<String>();
+ this.condition = new ArrayList<String>();
}
public abstract Node getNode(ResultSet result) throws SQLException, TuplesException;
public abstract void assignColumnIndex(String column, int index);
- public abstract Set getTables();
- public abstract Set getColumns();
+ public abstract Set<String> getTables();
+ public abstract Set<String> getColumns();
- public void addJoin(List join) {
+ public void addJoin(List<String> join) {
this.join.addAll(join);
}
- public List getJoin() {
+ public List<String> getJoin() {
return join;
}
- public void addCondition(List condition) {
+ public void addCondition(List<String> condition) {
this.condition.addAll(condition);
}
- public List getCondition() {
+ public List<String> getCondition() {
return condition;
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/AdditionalPropertyElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/AdditionalPropertyElem.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/AdditionalPropertyElem.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -41,9 +41,6 @@
*/
package org.mulgara.resolver.relational.d2rq;
-import java.util.HashMap;
-import java.util.Map;
-
import org.mulgara.resolver.spi.Resolver;
import org.mulgara.resolver.spi.ResolverSession;
import org.mulgara.resolver.spi.LocalizeException;
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ClassMapElem.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -42,7 +42,6 @@
package org.mulgara.resolver.relational.d2rq;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.mulgara.resolver.spi.Resolver;
@@ -61,8 +60,8 @@
public final TranslationTableElem translateWith;
public final String dataStorage;
// public final String containsDuplicates;
- public final List additionalProperties;
- public final List condition;
+ public final List<AdditionalPropertyElem> additionalProperties;
+ public final List<String> condition;
public ClassMapElem(Resolver resolver, ResolverSession session, long classMap, long defModel, D2RQDefn parent) throws LocalizeException, QueryException, TuplesException, GlobalizeException {
super(resolver, session, parent);
@@ -79,11 +78,10 @@
LocalNode ttable = getLocalNodeObject(map, Constants.translateWith, model, true);
translateWith = (ttable != null) ? new TranslationTableElem(resolver, session, ttable, defModel) : null;
- additionalProperties = new ArrayList();
- List apropNodes = getLocalNodeObjects(map, Constants.additionalProperty, model);
- Iterator i = apropNodes.iterator();
- while (i.hasNext()) {
- additionalProperties.add(new AdditionalPropertyElem(resolver, session, (LocalNode)i.next(), defModel));
+ additionalProperties = new ArrayList<AdditionalPropertyElem>();
+ List<LocalNode> apropNodes = getLocalNodeObjects(map, Constants.additionalProperty, model);
+ for (LocalNode n: apropNodes) {
+ additionalProperties.add(new AdditionalPropertyElem(resolver, session, n, defModel));
}
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/D2RQDefn.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/D2RQDefn.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/D2RQDefn.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -43,9 +43,6 @@
import org.apache.log4j.Logger;
-import java.net.URI;
-import java.util.Collection;
-import java.util.Collections;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -76,7 +73,7 @@
protected final ResolverSession session;
// Maps columns to sql datatypes.
- protected Map columnTypeMap;
+ protected Map<String,URIReference> columnTypeMap;
public D2RQDefn(Resolver resolver, ResolverSession session, D2RQDefn parent) {
this.resolver = resolver;
@@ -93,14 +90,14 @@
this.columnTypeMap = null;
}
- protected void initColumnTypeMap(Map typeMap) {
+ protected void initColumnTypeMap(Map<String,URIReference> typeMap) {
if (columnTypeMap != null) {
throw new IllegalStateException("Only parent node may initialise type map, and only once");
}
columnTypeMap = typeMap;
}
- public Map getColumnTypeMap() {
+ public Map<String,URIReference> getColumnTypeMap() {
return columnTypeMap;
}
@@ -121,14 +118,14 @@
}
}
- protected List getStringObjects(Value subj, Value pred, Value model) throws LocalizeException, TuplesException, GlobalizeException, QueryException {
+ protected List<String> getStringObjects(Value subj, Value pred, Value model) throws LocalizeException, TuplesException, GlobalizeException, QueryException {
long[] res = getObjects(
(subj instanceof LocalNode) ? ((LocalNode)subj).getValue() : session.localize((Node)subj),
(pred instanceof LocalNode) ? ((LocalNode)pred).getValue() : session.localize((Node)pred),
(model instanceof LocalNode) ? ((LocalNode)model).getValue() : session.localize((Node)model));
- List ans = new ArrayList();
+ List<String> ans = new ArrayList<String>();
for (int i = 0; i < res.length; i++) {
Object obj = session.globalize(res[i]);
@@ -143,14 +140,14 @@
return ans;
}
- protected List getLocalNodeObjects(Value subj, Value pred, Value model) throws LocalizeException, TuplesException, QueryException {
+ protected List<LocalNode> getLocalNodeObjects(Value subj, Value pred, Value model) throws LocalizeException, TuplesException, QueryException {
long[] res = getObjects(
(subj instanceof LocalNode) ? ((LocalNode)subj).getValue() : session.localize((Node)subj),
(pred instanceof LocalNode) ? ((LocalNode)pred).getValue() : session.localize((Node)pred),
(model instanceof LocalNode) ? ((LocalNode)model).getValue() : session.localize((Node)model));
- List result = new ArrayList();
+ List<LocalNode> result = new ArrayList<LocalNode>();
for (int i = 0; i < res.length; i++) {
result.add(new LocalNode(res[i]));
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatabaseElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatabaseElem.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatabaseElem.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -41,23 +41,18 @@
*/
package org.mulgara.resolver.relational.d2rq;
-import java.util.Collection;
-import java.util.Iterator;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
-import java.net.URI;
+import org.jrdf.graph.URIReference;
import org.mulgara.resolver.spi.Resolver;
import org.mulgara.resolver.spi.ResolverSession;
import org.mulgara.resolver.spi.LocalizeException;
import org.mulgara.resolver.spi.GlobalizeException;
-import org.mulgara.query.ConstraintElement;
-import org.mulgara.query.ConstraintExpression;
import org.mulgara.query.TuplesException;
import org.mulgara.query.QueryException;
import org.mulgara.query.LocalNode;
-import org.mulgara.store.tuples.Tuples;
public class DatabaseElem extends D2RQDefn {
@@ -65,9 +60,9 @@
public final String jdbcDriver;
public final String username;
public final String password;
- public final List numericColumns;
- public final List textColumns;
- public final List dateColumns;
+ public final List<String> numericColumns;
+ public final List<String> textColumns;
+ public final List<String> dateColumns;
public DatabaseElem(Resolver resolver, ResolverSession session, long rdftype, long defModel) throws LocalizeException, QueryException, TuplesException, GlobalizeException {
super(resolver, session);
@@ -89,18 +84,12 @@
textColumns = getStringObjects(database, Constants.textColumn, model);
dateColumns = getStringObjects(database, Constants.dateColumn, model);
- Map typeMap = new HashMap();
+ Map<String,URIReference> typeMap = new HashMap<String,URIReference>();
// "_" is a dummy anonymous column to describe the types of literals within a query (always text)
typeMap.put("_", Constants.textColumn);
- for (Iterator i = numericColumns.iterator(); i.hasNext();) {
- typeMap.put(i.next(), Constants.numericColumn);
- }
- for (Iterator i = textColumns.iterator(); i.hasNext();) {
- typeMap.put(i.next(), Constants.textColumn);
- }
- for (Iterator i = dateColumns.iterator(); i.hasNext();) {
- typeMap.put(i.next(), Constants.dateColumn);
- }
+ for (String nc: numericColumns) typeMap.put(nc, Constants.numericColumn);
+ for (String nc: textColumns) typeMap.put(nc, Constants.textColumn);
+ for (String nc: dateColumns) typeMap.put(nc, Constants.dateColumn);
initColumnTypeMap(typeMap);
}
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatatypePropertyBridgeElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatatypePropertyBridgeElem.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/DatatypePropertyBridgeElem.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -41,7 +41,6 @@
*/
package org.mulgara.resolver.relational.d2rq;
-import java.util.List;
import org.mulgara.resolver.spi.Resolver;
import org.mulgara.resolver.spi.ResolverSession;
import org.mulgara.resolver.spi.LocalizeException;
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/Definition.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -43,11 +43,8 @@
import org.apache.log4j.Logger;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
import java.util.HashMap;
-import java.util.Iterator;
import org.mulgara.query.LocalNode;
import org.mulgara.query.QueryException;
import org.mulgara.query.TuplesException;
@@ -64,13 +61,14 @@
public class Definition {
/** Logger */
+ @SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(Definition.class);
public DatabaseElem databaseDefn;
- public Map classMaps; // Map of class-type to class-defn.
- public Map nodeClassMaps; // Map of classMap node to class-defn.
- public Map objPropBridges; // Map of class-type to list objectPropertyMaps
- public Map dataPropBridges; // Map of class-type to list datatypePropertyMaps
+ public Map<String,ClassMapElem> classMaps; // Map of class-type to class-defn.
+ public Map<LocalNode,ClassMapElem> nodeClassMaps; // Map of classMap node to class-defn.
+ public Map<String,Map<String,ObjectPropertyBridgeElem>> objPropBridges; // Map of class-type to list objectPropertyMaps
+ public Map<String,Map<String,DatatypePropertyBridgeElem>> dataPropBridges; // Map of class-type to list datatypePropertyMaps
public Definition(Resolver resolver, ResolverSession session, long rdftype, long defModel) throws QueryException {
try {
@@ -82,10 +80,10 @@
LocalNode classMap = new LocalNode(session.localize(Constants.TypeClassMap));
Resolution maps = resolver.resolve(new ConstraintImpl(subj, type, classMap, model));
- this.classMaps = new HashMap();
- this.objPropBridges = new HashMap();
- this.dataPropBridges = new HashMap();
- this.nodeClassMaps = new HashMap();
+ this.classMaps = new HashMap<String,ClassMapElem>();
+ this.objPropBridges = new HashMap<String,Map<String,ObjectPropertyBridgeElem>>();
+ this.dataPropBridges = new HashMap<String,Map<String,DatatypePropertyBridgeElem>>();
+ this.nodeClassMaps = new HashMap<LocalNode,ClassMapElem>();
maps.beforeFirst();
while (maps.next()) {
long map = maps.getColumnValue(0);
@@ -101,9 +99,7 @@
}
maps.close();
- Iterator i = nodeClassMaps.keySet().iterator();
- while (i.hasNext()) {
- LocalNode map = (LocalNode)i.next();
+ for (LocalNode map: nodeClassMaps.keySet()) {
ClassMapElem cmap = (ClassMapElem)nodeClassMaps.get(map);
populateObjPropBridges(resolver, session, subj, type, model, map, cmap.klass, nodeClassMaps);
@@ -119,11 +115,11 @@
}
void populateObjPropBridges(Resolver resolver, ResolverSession session,
- Variable subj, LocalNode type, LocalNode model, LocalNode map, String klass, Map nodeClassMaps)
+ Variable subj, LocalNode type, LocalNode model, LocalNode map, String klass, Map<LocalNode,ClassMapElem> nodeClassMaps)
throws LocalizeException, QueryException, TuplesException, GlobalizeException {
- Map pmap = (Map)objPropBridges.get(klass);
+ Map<String,ObjectPropertyBridgeElem> pmap = objPropBridges.get(klass);
if (pmap == null) {
- pmap = new HashMap();
+ pmap = new HashMap<String,ObjectPropertyBridgeElem>();
objPropBridges.put(klass, pmap);
}
@@ -150,9 +146,9 @@
void populateDataPropBridges(Resolver resolver, ResolverSession session,
Variable subj, LocalNode type, LocalNode model, LocalNode map, String klass)
throws LocalizeException, QueryException, TuplesException, GlobalizeException {
- Map pmap = (Map)dataPropBridges.get(klass);
+ Map<String,DatatypePropertyBridgeElem> pmap = dataPropBridges.get(klass);
if (pmap == null) {
- pmap = new HashMap();
+ pmap = new HashMap<String,DatatypePropertyBridgeElem>();
dataPropBridges.put(klass, pmap);
}
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ObjectPropertyBridgeElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ObjectPropertyBridgeElem.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/ObjectPropertyBridgeElem.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -41,7 +41,6 @@
*/
package org.mulgara.resolver.relational.d2rq;
-import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
@@ -62,7 +61,7 @@
public final String pattern;
public final ClassMapElem refersToClassMap;
- public ObjectPropertyBridgeElem(Resolver resolver, ResolverSession session, long propMap, long defModel, Map nodeClassMaps, D2RQDefn parent)
+ public ObjectPropertyBridgeElem(Resolver resolver, ResolverSession session, long propMap, long defModel, Map<LocalNode,ClassMapElem> nodeClassMaps, D2RQDefn parent)
throws LocalizeException, QueryException, TuplesException, GlobalizeException {
super(resolver, session, propMap, defModel, parent);
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/PropertyBridgeElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/PropertyBridgeElem.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/PropertyBridgeElem.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -52,11 +52,11 @@
public class PropertyBridgeElem extends D2RQDefn {
public final String property;
- public final List join;
+ public final List<String> join;
public final String alias;
public final String valueMaxLength;
public final String valueContains;
- public final List condition;
+ public final List<String> condition;
public final TranslationTableElem translateWith;
public PropertyBridgeElem(Resolver resolver, ResolverSession session, long propMap, long defModel, D2RQDefn parent) throws LocalizeException, QueryException, TuplesException, GlobalizeException {
Modified: trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/TranslationTableElem.java
===================================================================
--- trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/TranslationTableElem.java 2009-07-10 16:35:27 UTC (rev 1759)
+++ trunk/src/jar/resolver-relational/java/org/mulgara/resolver/relational/d2rq/TranslationTableElem.java 2009-07-10 16:37:20 UTC (rev 1760)
@@ -53,14 +53,14 @@
import org.mulgara.query.QueryException;
public class TranslationTableElem extends D2RQDefn {
- public Map db2rdf;
- public Map rdf2db;
+ public Map<String,String> db2rdf;
+ public Map<String,String> rdf2db;
public TranslationTableElem(Resolver resolver, ResolverSession session, LocalNode ttable, long defModel) throws LocalizeException, QueryException, TuplesException, GlobalizeException {
super(resolver, session);
- db2rdf = new HashMap();
- rdf2db = new HashMap();
+ db2rdf = new HashMap<String,String>();
+ rdf2db = new HashMap<String,String>();
LocalNode model = new LocalNode(defModel);
More information about the Mulgara-svn
mailing list