package org.reldb.rel.v0.storage.catalog; import org.reldb.rel.exceptions.*; import org.reldb.rel.v0.generator.Generator; import org.reldb.rel.v0.storage.*; import org.reldb.rel.v0.storage.relvars.RelvarReal; import org.reldb.rel.v0.storage.relvars.RelvarRealMetadata; import org.reldb.rel.v0.values.*; import org.reldb.rel.v0.vm.Context; import org.reldb.rel.v0.vm.Operator; public class RelvarSystem extends RelvarReal { public RelvarSystem(String name, RelDatabase database, RelvarRealMetadata metadata) { super(name, database, metadata); } private void doesNotSupport(String prompt) { throw new ExceptionSemantic("RS0204: The " + getName() + " relvar does not support " + prompt + "."); } public void setValue(ValueRelation relation) { doesNotSupport("assignment"); } public long insert(final ValueTuple tuple) { doesNotSupport("INSERT"); return 0; } public long insert(Generator generator, final ValueRelation relation) { doesNotSupport("INSERT"); return 0; } // Delete all tuples public void purge() { doesNotSupport("DELETE"); } // Delete given tuple public void delete(ValueTuple tuple) { doesNotSupport("DELETE"); } // Delete selected tuples public long delete(Context context, Operator whereTupleOperator) { doesNotSupport("DELETE"); return 0; } // Update all tuples using a given update operator public long update(final Context context, final Operator updateTupleOperator) { doesNotSupport("UPDATE"); return 0; } // Update selected tuples using a given update operator public long update(final Context context, final Operator whereTupleOperator, final Operator updateTupleOperator) { doesNotSupport("UPDATE"); return 0; } private ValueTuple getTupleFor(Generator generator, String name, String definition, String owner) { Value[] rawTuple = new Value[] { ValueCharacter.select(generator, name), ValueCharacter.select(generator, definition), ValueCharacter.select(generator, owner), ValueInteger.select(generator, getDatabase().getUniqueID()) }; return new ValueTuple(generator, rawTuple); } protected ValueTuple getKeyTuple(Generator generator, String name) { return getTupleFor(generator, name, "", ""); } public void insertInternal(Generator generator, ValueTuple tuple) { super.insert(generator, tuple); } public void insertInternal(Generator generator, String name, String definition, String owner) { insertInternal(generator, getTupleFor(generator, name, definition, owner)); } public void deleteInternal(Generator generator, ValueTuple keyTuple) { super.delete(generator, keyTuple); } public void deleteInternal(Generator generator, String name) { deleteInternal(generator, getKeyTuple(generator, name)); } public ValueTuple getTupleForKey(Generator generator, String name) { return getTupleForKey(generator, getKeyTuple(generator, name)); } }