package simpleorm.data;
import java.util.Iterator;
/**
* Interface that a data provider implements.
*/
public abstract class DConnection {
//static ThreadLocal<DConnection> threadAdaptor = new ThreadLocal();
/** Create a new instance for, eg. inserting. */
public abstract DRecordInstance newInstance(DRecordMeta meta);
protected DRecordInstance newRawInstance(DRecordMeta meta, Object bean) {
DRecordInstance rec = meta.newInstance();
setBean(rec, bean);
return rec;
}
protected Object getBean(DRecordInstance rec) {
return rec.bean;
}
/** Called by DConnection, NOT user */
protected void setBean(DRecordInstance rec, Object bean) {
rec.bean = bean;
}
/**
* Low level insert, normally called by DataSet?
*/
public abstract void insert(DRecordInstance record);
public abstract void update(DRecordInstance record);
//public abstract void delete(DRecordInstance record);
/**
* Beware that Iterator hasNext logic is incompatible and worse than
* RecordSet next logic. But it is the Java standard. Beware hasNext
* may be called multipletimes per record (and is by JSTL foreach).
*/
public abstract Iterator<DRecordInstance> executeQuery(DQuery query);
public abstract boolean canLockRecords();
}
|