Added historic field on mapping condition
This commit is contained in:
parent
8da417ff85
commit
d6ddd74c2f
|
@ -4,8 +4,8 @@ import java.sql.ResultSet;
|
|||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.application.perform.service.engine.model.DBField;
|
||||
|
@ -22,8 +22,8 @@ public class CSVRecordConverter {
|
|||
}
|
||||
|
||||
private Map<String,Map<String,String>> mappings=new HashMap<>();
|
||||
private String conditionField=null;
|
||||
private Set<String> conditionValues=new HashSet<>();
|
||||
private Map<DBField,Set<Object>> condition=new HashMap<>();
|
||||
// private Set<String> conditionValues=new HashSet<>();
|
||||
private boolean isAlwaysMap=false;
|
||||
|
||||
|
||||
|
@ -48,10 +48,17 @@ public class CSVRecordConverter {
|
|||
mappings.put(actualFieldName, mapping);
|
||||
}
|
||||
|
||||
public void setCondition(String field, Set<String> values) {
|
||||
this.conditionField=labels.get(field).getFieldName();
|
||||
conditionField=conditionField.substring(1, conditionField.length()-1);
|
||||
this.conditionValues=values;
|
||||
// public void setCondition(String field, Set<String> values) {
|
||||
// this.conditionField=labels.get(field).getFieldName();
|
||||
// conditionField=conditionField.substring(1, conditionField.length()-1);
|
||||
// this.conditionValues=values;
|
||||
// }
|
||||
|
||||
|
||||
public void addCondition(DBField conditionField,Set<Object> values) {
|
||||
String label=labels.get(conditionField.getFieldName()).getFieldName();
|
||||
DBField labelledField=new DBField(conditionField.getType(),label.substring(1,label.length()-1));
|
||||
this.condition.put(labelledField, values);
|
||||
}
|
||||
|
||||
public void setAlwaysMap(boolean isAlwaysMap) {
|
||||
|
@ -67,10 +74,13 @@ public class CSVRecordConverter {
|
|||
if(isAlwaysMap) return true;
|
||||
|
||||
// DefaultBehaviour
|
||||
if(conditionField==null) return false;
|
||||
if(condition.isEmpty()) return false;
|
||||
else {
|
||||
String currentValue=rs.getString(conditionField);
|
||||
return conditionValues.contains(currentValue);
|
||||
for(Entry<DBField,Set<Object>> entry:condition.entrySet()) {
|
||||
Object obj=rs.getObject(entry.getKey().getFieldName());
|
||||
if(!entry.getValue().contains(obj)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import java.sql.Statement;
|
|||
import java.sql.Types;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -315,10 +316,12 @@ public class ImportedTable {
|
|||
queryConverter.setMapping(schema.getBatchUUIDField(), batchMapping);
|
||||
}
|
||||
|
||||
// Set mapping condition NB only farm supported at the moment
|
||||
// Set mapping condition
|
||||
if(schema.getFarmUUIDField()!=null)
|
||||
queryConverter.setCondition(schema.getFarmUUIDField(), farmMapping.keySet());
|
||||
queryConverter.addCondition(new DBField(Types.VARCHAR,schema.getFarmUUIDField()), Collections.singleton(farmMapping.keySet()));
|
||||
|
||||
if(hasSNAPSHOT())
|
||||
queryConverter.addCondition(getSNAPSHOTField(), Collections.singleton(request.getIncludeHistoric()));
|
||||
|
||||
|
||||
log.trace("Performing actual query towards {} ",tablename);
|
||||
|
|
Loading…
Reference in New Issue