package mapper;
import api.v1.Position;
import api.v1.WorklistItem;
import api.v1.WorklistItemStatus;
import models.OrderModel;
import models.PositionTagModel;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class WorklistMapper {
public List<WorklistItem> mapToApi(List<OrderModel> mOrders) {
List<WorklistItem> worklistItems = new ArrayList<>();
for (OrderModel mOrder : mOrders) {
WorklistItem item = mapToApi(mOrder);
worklistItems.add(item);
}
return worklistItems;
}
public WorklistItem mapToApi(OrderModel order) {
WorklistItem worklistItem = new WorklistItem();
Position p = new PositionMapper().mapToApi(order.position);
if (p != null) {
worklistItem.position_name = p.name;
worklistItem.position_alias = order.position_name;
worklistItem.latitude = String.format("%02d", p.dms.latDeg) +
"° " + String.format("%02d", p.dms.latMin) + "' " + p.dms.latDirection;
worklistItem.longitude = String.format("%03d", p.dms.longDeg) +
"° " + String.format("%02d", p.dms.longMin) + "' " + p.dms.longDirection;
worklistItem.longitude_dec = p.dec.getLongitude();
worklistItem.latitude_dec = p.dec.getLatitude();
} else {
worklistItem.position_name = order.taskDescription;
worklistItem.status = WorklistItemStatus.READY;
}
worklistItem.customerName = order.customer.name;
worklistItem.infoForMeteorologist = order.info_for_meteorologist;
worklistItem.metref = order.met_ref;
worklistItem.product = new ProductMapper().mapToApi(order.product);
if ( order.position != null ) {
worklistItem.tags = new String[order.position.tags.size()];
{
int i = 0;
for (Iterator<PositionTagModel> iterator = order.position.tags.iterator(); iterator.hasNext(); ) {
PositionTagModel tag = iterator.next();
worklistItem.tags[i] = tag.name;
i++;
}
}
}
return worklistItem;
}
}