All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.rdf.internal.impl.AbstractNonInlineIV Maven / Gradle / Ivy

/**

Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016.  All rights reserved.

Contact:
     SYSTAP, LLC DBA Blazegraph
     2501 Calvert ST NW #106
     Washington, DC 20008
     [email protected]

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package com.bigdata.rdf.internal.impl;

import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;

import javax.xml.datatype.XMLGregorianCalendar;

import org.openrdf.model.BNode;
import org.openrdf.model.Literal;
import org.openrdf.model.URI;
import org.openrdf.model.Value;

import com.bigdata.rdf.internal.DTE;
import com.bigdata.rdf.internal.IV;
import com.bigdata.rdf.internal.VTE;
import com.bigdata.rdf.lexicon.LexiconRelation;
import com.bigdata.rdf.model.BigdataValue;

/**
 * Abstract base class for {@link IV}s which CAN NOT be fully materialized
 * from their inline representation.
 */
abstract public class AbstractNonInlineIV 
		extends AbstractIV implements Literal, BNode, URI  {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    protected AbstractNonInlineIV(final byte flags) {

        super(flags);

    }

    protected AbstractNonInlineIV(final VTE vte, final boolean extension,
            final DTE dte) {

        super(vte, false/* inline */, extension, dte);

    }

//    /**
//     * Callers must explicitly populate the value cache.
//     * 

// * {@inheritDoc} // */ // @Override // final public V setValue(V v) { // // return super.setValue(v); // // } /** * Operation is not supported because this {@link IV} type is not 100% * inline. You MUST explicitly set the value cache. *

* {@inheritDoc} * * @see #setValue(BigdataValue) */ final public V asValue(final LexiconRelation lex) { return getValue(); // throw new UnsupportedOperationException(); } /** * Operation is not supported because this {@link IV} type is not 100% * inline. */ final public T getInlineValue() { throw new UnsupportedOperationException(); } /** * Always returns false since the RDF value is not inline. */ @Override final public boolean isInline() { return false; } /** * Always returns true since the RDF value is not inline. */ @Override final public boolean needsMaterialization() { return true; } /** * Override default serialization to send the cached {@link BigdataValue}. */ private void writeObject(java.io.ObjectOutputStream out) throws IOException { out.defaultWriteObject(); out.writeObject(getValueCache()); } /** * Override default serialization to recover the cached {@link BigdataValue} * . */ @SuppressWarnings("unchecked") private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); final V v = (V) in.readObject(); if (v != null) { // set the value cache. setValue(v); } } /** * Implements {@link Value#stringValue()}. */ @Override public String stringValue() { return getValue().stringValue(); } /** * Implements {@link URI#getLocalName()}. */ public String getLocalName() { if (!isURI()) throw new ClassCastException(); return ((URI) getValue()).getLocalName(); } /** * Implements {@link URI#getNamespace()}. */ public String getNamespace() { if (!isURI()) throw new ClassCastException(); return ((URI) getValue()).getNamespace(); } /** * Implements {@link BNode#getID()}. */ public String getID() { if (!isBNode()) throw new ClassCastException(); return ((BNode) getValue()).getID(); } /** * Implements {@link Literal#getLabel()}. */ @Override public String getLabel() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).getLabel(); } /** * Implements {@link Literal#getDatatype()}. */ @Override public URI getDatatype() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).getDatatype(); } /** * Implements {@link Literal#getLanguage()}. */ @Override public String getLanguage() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).getLanguage(); } /** * Implements {@link Literal#booleanValue()}. */ @Override public boolean booleanValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).booleanValue(); } /** * Implements {@link Literal#byteValue()}. */ @Override public byte byteValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).byteValue(); } /** * Implements {@link Literal#shortValue()}. */ @Override public short shortValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).shortValue(); } /** * Implements {@link Literal#intValue()}. */ @Override public int intValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).intValue(); } /** * Implements {@link Literal#longValue()}. */ @Override public long longValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).longValue(); } /** * Implements {@link Literal#floatValue()}. */ @Override public float floatValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).floatValue(); } /** * Implements {@link Literal#doubleValue()}. */ @Override public double doubleValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).doubleValue(); } /** * Implements {@link Literal#integerValue()}. */ @Override public BigInteger integerValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).integerValue(); } /** * Implements {@link Literal#decimalValue()}. */ @Override public BigDecimal decimalValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).decimalValue(); } /** * Implements {@link Literal#calendarValue()}. */ @Override public XMLGregorianCalendar calendarValue() { if (!isLiteral()) throw new ClassCastException(); return ((Literal) getValue()).calendarValue(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy