package com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.transform.ResultTransformer;

import com.rjconsultores.ventaboletos.vo.busquedapacotes.PassageiroVO;

public class DatosPassageiroResultTransformer implements ResultTransformer {

	private static final long serialVersionUID = 1L;

	@Override
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List<PassageiroVO> transformList(List mapList) {
		Map<Long, PassageiroVO> passageiros = new HashMap<Long, PassageiroVO>();
		
		for (Object objmap : mapList) {
			
			Map<String, Object> tupleMap = (Map<String, Object>) objmap;
			Long tarifavendapacoteId = (Long) tupleMap.get("TARIFAVENDAPACOTE_ID");
			
			if(!passageiros.containsKey(tarifavendapacoteId)){
				PassageiroVO passageiro = new PassageiroVO();
				passageiro.setTarifavendapacoteId(tarifavendapacoteId);
				setDatosPassageiro(passageiro, tupleMap);
				passageiros.put(tarifavendapacoteId, passageiro);				
			}
		}
				
		List<PassageiroVO> passageirosList = new ArrayList<PassageiroVO>();
		passageirosList.addAll(passageiros.values());
		
		return passageirosList;
	}

	@Override
	public Object transformTuple(Object[] data, String[] aliases) {
		Map<String,Object> row = new HashMap<String,Object>();
		
		for(int index = 0; index < aliases.length; index++){
			row.put(aliases[index], data[index]);
		}
		
		return row;
	}
	
	private void setDatosPassageiro(PassageiroVO passageiro, Map<String, Object> tupleMap){
		
		passageiro.setVendapacoteId((Long) tupleMap.get("VENDAPACOTE_ID"));
		passageiro.setDocumento((String) tupleMap.get("DOCUMENTO"));
		passageiro.setNome((String) tupleMap.get("NOMEPASSAGEIRO"));
		passageiro.setBoletoId((Long) tupleMap.get("BOLETO_ID"));
		passageiro.setAssento((String) tupleMap.get("NUMASIENTO"));
		passageiro.setCategoria((String) tupleMap.get("CVECATEGORIA"));
		
	}

}
