/*
* Copyright Aduna (http://www.aduna-software.com/) (c) 2008.
*
* Licensed under the Aduna BSD-style license.
*/
package org.openrdf.sail.rdbms.schema;
import java.sql.SQLException;
/**
* A Facade to the five literal value tables. Which are labels, languages,
* datatypes, numeric values, and dateTime values.
*
* @author James Leigh
*
*/
public class LiteralTable {
public static final boolean ONLY_INSERT_LABEL = false;
private ValueTable labels;
private ValueTable longLabels;
private ValueTable languages;
private ValueTable datatypes;
private ValueTable numeric;
private ValueTable dateTime;
private ValueTable point;
private int version;
private IdSequence ids;
public void setIdSequence(IdSequence ids) {
this.ids = ids;
}
public ValueTable getLabelTable() {
return labels;
}
public void setLabelTable(ValueTable labels) {
this.labels = labels;
}
public ValueTable getLongLabelTable() {
return longLabels;
}
public void setLongLabelTable(ValueTable longLabels) {
this.longLabels = longLabels;
}
public ValueTable getLanguageTable() {
return languages;
}
public void setLanguageTable(ValueTable languages) {
this.languages = languages;
}
public ValueTable getDatatypeTable() {
return datatypes;
}
public void setDatatypeTable(ValueTable datatypes) {
this.datatypes = datatypes;
}
public ValueTable getNumericTable() {
return numeric;
}
public void setNumericTable(ValueTable numeric) {
this.numeric = numeric;
}
public ValueTable getDateTimeTable() {
return dateTime;
}
public void setDateTimeTable(ValueTable dateTime) {
this.dateTime = dateTime;
}
public ValueTable getPointTable() {
return point;
}
public void setPointTable(ValueTable point) {
this.point = point;
}
public void close()
throws SQLException
{
labels.close();
longLabels.close();
languages.close();
datatypes.close();
numeric.close();
dateTime.close();
point.close();
}
public int getBatchSize() {
return labels.getBatchSize();
}
public int getIdVersion() {
return version;
}
public void insertSimple(Number id, String label)
throws SQLException, InterruptedException
{
if (ids.isLong(id)) {
longLabels.insert(id, label);
}
else {
labels.insert(id, label);
}
}
public void insertLanguage(Number id, String label, String language)
throws SQLException, InterruptedException
{
insertSimple(id, label);
languages.insert(id, language);
}
public void insertDatatype(Number id, String label, String datatype)
throws SQLException, InterruptedException
{
insertSimple(id, label);
datatypes.insert(id, datatype);
}
public void insertNumeric(Number id, String label, String datatype, double value)
throws SQLException, InterruptedException
{
labels.insert(id, label);
datatypes.insert(id, datatype);
numeric.insert(id, value);
}
public void insertDateTime(Number id, String label, String datatype, long value)
throws SQLException, InterruptedException
{
labels.insert(id, label);
datatypes.insert(id, datatype);
dateTime.insert(id, value);
}
public void insertPoint(Number id, String label, String value) throws SQLException, InterruptedException {
labels.insert(id, label);
point.insert(id, value);
}
public void optimize()
throws SQLException
{
labels.optimize();
longLabels.optimize();
languages.optimize();
datatypes.optimize();
numeric.optimize();
dateTime.optimize();
point.optimize();
}
public boolean expunge(String condition)
throws SQLException
{
boolean bool = false;
bool |= labels.expunge(condition);
bool |= longLabels.expunge(condition);
bool |= languages.expunge(condition);
bool |= datatypes.expunge(condition);
bool |= numeric.expunge(condition);
bool |= dateTime.expunge(condition);
bool |= point.expunge(condition);
return bool;
}
}