OrderConfirmationSearchResultTransformer.java
package com.tradecloud.dto.order;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.party.ServiceProvider;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.hibernate.transform.ResultTransformer;
/**
* Created by ds on 2014/07/10.
*/
public class OrderConfirmationSearchResultTransformer implements ResultTransformer {
@Override
public Object transformTuple(Object[] objects, String[] strings) {
OrderConfirmationSearchResult result = new OrderConfirmationSearchResult();
result.setConsignmentReference("" + objects[0]);
result.setOrderReference("" + objects[1]);
result.setItemReference("" + objects[2]);
result.setSupplierName("" + objects[3]);
BigDecimal unitPrice = new BigDecimal("" + objects[4]);
result.setInvoiceCurrency("" + objects[5]);
BigDecimal itemQuantity = ((BigDecimal) objects[6]).setScale(2, BigDecimal.ROUND_HALF_UP);
result.setItemQuantity(itemQuantity);
result.setItemInvoiceValue(itemQuantity.multiply(unitPrice));
result.setLatestShipmentDate((Date) objects[7]);
OrganisationalUnit businessUnit = (OrganisationalUnit) objects[8];
result.setBusinessUnitName(businessUnit.getName());
result.setDivisionName("" + objects[9]);
result.setBuyer(objects[10] + " " + objects[11] );
ServiceProvider freightForwarder = (ServiceProvider) objects[12];
result.setFreightForwarder(freightForwarder.getName());
result.setLspBookingReference("" + objects[13]);
result.setStatus("" + objects[14]);
result.setOrderId(new Long("" + objects[15]));
/*List<OrdersEvent> events = (List<OrdersEvent>) objects[15];
String rejectReason = "";
if (events != null) {
for (OrdersEvent event : events) {
if (event.getEventType().equals(OrderEventType.LSP_REJECTED_SIGNOFF) ||
event.getEventType().equals(OrderEventType.LSP_REJECTED_UNSIGNOFF)) {
rejectReason = event.getReason();
}
}
}*/
result.setRejectReason(objects[15] + " XXX " + objects[16]);
long id = new Long("" + objects[17]).longValue();
result.setOrderId(id);
return result;
}
@Override
public List transformList(List list) {
//create a map
HashMap<String, OrderConfirmationSearchResult> map = new HashMap<String, OrderConfirmationSearchResult>();
List filteredList = new ArrayList();
//iterate through the list
for (Object obj : list) {
OrderConfirmationSearchResult result = (OrderConfirmationSearchResult) obj;
String key = result.getOrderReference() + result.getItemReference();
//look for the key, insert if it does not exist
if (!map.containsKey(key)) {
result.setRejectReason(getResultRejectReason(result));
map.put(key, result);
//if it exists then check for a reject reason
} else {
map.get(key).setRejectReason(getResultRejectReason(result));
}
}
for (OrderConfirmationSearchResult result : map.values()) {
filteredList.add(result);
}
return filteredList;
}
private String getResultRejectReason(OrderConfirmationSearchResult result) {
if (result.getRejectReason().contains("LSP_REJECTED_UNSIGNOFF") ||
result.getRejectReason().contains("LSP_REJECTED_SIGNOFF")) {
return result.getRejectReason().split(" XXX ")[1];
}
return "";
}
}