in rdb/src/main/java/org/apache/tuscany/das/rdb/impl/WriteCommandImpl.java [121:164]
protected void addParameters(Parameters parameters) {
List params = parameters.getParameter();
if(params == null)
return;
boolean paramsIndexed = true;
TreeMap sortedParams = null;
for(int i=0; i<params.size(); i++){
if(((ParameterImpl)params.get(i)).getIndex() <= 0){
paramsIndexed=false; //any index not set, ignore all externally set indexes and do auto indexing
break;
}
}
//auto-indexing
if(!paramsIndexed) {
for(int i=0; i<params.size(); i++){
ParameterExtendedImpl param = new ParameterExtendedImpl((ParameterImpl)params.get(i));
param.setIndex(i+1);
this.addParameter(param);
}
return;
}
else {//dont allow duplicates and check indexing with +1 increment from 1st to last param
sortedParams = new TreeMap();
for(int i=0; i<params.size(); i++){
ParameterImpl existingParam = (ParameterImpl)sortedParams.put( new Integer(((ParameterImpl)params.get(i)).getIndex()), ((ParameterImpl)params.get(i)));
if(existingParam != null) {
throw new RuntimeException("Parameters with duplicate indexes!");
}
}
if( ((Integer)sortedParams.firstKey()).intValue() + sortedParams.size() -1 !=
((Integer)sortedParams.lastKey()).intValue()) {
throw new RuntimeException("Parameters with improper indexes!");
}
}
for(int i=0; i<params.size(); i++) {
ParameterExtendedImpl param = new ParameterExtendedImpl((ParameterImpl)params.get(i));
param.setIndex(((ParameterImpl)params.get(i)).getIndex());
this.addParameter(param);
}
}