You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by bb...@apache.org on 2011/05/11 18:04:20 UTC

svn commit: r1101934 - in /incubator/clerezza/trunk/parent: rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala

Author: bblfish
Date: Wed May 11 16:04:20 2011
New Revision: 1101934

URL: http://svn.apache.org/viewvc?rev=1101934&view=rev
Log:
CLEREZZA-511: Was going to Allow access to single individual SimpleLiteralFactory converters but reto prefers not. Other changes are still useful

Modified:
    incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java
    incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala

Modified: incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java?rev=1101934&r1=1101933&r2=1101934&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java (original)
+++ incubator/clerezza/trunk/parent/rdf.core/src/main/java/org/apache/clerezza/rdf/core/impl/SimpleLiteralFactory.java Wed May 11 16:04:20 2011
@@ -55,8 +55,36 @@ public class SimpleLiteralFactory extend
 	
 
 	final private static Set<UriRef> decimalTypes = new HashSet<UriRef>();
+
+	final static private TypeConverter<byte[]> BYTE_ARRAY_CONVERTER = new ByteArrayConverter();
+	final static private TypeConverter<Boolean> BOOLEAN_CONVERTER = new BooleanConverter();
+	final static private TypeConverter<Date> DATE_CONVERTER = new DateConverter();
+	final static private TypeConverter<String> STRING_CONVERTER = new StringConverter();
+	final static private TypeConverter<Integer> INTEGER_CONVERTER = new IntegerConverter();
+	final static private TypeConverter<BigInteger> BIG_INTEGER_CONVERTER = new BigIntegerConverter();
+	final static private TypeConverter<Long> LONG_CONVERTER = new LongConverter();
+	final static private TypeConverter<Double> DOUBLE_CONVERTER = new DoubleConverter();
+	final static private TypeConverter<UriRef> URIREF_CONVERTER = new UriRefConverter();
+
+	final private static Map<Class<?>, TypeConverter<?>> typeConverterMap = new HashMap<Class<?>, TypeConverter<?>>();
+	final static Class<? extends byte[]> byteArrayType;
+
 	static {
+		//what's this for?
 		Collections.addAll(decimalTypes, xsdInteger, xsdInt, xsdByte, xsdShort);
+
+
+		byte[] byteArray = new byte[0];
+		byteArrayType = byteArray.getClass();
+		typeConverterMap.put(byteArrayType, BYTE_ARRAY_CONVERTER);
+		typeConverterMap.put(Date.class, DATE_CONVERTER);
+		typeConverterMap.put(Boolean.class, BOOLEAN_CONVERTER);
+		typeConverterMap.put(String.class, STRING_CONVERTER);
+		typeConverterMap.put(Integer.class, INTEGER_CONVERTER);
+		typeConverterMap.put(BigInteger.class, BIG_INTEGER_CONVERTER);
+		typeConverterMap.put(Long.class, LONG_CONVERTER);
+		typeConverterMap.put(Double.class, DOUBLE_CONVERTER);
+		typeConverterMap.put(UriRef.class, URIREF_CONVERTER);
 	}
 
 	final private static UriRef xsdDouble =
@@ -64,13 +92,8 @@ public class SimpleLiteralFactory extend
 	final private static UriRef xsdAnyURI =
 			new UriRef("http://www.w3.org/2001/XMLSchema#anyURI");
 
-	final static Class<? extends byte[]> byteArrayType;
-	static {
-		byte[] byteArray = new byte[0];
-		byteArrayType = byteArray.getClass();
-	}
 
-	private static interface TypeConverter<T> {
+	public static interface TypeConverter<T> {
 		TypedLiteral createTypedLiteral(T value);
 		T createObject(TypedLiteral literal);		
 	}
@@ -125,15 +148,22 @@ public class SimpleLiteralFactory extend
 
 		private static final UriRef booleanUri =
 			new UriRef("http://www.w3.org/2001/XMLSchema#boolean");
+		public static final TypedLiteralImpl TRUE = new TypedLiteralImpl("true", booleanUri);
+		public static final TypedLiteralImpl FALSE = new TypedLiteralImpl("false", booleanUri);
 
 		@Override
 		public TypedLiteral createTypedLiteral(Boolean value) {
-			return new TypedLiteralImpl(value.toString(), booleanUri);
+			if (value) return TRUE;
+			else return FALSE;
 		}
 
+		//todo: create a subclass of TypedLiteral that contains the original value, then one would not need
+		//to do these conversions
 		@Override
 		public Boolean createObject(TypedLiteral literal) {
-			if (!literal.getDataType().equals(booleanUri)) {
+			if (literal == TRUE) return true;
+			else if (literal == FALSE) return false;
+			else if (!literal.getDataType().equals(booleanUri)) {
 				throw new InvalidLiteralTypeException(Boolean.class, literal.getDataType());
 			}
 			return Boolean.valueOf(literal.getLexicalForm());
@@ -248,20 +278,6 @@ public class SimpleLiteralFactory extend
 		}
 	}
 
-	final private static Map<Class<?>, TypeConverter<?>> typeConverterMap = new HashMap<Class<?>, TypeConverter<?>>();
-
-	static {
-		typeConverterMap.put(byteArrayType, new ByteArrayConverter());
-		typeConverterMap.put(Date.class, new DateConverter());
-		typeConverterMap.put(Boolean.class, new BooleanConverter());
-		typeConverterMap.put(String.class, new StringConverter());
-		typeConverterMap.put(Integer.class, new IntegerConverter());
-		typeConverterMap.put(BigInteger.class, new BigIntegerConverter());
-		typeConverterMap.put(Long.class, new LongConverter());
-		typeConverterMap.put(Double.class, new DoubleConverter());
-		typeConverterMap.put(UriRef.class, new UriRefConverter());
-	}
-
 
 	@SuppressWarnings("unchecked")
 	@Override

Modified: incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala?rev=1101934&r1=1101933&r2=1101934&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala (original)
+++ incubator/clerezza/trunk/parent/rdf.scala.utils/src/main/scala/org/apache/clerezza/rdf/scala/utils/EasyGraph.scala Wed May 11 16:04:20 2011
@@ -24,8 +24,10 @@ import collection.mutable.Queue
 import impl._
 import org.apache.clerezza.rdf.ontologies.{RDF, RDFS, FOAF}
 import java.math.BigInteger
-import java.util.Date
 import org.apache.clerezza.rdf.utils.{UnionMGraph, GraphNode}
+import java.util.{HashSet, Collections, Date}
+import java.lang.Boolean
+import com.sun.tools.internal.xjc.reader.xmlschema.BindGreen
 
 object EasyGraph {
 	final val en = "en"
@@ -33,10 +35,17 @@ object EasyGraph {
 	final val fr = "fr"
 	val litFactory = new SimpleLiteralFactory()
 
+	import org.apache.clerezza.rdf.core.impl.SimpleLiteralFactory._
+
 	implicit def string2lit(str: String) = new PlainLiteralScala(str)
 	implicit def date2lit(date: Date) = litFactory.createTypedLiteral(date)
-	implicit def int2lit(date: Int) = litFactory.createTypedLiteral(date)
-
+	implicit def int2lit(int: Int) = litFactory.createTypedLiteral(int)
+	implicit def bigint2lit(bint: BigInt) = litFactory.createTypedLiteral(bint.underlying())
+	implicit def bigint2lit(bigInt: BigInteger) = litFactory.createTypedLiteral(bigInt)
+	implicit def bool2lit(boolean: Boolean) = litFactory.createTypedLiteral(boolean)
+	implicit def scalaBool2lit(boolean: scala.Boolean) = litFactory.createTypedLiteral(boolean)
+	implicit def long2lit(long: Long) = litFactory.createTypedLiteral(long)
+	implicit def double2lit(double: Double) = litFactory.createTypedLiteral(double)
 
 
 //	val g = new EasyGraph(new SimpleMGraph)
@@ -103,6 +112,12 @@ class PlainLiteralScala(string: String) 
 
 class EasyGraph(val graph: TripleCollection) extends SimpleMGraph(graph) {
 
+  /*
+	* because we can't jump straight to super constructor in Scala we need to
+	* create the collection here
+	**/
+	def this() = this( new SimpleMGraph() )
+
 	def +=(other: Graph) = {
 		  if (graph ne  other) graph.addAll(other)
 	}
@@ -115,6 +130,9 @@ class EasyGraph(val graph: TripleCollect
 
 	def apply(subj: NonLiteral) = new EasyGraphNode(subj, this)
 
+	//note one could have an apply for a Literal that would return a InversePredicate
+	//but that would require restructuring EasyGraphNode so that one can have an EasyGraphNode
+	//with a missing ref, or perhaps a sublcass of EasyGraphnode that only has the <- operator available
 }