var estProdPrecoTblHistCplMapper = mapperFactory.createMapper("EstProdPrecoTblHistCpl");
var qtdeDeParametrosPassadosPorQuery = 5; //Numero de argumentos passados por insert
var qtdeMaxPassadoPorQuery = 2000/qtdeDeParametrosPassadosPorQuery; //Numero de argumentos passados por insert
/**
 * A cada registro da linha é multiplicado pela quantidade de parametros passados na instrução sql
 */
var identificarQuantidadeDeListaNecessaria = function(lista){
	 return Math.ceil((message.get('listaPrecoTbl').size() * qtdeDeParametrosPassadosPorQuery)/2000);
};

var inserirListaDePrecoTbl = function(iteracao, iteracaoMax){

			var objetoRequest = new java.util.HashMap();
			objetoRequest.put('cdCtr',message.get('cdCtr'));

			if(iteracao+1 === iteracaoMax){//ultima iteracao
				objetoRequest.put('listaPrecoTbl', message.get('listaPrecoTbl').subList(iteracao*qtdeMaxPassadoPorQuery, message.get('listaPrecoTbl').size()));
				estProdPrecoTblHistCplMapper.insert('incluirEstProdPrecoTblHistCplEmMassa', objetoRequest);
			}else{
				objetoRequest.put('listaPrecoTbl', message.get('listaPrecoTbl').subList(iteracao*qtdeMaxPassadoPorQuery, (iteracao*qtdeMaxPassadoPorQuery)+(qtdeMaxPassadoPorQuery-1)));
				estProdPrecoTblHistCplMapper.insert('incluirEstProdPrecoTblHistCplEmMassa', objetoRequest);
			}
};

var qtdeListaNecessaria = 0;

if(message.get('listaPrecoTbl').size() > 0){
	
	qtdeListaNecessaria = identificarQuantidadeDeListaNecessaria(message.get('listaPrecoTbl'));
	for(var c=0; c<qtdeListaNecessaria; c++){
			try{
					inserirListaDePrecoTbl(c, qtdeListaNecessaria);
			}catch(err){
					estProdPrecoTblHistCplMapper.rollback();
					throw " Ocorreu um erro: " + err;
			}
	}
	
	estProdPrecoTblHistCplMapper.commit();
}