package ch.elexis.core.findings.fhir.po.model;
import ch.elexis.core.findings.IObservationLink;
import ch.elexis.data.PersistentObject;
import ch.rgw.tools.VersionInfo;
public class ObservationLink extends PersistentObject implements IObservationLink {
protected static final String TABLENAME = "CH_ELEXIS_CORE_FINDINGS_OBSERVATIONLINK";
protected static final String VERSION = "1.0.0";
public static final String FLD_SOURCEID = "sourceid"; //$NON-NLS-1$
public static final String FLD_TARGETID = "targetid"; //$NON-NLS-1$
public static final String FLD_TYPE = "type"; //$NON-NLS-1$
public static final String FLD_DESCRIPTION = "description"; //$NON-NLS-1$
//@formatter:off
protected static final String createDB =
"CREATE TABLE " + TABLENAME + "(" +
"ID VARCHAR(25) PRIMARY KEY," +
"lastupdate BIGINT," +
"deleted CHAR(1) default '0'," +
"sourceid VARCHAR(80)," +
"targetid VARCHAR(80)," +
"type CHAR(8)," +
"description VARCHAR(255)" + ");" +
"CREATE INDEX CH_ELEXIS_CORE_FINDINGS_OBSERVATIONLINK_IDX1 ON " + TABLENAME + " (sourceid);" +
"CREATE INDEX CH_ELEXIS_CORE_FINDINGS_OBSERVATIONLINK_IDX2 ON " + TABLENAME + " (targetid);" +
"INSERT INTO " + TABLENAME + " (ID, " + FLD_SOURCEID + ") VALUES ('VERSION','" + VERSION + "');";
//@formatter:on
static {
addMapping(TABLENAME, FLD_SOURCEID, FLD_TARGETID, FLD_TYPE, FLD_DESCRIPTION);
ObservationLink version = load("VERSION");
if (version.state() < PersistentObject.DELETED) {
createOrModifyTable(createDB);
} else {
VersionInfo vi = new VersionInfo(version.get(FLD_SOURCEID));
if (vi.isOlder(VERSION)) {
// we should update eg. with createOrModifyTable(update.sql);
// And then set the new version
version.set(FLD_SOURCEID, VERSION);
}
}
}
public static ObservationLink load(final String id){
return new ObservationLink(id);
}
protected ObservationLink(final String id){
super(id);
}
public ObservationLink(){}
@Override
public String getLabel(){
// TODO Auto-generated method stub
return null;
}
@Override
protected String getTableName(){
// TODO Auto-generated method stub
return null;
}
}