package org.multibit.mbm.api.response.hal.purchaseorder;
import com.google.common.base.Optional;
import com.theoryinpractise.halbuilder.ResourceFactory;
import com.theoryinpractise.halbuilder.spi.Resource;
import org.multibit.mbm.api.response.hal.BaseBridge;
import org.multibit.mbm.core.model.PurchaseOrder;
import org.multibit.mbm.core.model.User;
import javax.ws.rs.core.UriInfo;
import java.util.List;
/**
* <p>Bridge to provide the following to {@link org.multibit.mbm.core.model.PurchaseOrder}:</p>
* <ul>
* <li>Creates representation of multiple PurchaseOrders for an administrator</li>
* </ul>
*
* @since 0.0.1
*/
public class AdminPurchaseOrderCollectionBridge extends BaseBridge<List<PurchaseOrder>> {
private final SupplierPurchaseOrderBridge supplierPurchaseOrderBridge;
/**
* @param uriInfo The {@link javax.ws.rs.core.UriInfo} containing the originating request information
* @param principal An optional {@link org.multibit.mbm.core.model.User} to provide a security principal
*/
public AdminPurchaseOrderCollectionBridge(UriInfo uriInfo, Optional<User> principal) {
super(uriInfo, principal);
supplierPurchaseOrderBridge = new SupplierPurchaseOrderBridge(uriInfo, principal);
}
public Resource toResource(List<PurchaseOrder> deliveries) {
ResourceFactory resourceFactory = getResourceFactory();
Resource purchaseOrderList = resourceFactory.newResource(this.uriInfo.getRequestUri().toString());
for (PurchaseOrder purchaseOrder : deliveries) {
Resource purchaseOrderResource = supplierPurchaseOrderBridge.toResource(purchaseOrder);
purchaseOrderResource.withProperty("id", purchaseOrder.getId())
// End of build
;
purchaseOrderList.withSubresource("/purchase-order/" + purchaseOrder.getId(), purchaseOrderResource);
}
return purchaseOrderList;
}
}