protected void addParameters()

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);
    	}
    }