package org.reldb.rel.v0.storage.relvars;
import java.io.Serializable;
import org.reldb.rel.v0.storage.RelDatabase;
import org.reldb.rel.v0.types.TypeRelation;
public abstract class RelvarMetadata implements Serializable {
public static final long serialVersionUID = 0;
private RelvarHeadingMetadata headingDefinitionMetadata;
private transient RelvarHeading headingDefinition = null;
private String owner;
private long creationSequence;
private String source;
private void obtainSource(RelDatabase database) {
source = (new TypeRelation(getHeadingDefinition(database).getHeading())).toString() + " " + getHeadingDefinition(database).toString();
}
public RelvarMetadata(RelDatabase database, RelvarHeading headingDefinition, String owner) {
this.headingDefinition = headingDefinition;
headingDefinitionMetadata = new RelvarHeadingMetadata(headingDefinition);
this.owner = owner;
this.creationSequence = -1;
obtainSource(database);
}
public RelvarHeading getHeadingDefinition(RelDatabase database) {
if (headingDefinition == null)
headingDefinition = headingDefinitionMetadata.getHeadingDefinition(database);
return headingDefinition;
}
public void setHeadingDefinition(RelDatabase database, RelvarHeading newHeading) {
headingDefinitionMetadata = new RelvarHeadingMetadata(newHeading);
headingDefinition = newHeading;
obtainSource(database);
}
public String getOwner() {
return owner;
}
public void setCreationSequence(long creationSequence) {
this.creationSequence = creationSequence;
}
public long getCreationSequence() {
return creationSequence;
}
public boolean isVirtual() {
return false;
}
public boolean isExternal() {
return false;
}
public String getSourceDefinition() {
return "REAL " + source;
}
public abstract RelvarGlobal getRelvar(String name, RelDatabase database);
public abstract void dropRelvar(RelDatabase database);
}