use of org.apache.ofbiz.entity.condition.EntityCondition in project ofbiz-framework by apache.
the class OrderLookupServices method findOrders.
public static Map<String, Object> findOrders(DispatchContext dctx, Map<String, ? extends Object> context) {
LocalDispatcher dispatcher = dctx.getDispatcher();
Delegator delegator = dctx.getDelegator();
Security security = dctx.getSecurity();
GenericValue userLogin = (GenericValue) context.get("userLogin");
Integer viewIndex = Paginator.getViewIndex(context, "viewIndex", 1);
Integer viewSize = Paginator.getViewSize(context, "viewSize");
String showAll = (String) context.get("showAll");
String useEntryDate = (String) context.get("useEntryDate");
Locale locale = (Locale) context.get("locale");
if (showAll == null) {
showAll = "N";
}
// list of fields to select (initial list)
Set<String> fieldsToSelect = new LinkedHashSet<>();
fieldsToSelect.add("orderId");
fieldsToSelect.add("orderName");
fieldsToSelect.add("statusId");
fieldsToSelect.add("orderTypeId");
fieldsToSelect.add("orderDate");
fieldsToSelect.add("currencyUom");
fieldsToSelect.add("grandTotal");
fieldsToSelect.add("remainingSubTotal");
// sorting by order date newest first
List<String> orderBy = UtilMisc.toList("-orderDate", "-orderId");
// list to hold the parameters
List<String> paramList = new LinkedList<>();
// list of conditions
List<EntityCondition> conditions = new LinkedList<>();
// check security flag for purchase orders
boolean canViewPo = security.hasEntityPermission("ORDERMGR", "_PURCHASE_VIEW", userLogin);
if (!canViewPo) {
conditions.add(EntityCondition.makeCondition("orderTypeId", EntityOperator.NOT_EQUAL, "PURCHASE_ORDER"));
}
// dynamic view entity
DynamicViewEntity dve = new DynamicViewEntity();
dve.addMemberEntity("OH", "OrderHeader");
// no prefix
dve.addAliasAll("OH", "", null);
dve.addRelation("one-nofk", "", "OrderType", UtilMisc.toList(new ModelKeyMap("orderTypeId", "orderTypeId")));
dve.addRelation("one-nofk", "", "StatusItem", UtilMisc.toList(new ModelKeyMap("statusId", "statusId")));
// start the lookup
String orderId = (String) context.get("orderId");
if (UtilValidate.isNotEmpty(orderId)) {
paramList.add("orderId=" + orderId);
conditions.add(makeExpr("orderId", orderId));
}
// the base order header fields
List<String> orderTypeList = UtilGenerics.checkList(context.get("orderTypeId"));
if (orderTypeList != null) {
List<EntityExpr> orExprs = new LinkedList<>();
for (String orderTypeId : orderTypeList) {
paramList.add("orderTypeId=" + orderTypeId);
if (!("PURCHASE_ORDER".equals(orderTypeId)) || (("PURCHASE_ORDER".equals(orderTypeId) && canViewPo))) {
orExprs.add(EntityCondition.makeCondition("orderTypeId", EntityOperator.EQUALS, orderTypeId));
}
}
conditions.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
}
String orderName = (String) context.get("orderName");
if (UtilValidate.isNotEmpty(orderName)) {
paramList.add("orderName=" + orderName);
conditions.add(makeExpr("orderName", orderName, true));
}
List<String> orderStatusList = UtilGenerics.checkList(context.get("orderStatusId"));
if (orderStatusList != null) {
List<EntityCondition> orExprs = new LinkedList<>();
for (String orderStatusId : orderStatusList) {
paramList.add("orderStatusId=" + orderStatusId);
if ("PENDING".equals(orderStatusId)) {
List<EntityExpr> pendExprs = new LinkedList<>();
pendExprs.add(EntityCondition.makeCondition("statusId", EntityOperator.EQUALS, "ORDER_CREATED"));
pendExprs.add(EntityCondition.makeCondition("statusId", EntityOperator.EQUALS, "ORDER_PROCESSING"));
pendExprs.add(EntityCondition.makeCondition("statusId", EntityOperator.EQUALS, "ORDER_APPROVED"));
orExprs.add(EntityCondition.makeCondition(pendExprs, EntityOperator.OR));
} else {
orExprs.add(EntityCondition.makeCondition("statusId", EntityOperator.EQUALS, orderStatusId));
}
}
conditions.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
}
List<String> productStoreList = UtilGenerics.checkList(context.get("productStoreId"));
if (productStoreList != null) {
List<EntityExpr> orExprs = new LinkedList<>();
for (String productStoreId : productStoreList) {
paramList.add("productStoreId=" + productStoreId);
orExprs.add(EntityCondition.makeCondition("productStoreId", EntityOperator.EQUALS, productStoreId));
}
conditions.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
}
List<String> webSiteList = UtilGenerics.checkList(context.get("orderWebSiteId"));
if (webSiteList != null) {
List<EntityExpr> orExprs = new LinkedList<>();
for (String webSiteId : webSiteList) {
paramList.add("webSiteId=" + webSiteId);
orExprs.add(EntityCondition.makeCondition("webSiteId", EntityOperator.EQUALS, webSiteId));
}
conditions.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
}
List<String> saleChannelList = UtilGenerics.checkList(context.get("salesChannelEnumId"));
if (saleChannelList != null) {
List<EntityExpr> orExprs = new LinkedList<>();
for (String salesChannelEnumId : saleChannelList) {
paramList.add("salesChannelEnumId=" + salesChannelEnumId);
orExprs.add(EntityCondition.makeCondition("salesChannelEnumId", EntityOperator.EQUALS, salesChannelEnumId));
}
conditions.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
}
String createdBy = (String) context.get("createdBy");
if (UtilValidate.isNotEmpty(createdBy)) {
paramList.add("createdBy=" + createdBy);
conditions.add(makeExpr("createdBy", createdBy));
}
String terminalId = (String) context.get("terminalId");
if (UtilValidate.isNotEmpty(terminalId)) {
paramList.add("terminalId=" + terminalId);
conditions.add(makeExpr("terminalId", terminalId));
}
String transactionId = (String) context.get("transactionId");
if (UtilValidate.isNotEmpty(transactionId)) {
paramList.add("transactionId=" + transactionId);
conditions.add(makeExpr("transactionId", transactionId));
}
String externalId = (String) context.get("externalId");
if (UtilValidate.isNotEmpty(externalId)) {
paramList.add("externalId=" + externalId);
conditions.add(makeExpr("externalId", externalId));
}
String internalCode = (String) context.get("internalCode");
if (UtilValidate.isNotEmpty(internalCode)) {
paramList.add("internalCode=" + internalCode);
conditions.add(makeExpr("internalCode", internalCode));
}
String dateField = "Y".equals(useEntryDate) ? "entryDate" : "orderDate";
String minDate = (String) context.get("minDate");
if (UtilValidate.isNotEmpty(minDate) && minDate.length() > 8) {
minDate = minDate.trim();
if (minDate.length() < 14) {
minDate = minDate + " " + "00:00:00.000";
}
paramList.add("minDate=" + minDate);
try {
Object converted = ObjectType.simpleTypeConvert(minDate, "Timestamp", null, null);
if (converted != null) {
conditions.add(EntityCondition.makeCondition(dateField, EntityOperator.GREATER_THAN_EQUAL_TO, converted));
}
} catch (GeneralException e) {
Debug.logWarning(e.getMessage(), module);
}
}
String maxDate = (String) context.get("maxDate");
if (UtilValidate.isNotEmpty(maxDate) && maxDate.length() > 8) {
maxDate = maxDate.trim();
if (maxDate.length() < 14) {
maxDate = maxDate + " " + "23:59:59.999";
}
paramList.add("maxDate=" + maxDate);
try {
Object converted = ObjectType.simpleTypeConvert(maxDate, "Timestamp", null, null);
if (converted != null) {
conditions.add(EntityCondition.makeCondition("orderDate", EntityOperator.LESS_THAN_EQUAL_TO, converted));
}
} catch (GeneralException e) {
Debug.logWarning(e.getMessage(), module);
}
}
// party (role) fields
String userLoginId = (String) context.get("userLoginId");
String partyId = (String) context.get("partyId");
List<String> roleTypeList = UtilGenerics.checkList(context.get("roleTypeId"));
if (UtilValidate.isNotEmpty(userLoginId) && UtilValidate.isEmpty(partyId)) {
GenericValue ul = null;
try {
ul = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", userLoginId).cache().queryOne();
} catch (GenericEntityException e) {
Debug.logWarning(e.getMessage(), module);
}
if (ul != null) {
partyId = ul.getString("partyId");
}
}
String isViewed = (String) context.get("isViewed");
if (UtilValidate.isNotEmpty(isViewed)) {
paramList.add("isViewed=" + isViewed);
conditions.add(makeExpr("isViewed", isViewed));
}
// Shipment Method
String shipmentMethod = (String) context.get("shipmentMethod");
if (UtilValidate.isNotEmpty(shipmentMethod)) {
String carrierPartyId = shipmentMethod.substring(0, shipmentMethod.indexOf('@'));
String ShippingMethodTypeId = shipmentMethod.substring(shipmentMethod.indexOf('@') + 1);
dve.addMemberEntity("OISG", "OrderItemShipGroup");
dve.addAlias("OISG", "shipmentMethodTypeId");
dve.addAlias("OISG", "carrierPartyId");
dve.addViewLink("OH", "OISG", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderId", "orderId")));
if (UtilValidate.isNotEmpty(carrierPartyId)) {
paramList.add("carrierPartyId=" + carrierPartyId);
conditions.add(makeExpr("carrierPartyId", carrierPartyId));
}
if (UtilValidate.isNotEmpty(ShippingMethodTypeId)) {
paramList.add("ShippingMethodTypeId=" + ShippingMethodTypeId);
conditions.add(makeExpr("shipmentMethodTypeId", ShippingMethodTypeId));
}
}
// PaymentGatewayResponse
String gatewayAvsResult = (String) context.get("gatewayAvsResult");
String gatewayScoreResult = (String) context.get("gatewayScoreResult");
if (UtilValidate.isNotEmpty(gatewayAvsResult) || UtilValidate.isNotEmpty(gatewayScoreResult)) {
dve.addMemberEntity("OPP", "OrderPaymentPreference");
dve.addMemberEntity("PGR", "PaymentGatewayResponse");
dve.addAlias("OPP", "orderPaymentPreferenceId");
dve.addAlias("PGR", "gatewayAvsResult");
dve.addAlias("PGR", "gatewayScoreResult");
dve.addViewLink("OH", "OPP", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderId", "orderId")));
dve.addViewLink("OPP", "PGR", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderPaymentPreferenceId", "orderPaymentPreferenceId")));
}
if (UtilValidate.isNotEmpty(gatewayAvsResult)) {
paramList.add("gatewayAvsResult=" + gatewayAvsResult);
conditions.add(EntityCondition.makeCondition("gatewayAvsResult", gatewayAvsResult));
}
if (UtilValidate.isNotEmpty(gatewayScoreResult)) {
paramList.add("gatewayScoreResult=" + gatewayScoreResult);
conditions.add(EntityCondition.makeCondition("gatewayScoreResult", gatewayScoreResult));
}
// add the role data to the view
if (roleTypeList != null || partyId != null) {
dve.addMemberEntity("OT", "OrderRole");
dve.addAlias("OT", "partyId");
dve.addAlias("OT", "roleTypeId");
dve.addViewLink("OH", "OT", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderId", "orderId")));
}
if (UtilValidate.isNotEmpty(partyId)) {
paramList.add("partyId=" + partyId);
fieldsToSelect.add("partyId");
conditions.add(makeExpr("partyId", partyId));
}
if (roleTypeList != null) {
fieldsToSelect.add("roleTypeId");
List<EntityExpr> orExprs = new LinkedList<>();
for (String roleTypeId : roleTypeList) {
paramList.add("roleTypeId=" + roleTypeId);
orExprs.add(makeExpr("roleTypeId", roleTypeId));
}
conditions.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
}
// order item fields
String correspondingPoId = (String) context.get("correspondingPoId");
String subscriptionId = (String) context.get("subscriptionId");
String productId = (String) context.get("productId");
String budgetId = (String) context.get("budgetId");
String quoteId = (String) context.get("quoteId");
String goodIdentificationTypeId = (String) context.get("goodIdentificationTypeId");
String goodIdentificationIdValue = (String) context.get("goodIdentificationIdValue");
boolean hasGoodIdentification = UtilValidate.isNotEmpty(goodIdentificationTypeId) && UtilValidate.isNotEmpty(goodIdentificationIdValue);
if (correspondingPoId != null || subscriptionId != null || productId != null || budgetId != null || quoteId != null || hasGoodIdentification) {
dve.addMemberEntity("OI", "OrderItem");
dve.addAlias("OI", "correspondingPoId");
dve.addAlias("OI", "subscriptionId");
dve.addAlias("OI", "productId");
dve.addAlias("OI", "budgetId");
dve.addAlias("OI", "quoteId");
dve.addViewLink("OH", "OI", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderId", "orderId")));
if (hasGoodIdentification) {
dve.addMemberEntity("GOODID", "GoodIdentification");
dve.addAlias("GOODID", "goodIdentificationTypeId");
dve.addAlias("GOODID", "idValue");
dve.addViewLink("OI", "GOODID", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("productId", "productId")));
paramList.add("goodIdentificationTypeId=" + goodIdentificationTypeId);
conditions.add(makeExpr("goodIdentificationTypeId", goodIdentificationTypeId));
paramList.add("goodIdentificationIdValue=" + goodIdentificationIdValue);
conditions.add(makeExpr("idValue", goodIdentificationIdValue));
}
}
if (UtilValidate.isNotEmpty(correspondingPoId)) {
paramList.add("correspondingPoId=" + correspondingPoId);
conditions.add(makeExpr("correspondingPoId", correspondingPoId));
}
if (UtilValidate.isNotEmpty(subscriptionId)) {
paramList.add("subscriptionId=" + subscriptionId);
conditions.add(makeExpr("subscriptionId", subscriptionId));
}
if (UtilValidate.isNotEmpty(productId)) {
paramList.add("productId=" + productId);
if (productId.startsWith("%") || productId.startsWith("*") || productId.endsWith("%") || productId.endsWith("*")) {
conditions.add(makeExpr("productId", productId));
} else {
GenericValue product = null;
try {
product = EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne();
} catch (GenericEntityException e) {
Debug.logWarning(e.getMessage(), module);
}
if (product != null) {
String isVirtual = product.getString("isVirtual");
if (isVirtual != null && "Y".equals(isVirtual)) {
List<EntityExpr> orExprs = new LinkedList<>();
orExprs.add(EntityCondition.makeCondition("productId", EntityOperator.EQUALS, productId));
Map<String, Object> varLookup = null;
List<GenericValue> variants = null;
try {
varLookup = dispatcher.runSync("getAllProductVariants", UtilMisc.toMap("productId", productId));
if (ServiceUtil.isError(varLookup)) {
return ServiceUtil.returnError(ServiceUtil.getErrorMessage(varLookup));
}
variants = UtilGenerics.checkList(varLookup.get("assocProducts"));
} catch (GenericServiceException e) {
Debug.logWarning(e.getMessage(), module);
}
if (variants != null) {
for (GenericValue v : variants) {
orExprs.add(EntityCondition.makeCondition("productId", EntityOperator.EQUALS, v.getString("productIdTo")));
}
}
conditions.add(EntityCondition.makeCondition(orExprs, EntityOperator.OR));
} else {
conditions.add(EntityCondition.makeCondition("productId", EntityOperator.EQUALS, productId));
}
} else {
String failMsg = UtilProperties.getMessage("OrderErrorUiLabels", "OrderFindOrderProductInvalid", UtilMisc.toMap("productId", productId), locale);
return ServiceUtil.returnFailure(failMsg);
}
}
}
if (UtilValidate.isNotEmpty(budgetId)) {
paramList.add("budgetId=" + budgetId);
conditions.add(makeExpr("budgetId", budgetId));
}
if (UtilValidate.isNotEmpty(quoteId)) {
paramList.add("quoteId=" + quoteId);
conditions.add(makeExpr("quoteId", quoteId));
}
// payment preference fields
String billingAccountId = (String) context.get("billingAccountId");
String finAccountId = (String) context.get("finAccountId");
String cardNumber = (String) context.get("cardNumber");
String accountNumber = (String) context.get("accountNumber");
String paymentStatusId = (String) context.get("paymentStatusId");
if (UtilValidate.isNotEmpty(paymentStatusId)) {
paramList.add("paymentStatusId=" + paymentStatusId);
conditions.add(makeExpr("paymentStatusId", paymentStatusId));
}
if (finAccountId != null || cardNumber != null || accountNumber != null || paymentStatusId != null) {
dve.addMemberEntity("OP", "OrderPaymentPreference");
dve.addAlias("OP", "finAccountId");
dve.addAlias("OP", "paymentMethodId");
dve.addAlias("OP", "paymentStatusId", "statusId", null, false, false, null);
dve.addViewLink("OH", "OP", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderId", "orderId")));
}
// search by billing account ID
if (UtilValidate.isNotEmpty(billingAccountId)) {
paramList.add("billingAccountId=" + billingAccountId);
conditions.add(makeExpr("billingAccountId", billingAccountId));
}
// search by fin account ID
if (UtilValidate.isNotEmpty(finAccountId)) {
paramList.add("finAccountId=" + finAccountId);
conditions.add(makeExpr("finAccountId", finAccountId));
}
// search by card number
if (UtilValidate.isNotEmpty(cardNumber)) {
dve.addMemberEntity("CC", "CreditCard");
dve.addAlias("CC", "cardNumber");
dve.addViewLink("OP", "CC", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("paymentMethodId", "paymentMethodId")));
paramList.add("cardNumber=" + cardNumber);
conditions.add(makeExpr("cardNumber", cardNumber));
}
// search by eft account number
if (UtilValidate.isNotEmpty(accountNumber)) {
dve.addMemberEntity("EF", "EftAccount");
dve.addAlias("EF", "accountNumber");
dve.addViewLink("OP", "EF", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("paymentMethodId", "paymentMethodId")));
paramList.add("accountNumber=" + accountNumber);
conditions.add(makeExpr("accountNumber", accountNumber));
}
// shipment/inventory item
String inventoryItemId = (String) context.get("inventoryItemId");
String softIdentifier = (String) context.get("softIdentifier");
String serialNumber = (String) context.get("serialNumber");
String shipmentId = (String) context.get("shipmentId");
if (shipmentId != null || inventoryItemId != null || softIdentifier != null || serialNumber != null) {
dve.addMemberEntity("II", "ItemIssuance");
dve.addAlias("II", "shipmentId");
dve.addAlias("II", "inventoryItemId");
dve.addViewLink("OH", "II", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderId", "orderId")));
if (softIdentifier != null || serialNumber != null) {
dve.addMemberEntity("IV", "InventoryItem");
dve.addAlias("IV", "softIdentifier");
dve.addAlias("IV", "serialNumber");
dve.addViewLink("II", "IV", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("inventoryItemId", "inventoryItemId")));
}
}
if (UtilValidate.isNotEmpty(inventoryItemId)) {
paramList.add("inventoryItemId=" + inventoryItemId);
conditions.add(makeExpr("inventoryItemId", inventoryItemId));
}
if (UtilValidate.isNotEmpty(softIdentifier)) {
paramList.add("softIdentifier=" + softIdentifier);
conditions.add(makeExpr("softIdentifier", softIdentifier, true));
}
if (UtilValidate.isNotEmpty(serialNumber)) {
paramList.add("serialNumber=" + serialNumber);
conditions.add(makeExpr("serialNumber", serialNumber, true));
}
if (UtilValidate.isNotEmpty(shipmentId)) {
paramList.add("shipmentId=" + shipmentId);
conditions.add(makeExpr("shipmentId", shipmentId));
}
// back order checking
String hasBackOrders = (String) context.get("hasBackOrders");
if (UtilValidate.isNotEmpty(hasBackOrders)) {
dve.addMemberEntity("IR", "OrderItemShipGrpInvRes");
dve.addAlias("IR", "quantityNotAvailable");
dve.addViewLink("OH", "IR", Boolean.FALSE, UtilMisc.toList(new ModelKeyMap("orderId", "orderId")));
paramList.add("hasBackOrders=" + hasBackOrders);
if ("Y".equals(hasBackOrders)) {
conditions.add(EntityCondition.makeCondition("quantityNotAvailable", EntityOperator.NOT_EQUAL, null));
conditions.add(EntityCondition.makeCondition("quantityNotAvailable", EntityOperator.GREATER_THAN, BigDecimal.ZERO));
} else if ("N".equals(hasBackOrders)) {
List<EntityExpr> orExpr = new LinkedList<>();
orExpr.add(EntityCondition.makeCondition("quantityNotAvailable", EntityOperator.EQUALS, null));
orExpr.add(EntityCondition.makeCondition("quantityNotAvailable", EntityOperator.EQUALS, BigDecimal.ZERO));
conditions.add(EntityCondition.makeCondition(orExpr, EntityOperator.OR));
}
}
// Get all orders according to specific ship to country with "Only Include" or "Do not Include".
String countryGeoId = (String) context.get("countryGeoId");
String includeCountry = (String) context.get("includeCountry");
if (UtilValidate.isNotEmpty(countryGeoId) && UtilValidate.isNotEmpty(includeCountry)) {
paramList.add("countryGeoId=" + countryGeoId);
paramList.add("includeCountry=" + includeCountry);
// add condition to dynamic view
dve.addMemberEntity("OCM", "OrderContactMech");
dve.addMemberEntity("PA", "PostalAddress");
dve.addAlias("OCM", "contactMechId");
dve.addAlias("OCM", "contactMechPurposeTypeId");
dve.addAlias("PA", "countryGeoId");
dve.addViewLink("OH", "OCM", Boolean.FALSE, ModelKeyMap.makeKeyMapList("orderId"));
dve.addViewLink("OCM", "PA", Boolean.FALSE, ModelKeyMap.makeKeyMapList("contactMechId"));
EntityConditionList<EntityExpr> exprs = null;
if ("Y".equals(includeCountry)) {
exprs = EntityCondition.makeCondition(UtilMisc.toList(EntityCondition.makeCondition("contactMechPurposeTypeId", "SHIPPING_LOCATION"), EntityCondition.makeCondition("countryGeoId", countryGeoId)), EntityOperator.AND);
} else {
exprs = EntityCondition.makeCondition(UtilMisc.toList(EntityCondition.makeCondition("contactMechPurposeTypeId", "SHIPPING_LOCATION"), EntityCondition.makeCondition("countryGeoId", EntityOperator.NOT_EQUAL, countryGeoId)), EntityOperator.AND);
}
conditions.add(exprs);
}
// create the main condition
EntityCondition cond = null;
if (conditions.size() > 0 || "Y".equalsIgnoreCase(showAll)) {
cond = EntityCondition.makeCondition(conditions, EntityOperator.AND);
}
if (Debug.verboseOn()) {
Debug.logInfo("Find order query: " + cond.toString(), module);
}
List<GenericValue> orderList = new LinkedList<>();
int orderCount = 0;
// get the index for the partial list
int lowIndex = 0;
int highIndex = 0;
if (cond != null) {
PagedList<GenericValue> pagedOrderList = null;
try {
// do the lookup
pagedOrderList = EntityQuery.use(delegator).select(fieldsToSelect).from(dve).where(cond).orderBy(orderBy).distinct().cursorScrollInsensitive().queryPagedList(viewIndex - 1, viewSize);
orderCount = pagedOrderList.getSize();
lowIndex = pagedOrderList.getStartIndex();
highIndex = pagedOrderList.getEndIndex();
orderList = pagedOrderList.getData();
} catch (GenericEntityException e) {
Debug.logError(e.getMessage(), module);
return ServiceUtil.returnError(e.getMessage());
}
}
// create the result map
Map<String, Object> result = ServiceUtil.returnSuccess();
// filter out requested inventory problems
filterInventoryProblems(context, result, orderList, paramList);
// format the param list
String paramString = StringUtil.join(paramList, "&");
result.put("highIndex", Integer.valueOf(highIndex));
result.put("lowIndex", Integer.valueOf(lowIndex));
result.put("viewIndex", viewIndex);
result.put("viewSize", viewSize);
result.put("showAll", showAll);
result.put("paramList", (paramString != null ? paramString : ""));
result.put("orderList", orderList);
result.put("orderListSize", Integer.valueOf(orderCount));
return result;
}
use of org.apache.ofbiz.entity.condition.EntityCondition in project ofbiz-framework by apache.
the class ContentJsonEvents method deleteContent.
public static void deleteContent(Delegator delegator, String contentId) throws GenericEntityException {
Timestamp now = UtilDateTime.nowTimestamp();
EntityCondition condition = EntityCondition.makeCondition(EntityCondition.makeCondition(UtilMisc.toMap("contentIdTo", contentId)), EntityUtil.getFilterByDateExpr());
List<GenericValue> assocs = delegator.findList("ContentAssoc", condition, null, null, null, true);
for (GenericValue assoc : assocs) {
assoc.set("thruDate", now);
delegator.store(assoc);
}
deleteWebPathAliases(delegator, contentId);
}
use of org.apache.ofbiz.entity.condition.EntityCondition in project ofbiz-framework by apache.
the class ContentJsonEvents method getContentAssocs.
public static String getContentAssocs(HttpServletRequest request, HttpServletResponse response) throws GenericEntityException, IOException {
Delegator delegator = (Delegator) request.getAttribute("delegator");
String contentId = request.getParameter("contentId");
EntityCondition condition = EntityCondition.makeCondition(EntityCondition.makeCondition(UtilMisc.toMap("contentId", contentId)), EntityUtil.getFilterByDateExpr());
List<GenericValue> assocs = delegator.findList("ContentAssoc", condition, null, null, null, false);
List<Map<String, Object>> nodes = new LinkedList<Map<String, Object>>();
for (GenericValue assoc : assocs) {
nodes.add(getTreeNode(assoc));
}
Collections.sort(nodes, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> node1, Map<String, Object> node2) {
Map<String, Object> data1 = UtilGenerics.cast(node1.get("data"));
Map<String, Object> data2 = UtilGenerics.cast(node2.get("data"));
if (data1 == null || data2 == null) {
return 0;
}
String title1 = (String) data1.get("title");
String title2 = (String) data2.get("title");
if (title1 == null || title2 == null) {
return 0;
}
return title1.toLowerCase(Locale.getDefault()).compareTo(title2.toLowerCase(Locale.getDefault()));
}
});
IOUtils.write(JSON.from(nodes).toString(), response.getOutputStream());
return "success";
}
use of org.apache.ofbiz.entity.condition.EntityCondition in project ofbiz-framework by apache.
the class CompDocServices method renderCompDocPdf.
public static Map<String, Object> renderCompDocPdf(DispatchContext dctx, Map<String, ? extends Object> context) {
LocalDispatcher dispatcher = dctx.getDispatcher();
Locale locale = (Locale) context.get("locale");
String rootDir = (String) context.get("rootDir");
String webSiteId = (String) context.get("webSiteId");
String https = (String) context.get("https");
Delegator delegator = dctx.getDelegator();
String contentId = (String) context.get("contentId");
String contentRevisionSeqId = (String) context.get("contentRevisionSeqId");
try {
List<EntityCondition> exprList = new LinkedList<EntityCondition>();
exprList.add(EntityCondition.makeCondition("contentIdTo", EntityOperator.EQUALS, contentId));
exprList.add(EntityCondition.makeCondition("contentAssocTypeId", EntityOperator.EQUALS, "COMPDOC_PART"));
exprList.add(EntityCondition.makeCondition("rootRevisionContentId", EntityOperator.EQUALS, contentId));
if (UtilValidate.isNotEmpty(contentRevisionSeqId)) {
exprList.add(EntityCondition.makeCondition("contentRevisionSeqId", EntityOperator.LESS_THAN_EQUAL_TO, contentRevisionSeqId));
}
List<GenericValue> compDocParts = EntityQuery.use(delegator).select("rootRevisionContentId", "itemContentId", "maxRevisionSeqId", "contentId", "dataResourceId", "contentIdTo", "contentAssocTypeId", "fromDate", "sequenceNum").from("ContentAssocRevisionItemView").where(exprList).orderBy("sequenceNum").filterByDate().queryList();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document();
document.setPageSize(PageSize.LETTER);
PdfCopy writer = new PdfCopy(document, baos);
document.open();
for (GenericValue contentAssocRevisionItemView : compDocParts) {
String thisDataResourceId = contentAssocRevisionItemView.getString("dataResourceId");
GenericValue dataResource = EntityQuery.use(delegator).from("DataResource").where("dataResourceId", thisDataResourceId).queryOne();
String inputMimeType = null;
if (dataResource != null) {
inputMimeType = dataResource.getString("mimeTypeId");
}
byte[] inputByteArray = null;
PdfReader reader = null;
if (inputMimeType != null && "application/pdf".equals(inputMimeType)) {
ByteBuffer byteBuffer = DataResourceWorker.getContentAsByteBuffer(delegator, thisDataResourceId, https, webSiteId, locale, rootDir);
inputByteArray = byteBuffer.array();
reader = new PdfReader(inputByteArray);
} else if (inputMimeType != null && "text/html".equals(inputMimeType)) {
ByteBuffer byteBuffer = DataResourceWorker.getContentAsByteBuffer(delegator, thisDataResourceId, https, webSiteId, locale, rootDir);
inputByteArray = byteBuffer.array();
String s = new String(inputByteArray, "UTF-8");
Debug.logInfo("text/html string:" + s, module);
continue;
} else if (inputMimeType != null && "application/vnd.ofbiz.survey.response".equals(inputMimeType)) {
String surveyResponseId = dataResource.getString("relatedDetailId");
String surveyId = null;
String acroFormContentId = null;
GenericValue surveyResponse = null;
if (UtilValidate.isNotEmpty(surveyResponseId)) {
surveyResponse = EntityQuery.use(delegator).from("SurveyResponse").where("surveyResponseId", surveyResponseId).queryOne();
if (surveyResponse != null) {
surveyId = surveyResponse.getString("surveyId");
}
}
if (UtilValidate.isNotEmpty(surveyId)) {
GenericValue survey = EntityQuery.use(delegator).from("Survey").where("surveyId", surveyId).queryOne();
if (survey != null) {
acroFormContentId = survey.getString("acroFormContentId");
if (UtilValidate.isNotEmpty(acroFormContentId)) {
// TODO: is something supposed to be done here?
}
}
}
if (surveyResponse != null) {
if (UtilValidate.isEmpty(acroFormContentId)) {
// Create AcroForm PDF
Map<String, Object> survey2PdfResults = dispatcher.runSync("buildPdfFromSurveyResponse", UtilMisc.toMap("surveyResponseId", surveyId));
if (ServiceUtil.isError(survey2PdfResults)) {
return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ContentSurveyErrorBuildingPDF", locale), null, null, survey2PdfResults);
}
ByteBuffer outByteBuffer = (ByteBuffer) survey2PdfResults.get("outByteBuffer");
inputByteArray = outByteBuffer.array();
reader = new PdfReader(inputByteArray);
} else {
// Fill in acroForm
Map<String, Object> survey2AcroFieldResults = dispatcher.runSync("setAcroFieldsFromSurveyResponse", UtilMisc.toMap("surveyResponseId", surveyResponseId));
if (ServiceUtil.isError(survey2AcroFieldResults)) {
return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ContentSurveyErrorSettingAcroFields", locale), null, null, survey2AcroFieldResults);
}
ByteBuffer outByteBuffer = (ByteBuffer) survey2AcroFieldResults.get("outByteBuffer");
inputByteArray = outByteBuffer.array();
reader = new PdfReader(inputByteArray);
}
}
} else {
return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ContentMimeTypeNotSupported", locale));
}
if (reader != null) {
int n = reader.getNumberOfPages();
for (int i = 0; i < n; i++) {
PdfImportedPage pg = writer.getImportedPage(reader, i + 1);
writer.addPage(pg);
}
}
}
document.close();
ByteBuffer outByteBuffer = ByteBuffer.wrap(baos.toByteArray());
Map<String, Object> results = ServiceUtil.returnSuccess();
results.put("outByteBuffer", outByteBuffer);
return results;
} catch (GenericEntityException e) {
return ServiceUtil.returnError(e.toString());
} catch (IOException | DocumentException | GeneralException e) {
Debug.logError(e, "Error in CompDoc operation: ", module);
return ServiceUtil.returnError(e.toString());
}
}
use of org.apache.ofbiz.entity.condition.EntityCondition in project ofbiz-framework by apache.
the class ContentWorker method renderSubContentAsText.
public static void renderSubContentAsText(LocalDispatcher dispatcher, String contentId, Appendable out, String mapKey, Map<String, Object> templateContext, Locale locale, String mimeTypeId, boolean cache) throws GeneralException, IOException {
Delegator delegator = dispatcher.getDelegator();
// find the sub-content with matching mapKey
List<EntityCondition> exprs = UtilMisc.<EntityCondition>toList(EntityCondition.makeCondition("contentId", EntityOperator.EQUALS, contentId));
if (UtilValidate.isNotEmpty(mapKey)) {
exprs.add(EntityCondition.makeCondition("mapKey", EntityOperator.EQUALS, mapKey));
}
GenericValue subContent = EntityQuery.use(delegator).from("ContentAssoc").where(exprs).orderBy("-fromDate").cache(cache).filterByDate().queryFirst();
if (subContent == null) {
Debug.logWarning("No sub-content found with map-key [" + mapKey + "] for content [" + contentId + "]", module);
} else {
String subContentId = subContent.getString("contentIdTo");
templateContext.put("mapKey", mapKey);
renderContentAsText(dispatcher, subContentId, out, templateContext, locale, mimeTypeId, null, null, cache);
}
}
Aggregations