WIP added backend generics so all is seriazible and started to make
execute return full result.
This commit is contained in:
parent
3bf185ad48
commit
90b81deb29
25 changed files with 109 additions and 76 deletions
|
|
@ -17,5 +17,6 @@
|
|||
<module>vasc-backend-jdbc</module>
|
||||
<module>vasc-backend-metamodel</module>
|
||||
<module>vasc-backend-api</module>
|
||||
<module>vasc-backend-test</module>
|
||||
</modules>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -37,16 +38,16 @@ import java.util.Map;
|
|||
*/
|
||||
abstract public class AbstractVascBackendControllerLocal implements VascBackendControllerLocal {
|
||||
|
||||
private Map<String,VascBackend> backends = null;
|
||||
private Map<String,VascBackend<Serializable>> backends = null;
|
||||
|
||||
public AbstractVascBackendControllerLocal() {
|
||||
backends = new HashMap<String,VascBackend>(1000);
|
||||
backends = new HashMap<String,VascBackend<Serializable>>(1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendController#getVascBackendById(java.lang.String)
|
||||
*/
|
||||
public VascBackend getVascBackendById(String id) {
|
||||
public VascBackend<Serializable> getVascBackendById(String id) {
|
||||
return backends.get(id);
|
||||
}
|
||||
|
||||
|
|
@ -65,7 +66,8 @@ abstract public class AbstractVascBackendControllerLocal implements VascBackendC
|
|||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#addVascBackend(net.forwardfire.vasc.backend.VascBackend)
|
||||
*/
|
||||
public void addVascBackend(VascBackend backend) {
|
||||
@SuppressWarnings("unchecked")
|
||||
public void addVascBackend(VascBackend<? extends Serializable> backend) {
|
||||
if (backend==null) {
|
||||
throw new NullPointerException("backend must not be null.");
|
||||
}
|
||||
|
|
@ -73,14 +75,15 @@ abstract public class AbstractVascBackendControllerLocal implements VascBackendC
|
|||
throw new IllegalArgumentException("The backend must have an id.");
|
||||
}
|
||||
backend.startBackend();
|
||||
backends.put(backend.getId(), backend);
|
||||
VascBackend<Serializable> castedBackend = (VascBackend<Serializable>) backend;
|
||||
backends.put(backend.getId(), castedBackend);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackendControllerLocal#removeVascBackendById(java.lang.String)
|
||||
*/
|
||||
public void removeVascBackendById(String backendId) {
|
||||
VascBackend backend = getVascBackendById(backendId);
|
||||
VascBackend<? extends Serializable> backend = getVascBackendById(backendId);
|
||||
if (backend==null) {
|
||||
throw new NullPointerException("Could not find backend to remove with id: "+backendId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,15 +40,17 @@ public interface VascBackend<DATA_OBJECT extends Serializable> {
|
|||
public void startBackend();
|
||||
public void stopBackend();
|
||||
|
||||
public List<DATA_OBJECT> execute(VascBackendState state) throws VascBackendException;
|
||||
public VascBackendResult<DATA_OBJECT> execute(VascBackendState state) throws VascBackendException;
|
||||
|
||||
public boolean isReadOnly();
|
||||
|
||||
public void persist(DATA_OBJECT object) throws VascBackendException;
|
||||
//public DATA_OBJECT fetch(Map<String,Serializable> pks) throws VascBackendException;
|
||||
|
||||
public DATA_OBJECT merge(DATA_OBJECT object) throws VascBackendException;
|
||||
public void persist(DATA_OBJECT record) throws VascBackendException;
|
||||
|
||||
public void delete(DATA_OBJECT object) throws VascBackendException;
|
||||
public DATA_OBJECT merge(DATA_OBJECT record) throws VascBackendException;
|
||||
|
||||
public void delete(DATA_OBJECT record) throws VascBackendException;
|
||||
|
||||
/**
|
||||
* Creates a new Field acces obj the the given field entry.
|
||||
|
|
@ -102,10 +104,4 @@ public interface VascBackend<DATA_OBJECT extends Serializable> {
|
|||
|
||||
public boolean hasTotalSummary();
|
||||
public Map<String,Object> executeTotalSummary();
|
||||
|
||||
/*
|
||||
public boolean hasSettings();
|
||||
public Map<String,String> getSettings();
|
||||
public void putSetting(String key,String value);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
package net.forwardfire.vasc.backend;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -30,7 +32,7 @@ package net.forwardfire.vasc.backend;
|
|||
*/
|
||||
public interface VascBackendControllerLocal extends VascBackendController {
|
||||
|
||||
public void addVascBackend(VascBackend backend);
|
||||
public void addVascBackend(VascBackend<? extends Serializable> backend);
|
||||
|
||||
public void removeVascBackendById(String backendId);
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,9 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackend;
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
|
|
@ -79,7 +81,7 @@ public class JdbcVascBackend extends AbstractVascBackend<HashMap<String,Object>>
|
|||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
|
||||
*/
|
||||
public List<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendResult<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
JdbcConnectionProvider prov = getJdbcConnectionProvider();
|
||||
List<HashMap<String,Object>> result = new ArrayList<HashMap<String,Object>>(50);
|
||||
Connection connection = null;
|
||||
|
|
@ -108,16 +110,17 @@ public class JdbcVascBackend extends AbstractVascBackend<HashMap<String,Object>>
|
|||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
return new DefaultVascBackendResult<HashMap<String,Object>>(result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#merge(java.lang.Object)
|
||||
*/
|
||||
public HashMap<String,Object> merge(HashMap<String,Object> object) throws VascBackendException {
|
||||
return object;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#persist(java.lang.Object)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -31,7 +31,9 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackend;
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
|
|
@ -90,7 +92,7 @@ public class JdbcVascBackendXpql extends AbstractVascBackend<HashMap<String,Obje
|
|||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#execute(VascBackendState state)
|
||||
*/
|
||||
public List<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendResult<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
// Copy parameters
|
||||
for (String key:state.getDataParameterKeys()) {
|
||||
Object value = state.getDataParameter(key);
|
||||
|
|
@ -120,7 +122,7 @@ public class JdbcVascBackendXpql extends AbstractVascBackend<HashMap<String,Obje
|
|||
}
|
||||
result.add(map);
|
||||
}
|
||||
return result;
|
||||
return new DefaultVascBackendResult<HashMap<String,Object>>(result);
|
||||
} catch (SQLException e) {
|
||||
throw new VascBackendException(e);
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -23,9 +23,12 @@
|
|||
package net.forwardfire.vasc.backends.jpa;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
|
|
@ -74,7 +77,7 @@ public class XpqlHibernateVascBackend<DATA_OBJECT extends Serializable> extends
|
|||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<DATA_OBJECT> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendResult<DATA_OBJECT> execute(VascBackendState state) throws VascBackendException {
|
||||
|
||||
// Copy parameters
|
||||
for (String key:state.getDataParameterKeys()) {
|
||||
|
|
@ -106,7 +109,8 @@ public class XpqlHibernateVascBackend<DATA_OBJECT extends Serializable> extends
|
|||
}
|
||||
List<DATA_OBJECT> data = q.list();
|
||||
s.getTransaction().commit();
|
||||
return data;
|
||||
|
||||
return new DefaultVascBackendResult<DATA_OBJECT>(data);
|
||||
} finally {
|
||||
if (s!=null) {
|
||||
//em.close();
|
||||
|
|
|
|||
|
|
@ -28,7 +28,9 @@ import java.util.List;
|
|||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.Query;
|
||||
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
|
|
@ -77,7 +79,7 @@ public class XpqlPersistanceVascBackend<DATA_OBJECT extends Serializable> extend
|
|||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<DATA_OBJECT> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendResult<DATA_OBJECT> execute(VascBackendState state) throws VascBackendException {
|
||||
|
||||
// Copy parameters
|
||||
for (String key:state.getDataParameterKeys()) {
|
||||
|
|
@ -111,7 +113,8 @@ public class XpqlPersistanceVascBackend<DATA_OBJECT extends Serializable> extend
|
|||
if (emTransaction) {
|
||||
em.getTransaction().commit();
|
||||
}
|
||||
return data;
|
||||
VascBackendResult<DATA_OBJECT> result = new DefaultVascBackendResult<DATA_OBJECT>(data);
|
||||
return result;
|
||||
} finally {
|
||||
if (em!=null) {
|
||||
//em.close();
|
||||
|
|
|
|||
|
|
@ -30,7 +30,9 @@ import java.util.Map;
|
|||
import java.util.logging.Logger;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackend;
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryFieldValue;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
|
|
@ -80,7 +82,7 @@ public class LdapVascBackend extends AbstractVascBackend<HashMap<String,Object>>
|
|||
/**
|
||||
* @see net.forwardfire.vasc.backend.VascBackend#execute()
|
||||
*/
|
||||
public List<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendResult<HashMap<String,Object>> execute(VascBackendState state) throws VascBackendException {
|
||||
LdapConnectionProvider prov = getLdapConnectionProvider();
|
||||
LDAPConnection connection = prov.getLdapConnection();
|
||||
List<HashMap<String,Object>> result = new ArrayList<HashMap<String,Object>>(50);
|
||||
|
|
@ -128,7 +130,7 @@ public class LdapVascBackend extends AbstractVascBackend<HashMap<String,Object>>
|
|||
} finally {
|
||||
safeDisconnect(connection);
|
||||
}
|
||||
return result;
|
||||
return new DefaultVascBackendResult<HashMap<String,Object>>(result);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -43,7 +43,9 @@ import org.eobjects.metamodel.schema.Schema;
|
|||
import org.eobjects.metamodel.schema.Table;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackend;
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
import net.forwardfire.vasc.backend.metamodel.crud.CrudDataContext;
|
||||
|
|
@ -209,7 +211,7 @@ public class MetaModelVascBackend extends AbstractVascBackend<Row> {
|
|||
return q;
|
||||
}
|
||||
|
||||
public List<Row> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendResult<Row> execute(VascBackendState state) throws VascBackendException {
|
||||
Schema schema = dataContext.getDefaultSchema();
|
||||
Table t = schema.getTableByName(table);
|
||||
if (t==null) {
|
||||
|
|
@ -240,7 +242,7 @@ public class MetaModelVascBackend extends AbstractVascBackend<Row> {
|
|||
DataSet ds = crudDataContext.executeQuery(q);
|
||||
result.addAll(ds.toRows());
|
||||
ds.close();
|
||||
return result;
|
||||
return new DefaultVascBackendResult<Row>(result);
|
||||
}
|
||||
|
||||
DataSet ds = dataContext.executeQuery(q);
|
||||
|
|
@ -258,7 +260,7 @@ public class MetaModelVascBackend extends AbstractVascBackend<Row> {
|
|||
}
|
||||
ds.close();
|
||||
|
||||
return result;
|
||||
return new DefaultVascBackendResult<Row>(result);
|
||||
}
|
||||
|
||||
public void persist(Row object) throws VascBackendException {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,9 @@ import java.util.List;
|
|||
import java.util.logging.Logger;
|
||||
|
||||
import net.forwardfire.vasc.backend.AbstractVascBackend;
|
||||
import net.forwardfire.vasc.backend.DefaultVascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendException;
|
||||
import net.forwardfire.vasc.backend.VascBackendResult;
|
||||
import net.forwardfire.vasc.backend.VascBackendState;
|
||||
import net.forwardfire.vasc.backend.VascEntryRecordCreator;
|
||||
|
||||
|
|
@ -104,7 +106,7 @@ public class MongodbVascBackend extends AbstractVascBackend<BasicDBObject> {
|
|||
return query;
|
||||
}
|
||||
|
||||
public List<BasicDBObject> execute(VascBackendState state) throws VascBackendException {
|
||||
public VascBackendResult<BasicDBObject> execute(VascBackendState state) throws VascBackendException {
|
||||
DBCollection coll = getDBCollection();
|
||||
DBObject query = createFilterQuery(state);
|
||||
DBCursor cur = coll.find(query);
|
||||
|
|
@ -117,7 +119,7 @@ public class MongodbVascBackend extends AbstractVascBackend<BasicDBObject> {
|
|||
DBObject row = cur.next();
|
||||
result.add((BasicDBObject)row);
|
||||
}
|
||||
return result;
|
||||
return new DefaultVascBackendResult<BasicDBObject>(result);
|
||||
}
|
||||
|
||||
public void persist(BasicDBObject object) throws VascBackendException {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue