import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
+import java.util.ArrayList;
import mir.entity.adapter.EntityAdapterModel;
import mir.entity.adapter.EntityIteratorAdapter;
import mir.log.LoggerWrapper;
import mir.util.ParameterExpander;
+import mir.util.StringRoutines;
/**
* <p>Title: EntityBatchingProducerNode</p>
private String batchInfoKey;
private String batchDataKey;
private EntityAdapterModel model;
+ private String mainTablePrefix;
+ private String extraTables;
private String definition;
private String whereClause;
private String orderByClause;
String aBatchDataKey,
String aBatchInfoKey,
EntityAdapterModel aModel,
+ String aMainTablePrefix,
+ String someExtraTables,
String aDefinition,
String aWhereClause,
String anOrderByClause,
batchDataKey = aBatchDataKey;
batchInfoKey = aBatchInfoKey;
model = aModel;
+ mainTablePrefix = aMainTablePrefix;
+ extraTables = someExtraTables;
definition = aDefinition;
whereClause = aWhereClause;
orderByClause = anOrderByClause;
}
public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure {
- Iterator browser;
int nrEntities;
int nrBatchesAfterFirst;
int nrEntitiesInFirstBatch;
int nrBatchesToProcess;
List batchesData;
int i;
- int position;
Map batchData;
String expandedWhereClause;
String expandedOrderByClause;
nrEntitiesToSkip = ParameterExpander.evaluateIntegerExpression( aValueMap, nrEntitiesToSkipExpression);
nrEntitiesPerBatch = ParameterExpander.evaluateIntegerExpression( aValueMap, nrEntitiesPerBatchExpression);
minNrEntitiesInFirstBatch = ParameterExpander.evaluateIntegerExpression( aValueMap, minNrEntitiesInFirstBatchExpression);
+ List extraTableList = StringRoutines.splitString(ParameterExpander.expandExpression( aValueMap, extraTables).trim(), ",");
- batchesData = new Vector();
- batchLocations = new Vector();
+ batchesData = new ArrayList();
+ batchLocations = new ArrayList();
- nrEntities = model.getMappingForName(definition).getStorage().getSize(expandedWhereClause)-nrEntitiesToSkip;
+ nrEntities = model.getMappingForName(definition).getStorage().getSize(
+ mainTablePrefix, extraTableList, expandedWhereClause)-nrEntitiesToSkip;
nrEntitiesInFirstBatch = nrEntities % nrEntitiesPerBatch;
while (nrEntitiesInFirstBatch<minNrEntitiesInFirstBatch && nrEntities-nrEntitiesInFirstBatch>=nrEntitiesPerBatch)
nrEntitiesInFirstBatch = nrEntitiesInFirstBatch + nrEntitiesPerBatch;
else
batchData.put("next", null);
- Iterator j = new EntityIteratorAdapter(expandedWhereClause, expandedOrderByClause,
+ Iterator j = new EntityIteratorAdapter(mainTablePrefix, extraTableList, expandedWhereClause, expandedOrderByClause,
location.nrEntities, model, definition, location.nrEntities, location.firstEntity);
- List entities = new Vector();
+ List entities = new ArrayList();
while (j.hasNext())
entities.add(0, j.next());