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.ItemAdicionalVO;

public class DatosItemAdicionalResultTransformer implements ResultTransformer {

	private static final long serialVersionUID = 1L;

	@Override
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List<ItemAdicionalVO> transformList(List mapList) {
		Map<String, ItemAdicionalVO> itens = new HashMap<String, ItemAdicionalVO>();
		
		for (Object objmap : mapList) {
			Map<String, Object> tupleMap = (Map<String, Object>) objmap;
			Long itemadicionalId = (Long) tupleMap.get("ITEMADICIONAL_ID");
			
			if(!itens.containsKey(itemadicionalId)){
				ItemAdicionalVO itemAdicional = new ItemAdicionalVO();
				itemAdicional.setItemadicionalId(itemadicionalId);
				setDatosItemAdicional(itemAdicional, tupleMap);
				itens.put(itemadicionalId+""+itemAdicional.getVendapacoteId(), itemAdicional);				
			}
		}
				
		List<ItemAdicionalVO> itemAdicionalList = new ArrayList<ItemAdicionalVO>();
		itemAdicionalList.addAll(itens.values());
		
		return itemAdicionalList;
	}
	
	@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 setDatosItemAdicional(ItemAdicionalVO itemAdicional, Map<String, Object> tupleMap) {
		itemAdicional.setVendapacoteId((Long) tupleMap.get("VENDAPACOTE_ID"));
		itemAdicional.setDescitemadicional((String) tupleMap.get("DESCITEMADICIONAL"));
	}

}
