|
From: <mrp...@us...> - 2010-07-26 15:13:53
|
Revision: 3289
http://bigdata.svn.sourceforge.net/bigdata/?rev=3289&view=rev
Author: mrpersonick
Date: 2010-07-26 15:13:46 +0000 (Mon, 26 Jul 2010)
Log Message:
-----------
hiding the NullIV class from the world at large
Modified Paths:
--------------
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/Justification.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractIV.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractInlineIV.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IV.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/NullIV.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/TermId.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOKeyOrder.java
branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/internal/TestEncodeDecodeKeys.java
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/Justification.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/Justification.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/inf/Justification.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -37,7 +37,6 @@
import com.bigdata.journal.TemporaryRawStore;
import com.bigdata.rdf.internal.IV;
import com.bigdata.rdf.internal.IVUtility;
-import com.bigdata.rdf.internal.NullIV;
import com.bigdata.rdf.internal.TermId;
import com.bigdata.rdf.model.StatementEnum;
import com.bigdata.rdf.rules.InferenceEngine;
@@ -442,16 +441,8 @@
for (int i = 0; i < ivs.length; i++) {
- if (ivs[i] != null) {
-
- ivs[i].encode(keyBuilder);
-
- } else {
-
- NullIV.INSTANCE.encode(keyBuilder);
-
- }
-
+ IVUtility.encode(keyBuilder, ivs[i]);
+
}
return keyBuilder.getKey();
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractIV.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractIV.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractIV.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -603,8 +603,7 @@
switch (dte) {
case XSDInt:
- final int i = ((NumericBNodeIV) this).getInlineValue().intValue();
- keyBuilder.append(i);
+ keyBuilder.append(((Integer) getInlineValue()).intValue());
break;
case UUID:
keyBuilder.append((UUID) getInlineValue());
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractInlineIV.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractInlineIV.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/AbstractInlineIV.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -83,13 +83,6 @@
}
/**
- * Always returns <code>false</code> since the value is inline.
- */
- final public boolean isNull() {
- return false;
- }
-
- /**
* No term identifier for an inline IV - throws an exception.
*/
final public long getTermId() {
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IV.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IV.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IV.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -128,14 +128,6 @@
boolean isTermId();
/**
- * <code>true</code> iff the RDF value is a term identifier whose value is
- * <code>0L</code>.
- *
- * @see #isTermId()
- */
- boolean isNull();
-
- /**
* Return the term identifier.
*
* @return The term identifier.
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/IVUtility.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -31,6 +31,7 @@
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.UUID;
+import com.bigdata.btree.keys.IKeyBuilder;
import com.bigdata.btree.keys.KeyBuilder;
import com.bigdata.rawstore.Bytes;
import com.bigdata.rdf.internal.constraints.AbstractInlineConstraint;
@@ -162,6 +163,33 @@
}
/**
+ * Encode an RDF value into a key for one of the statement indices. Handles
+ * null {@link IV} references gracefully.
+ *
+ * @param keyBuilder
+ * The key builder.
+ * @param iv
+ * The internal value (can be <code>null</code>).
+ *
+ * @return The key builder.
+ */
+ public static IKeyBuilder encode(final IKeyBuilder keyBuilder, final IV iv) {
+
+ if (iv == null) {
+
+ NullIV.INSTANCE.encode(keyBuilder);
+
+ } else {
+
+ iv.encode(keyBuilder);
+
+ }
+
+ return keyBuilder;
+
+ }
+
+ /**
* Decode an {@link IV} from a byte[].
*
* @param key
@@ -262,13 +290,6 @@
final byte flags = KeyBuilder.decodeByte(key[o++]);
-// /*
-// * FIXME iNull does not work yet
-// */
-// if (AbstractIV.isNull(flags))
-// return null;
-//
-
/*
* Handle a term identifier (versus an inline value).
*/
@@ -277,10 +298,6 @@
// decode the term identifier.
final long termId = KeyBuilder.decodeLong(key, o);
-// /*
-// * FIXME this is here for now until
-// * {@link AbstractInternalValue#isNull(byte)} works.
-// */
if (termId == TermId.NULL)
return null;
else
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/NullIV.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/NullIV.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/NullIV.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -28,12 +28,7 @@
package com.bigdata.rdf.internal;
-/**
- * FIXME A null {@link IV} class used in cases where we want to encode and
- * decode null in the key space. We really need to have a null option in the
- * byte flags so we can avoid this class altogether.
- */
-public class NullIV extends TermId {
+class NullIV extends TermId {
private static final long serialVersionUID = -214758033769962923L;
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/TermId.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/TermId.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/internal/TermId.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -23,6 +23,8 @@
*/
package com.bigdata.rdf.internal;
+import java.util.UUID;
+import com.bigdata.btree.keys.IKeyBuilder;
import com.bigdata.rawstore.Bytes;
import com.bigdata.rdf.model.BigdataValue;
import com.bigdata.rdf.model.BigdataValueFactory;
@@ -174,13 +176,6 @@
}
/**
- * Return <code>true</code> iff the term identifier is null.
- */
- final public boolean isNull() {
- return termId == NULL;
- }
-
- /**
* Note: only the termId matters for equality (unless we also have a
* transient reference to the value factory which stands in as a proxy for
* the KB instance).
@@ -225,5 +220,22 @@
return termId < termId2 ? -1 : termId > termId2 ? 1 : 0;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public IKeyBuilder encode(final IKeyBuilder keyBuilder) {
+
+ // First emit the flags byte.
+ keyBuilder.append(flags());
+
+ keyBuilder.append(getTermId());
+
+ return keyBuilder;
+
+ }
+
+
}
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOKeyOrder.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOKeyOrder.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/spo/SPOKeyOrder.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -46,7 +46,6 @@
import com.bigdata.rdf.internal.DTE;
import com.bigdata.rdf.internal.IV;
import com.bigdata.rdf.internal.IVUtility;
-import com.bigdata.rdf.internal.NullIV;
import com.bigdata.rdf.internal.TermId;
import com.bigdata.rdf.internal.UUIDLiteralIV;
import com.bigdata.rdf.internal.VTE;
@@ -515,7 +514,7 @@
IV iv = spo.get(a[i]);
- encodeKey(keyBuilder, iv);
+ IVUtility.encode(keyBuilder, iv);
}
@@ -524,37 +523,6 @@
}
/**
- * Encode an RDF value into a key for one of the statement indices.
- *
- * @param keyBuilder
- * The key builder.
- * @param iv
- * The RDF value.
- *
- * @return The key builder.
- */
- private void encodeKey(final IKeyBuilder keyBuilder, final IV iv) {
-
- if (iv == null) {
-
- /*
- * FIXME justifications use null IVs to represent wildcards. we
- * use a fake TermId object to simulate this since we have no way
- * of encoding null into the byte flags yet.
- */
- NullIV.INSTANCE.encode(keyBuilder);
-
- return;
-
- } else {
-
- iv.encode(keyBuilder);
-
- }
-
- }
-
- /**
* Decode the key into an {@link SPO}. The {@link StatementEnum} and the
* optional SID will not be decoded, since it is carried in the B+Tree
* value. However, if the {@link SPOKeyOrder} is a quad order then the
Modified: branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/internal/TestEncodeDecodeKeys.java
===================================================================
--- branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/internal/TestEncodeDecodeKeys.java 2010-07-26 14:24:18 UTC (rev 3288)
+++ branches/LEXICON_REFACTOR_BRANCH/bigdata-rdf/src/test/com/bigdata/rdf/internal/TestEncodeDecodeKeys.java 2010-07-26 15:13:46 UTC (rev 3289)
@@ -164,12 +164,6 @@
assertFalse(v.isInline());
- if (termId == 0L) {
- assertTrue(v.toString(), v.isNull());
- } else {
- assertFalse(v.toString(), v.isNull());
- }
-
assertEquals(termId, v.getTermId());
try {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|