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
}