package com.bigdata.gom.gpo;
import javax.xml.datatype.XMLGregorianCalendar;
import org.openrdf.model.Literal;
import org.openrdf.model.Resource;
import org.openrdf.model.URI;
import org.openrdf.model.Value;
import org.openrdf.model.ValueFactory;
/**
* The BasicSkin provides standard type wrappers to help with conversions
*
* @author Martyn Cutcher
*/
public class BasicSkin implements IGenericSkin {
final protected IGPO m_gpo;
final protected ValueFactory m_vf;
public BasicSkin(final IGPO gpo) {
m_gpo = gpo;
m_vf = gpo.getObjectManager().getValueFactory();
}
public void rollback() {
((GPO) m_gpo).setMaterialized(false); // forces reload
}
public void setValue(final URI property, final Value value) {
m_gpo.setValue(property, value);
}
public void setValue(final URI property, final String value) {
m_gpo.setValue(property, m_vf.createLiteral(value));
}
public void setValue(final URI property, final int value) {
m_gpo.setValue(property, m_vf.createLiteral(value));
}
public void setValue(final URI property, final double value) {
m_gpo.setValue(property, m_vf.createLiteral(value));
}
public void setValue(final URI property, final XMLGregorianCalendar value) {
m_gpo.setValue(property, m_vf.createLiteral(value));
}
public void setValue(final String property, final Value value) {
m_gpo.setValue(m_vf.createURI(property), value);
}
public void setValue(final String property, final String value) {
m_gpo.setValue(m_vf.createURI(property), m_vf.createLiteral(value));
}
public void setValue(final String property, final int value) {
m_gpo.setValue(m_vf.createURI(property), m_vf.createLiteral(value));
}
public void setValue(final String property, final double value) {
m_gpo.setValue(m_vf.createURI(property), m_vf.createLiteral(value));
}
public void setValue(final String property, final XMLGregorianCalendar value) {
m_gpo.setValue(m_vf.createURI(property), m_vf.createLiteral(value));
}
@Override
public IGPO asGeneric() {
return m_gpo;
}
public int getIntValue(final URI key) {
final Value v = m_gpo.getValue(key);
if (v instanceof Literal) {
return ((Literal) v).intValue();
} else {
return 0;
}
}
public double getDoubleValue(final URI key) {
final Value v = m_gpo.getValue(key);
if (v instanceof Literal) {
return ((Literal) v).doubleValue();
} else {
return 0;
}
}
public boolean getBooleanValue(final URI key) {
final Value v = m_gpo.getValue(key);
if (v instanceof Literal) {
return ((Literal) v).booleanValue();
} else {
return false;
}
}
public String getStringValue(final URI key) {
final Value v = m_gpo.getValue(key);
if (v instanceof Literal) {
return ((Literal) v).stringValue();
} else {
return null;
}
}
public IGPO getGPOValue(final URI key) {
final Value v = m_gpo.getValue(key);
if (v instanceof Resource) {
return m_gpo.getObjectManager().getGPO((Resource) v);
} else {
return null;
}
}
public int getInt(final String key) {
return getIntValue(m_vf.createURI(key));
}
public double getDouble(final String key) {
return getDoubleValue(m_vf.createURI(key));
}
public boolean getBoolean(final String key) {
return getBooleanValue(m_vf.createURI(key));
}
public String getString(final String key) {
return getStringValue(m_vf.createURI(key));
}
}