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.RelDatabase; import org.reldb.rel.v0.storage.relvars.RelvarGlobal; import org.reldb.rel.v0.values.*; import org.reldb.rel.v0.vm.Context; import org.reldb.rel.v0.vm.Operator; public abstract class RelvarSpecial extends RelvarGlobal { RelvarSpecial(String name, RelDatabase database) { super(name, database); } public long getCardinality(Generator generator) { TupleIterator iterator = iterator(generator); try { long count = 0; while (iterator.hasNext()) { iterator.next(); count++; } return count; } finally { iterator.close(); } } public boolean contains(Generator generator, final ValueTuple tuple) { TupleIterator iterator = iterator(generator); try { while (iterator.hasNext()) if (tuple.equals(iterator.next())) return true; return false; } finally { iterator.close(); } } // Get a TupleIterator public abstract TupleIterator iterator(Generator generator); private void noUpdates() { throw new ExceptionSemantic("RS0203: The " + getName() + " relvar is not updateable."); } public void setValue(ValueRelation relation) { noUpdates(); } public long insert(Generator generator, final ValueTuple tuple) { noUpdates(); return 0; } public long insert(Generator generator, final ValueRelation relation) { noUpdates(); return 0; } public long insertNoDuplicates(Generator generator, final ValueRelation relation) { noUpdates(); return 0; } // Delete all tuples public void purge() { noUpdates(); } // Delete selected tuples public long delete(final Context context, final Operator whereTupleOperator) { noUpdates(); return 0; } // Delete selected tuples public long delete(Generator generator, TupleFilter filter) { noUpdates(); return 0; } // Delete specified tuples. If there are tuplesToDelete not found in this Relvar, and errorIfNotIncluded is true, throw an error. public long delete(Context context, ValueRelation tuplesToDelete, boolean errorIfNotIncluded) { noUpdates(); return 0; } // Update all tuples using a given update operator public long update(final Context context, final Operator updateTupleOperator) { noUpdates(); return 0; } // Update selected tuples using a given update operator public long update(final Context context, final Operator whereTupleOperator, final Operator updateTupleOperator) { noUpdates(); return 0; } }