in webpos/src/main/java/org/apache/ofbiz/webpos/WebPosEvents.java [156:249]
public static String getProductType(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> featureMap = null;
Map<String, Object> variantTreeMap = null;
Map<String, Object> featureTypes = new HashMap<>();
WebPosSession webPosSession = getWebPosSession(request, null);
if (webPosSession != null) {
Delegator delegator = webPosSession.getDelegator();
LocalDispatcher dispatcher = webPosSession.getDispatcher();
GenericValue product = null;
try {
String productId = request.getParameter("productId");
product = EntityQuery.use(delegator).from("Product").where("productId", productId).queryOne();
if (product != null) {
request.setAttribute("product", product);
if (UtilValidate.isNotEmpty(product.getString("isVirtual")) && "Y".equalsIgnoreCase(product.getString("isVirtual"))) {
String virtualVariantMethodEnum = product.getString("virtualVariantMethodEnum");
if (UtilValidate.isEmpty(virtualVariantMethodEnum)) {
virtualVariantMethodEnum = "VV_VARIANTTREE";
}
if ("VV_VARIANTTREE".equalsIgnoreCase(virtualVariantMethodEnum)) {
String productStoreId = webPosSession.getProductStoreId();
try {
featureMap = dispatcher.runSync("getProductFeatureSet", UtilMisc.toMap("productId", productId));
if (ServiceUtil.isError(featureMap)) {
String errorMessage = ServiceUtil.getErrorMessage(featureMap);
request.setAttribute("_ERROR_MESSAGE_", errorMessage);
Debug.logError(errorMessage, MODULE);
return "error";
}
Set<String> featureSet = UtilGenerics.cast(featureMap.get("featureSet"));
if (UtilValidate.isNotEmpty(featureSet)) {
request.setAttribute("featureSet", featureSet);
try {
variantTreeMap = dispatcher.runSync("getProductVariantTree",
UtilMisc.toMap("productId", productId, "featureOrder", featureSet, "productStoreId", productStoreId));
if (ServiceUtil.isError(variantTreeMap)) {
String errorMessage = ServiceUtil.getErrorMessage(variantTreeMap);
request.setAttribute("_ERROR_MESSAGE_", errorMessage);
Debug.logError(errorMessage, MODULE);
return "error";
}
Map<String, Object> variantTree = UtilGenerics.cast(variantTreeMap.get("variantTree"));
if (UtilValidate.isNotEmpty(variantTree)) {
request.setAttribute("variantTree", variantTree);
request.setAttribute("variantTreeSize", variantTree.size());
List<String> featureOrder = new LinkedList<>(featureSet);
for (int i = 0; i < featureOrder.size(); i++) {
String featureKey = featureOrder.get(i);
GenericValue featureValue = EntityQuery.use(delegator)
.from("ProductFeatureType")
.where("productFeatureTypeId", featureOrder.get(i))
.cache().queryOne();
if (featureValue != null
&& UtilValidate.isNotEmpty(featureValue.get("description"))) {
featureTypes.put(featureKey, featureValue.get("description"));
featureTypes.put(featureKey, featureValue.get("productFeatureTypeId"));
}
}
request.setAttribute("featureTypes", featureTypes);
request.setAttribute("featureOrder", featureOrder);
if (UtilValidate.isNotEmpty(featureOrder)) {
request.setAttribute("featureOrderFirst", featureOrder.get(0));
}
}
Map<String, Object> imageMap = UtilGenerics.cast(variantTreeMap.get("variantSample"));
if (UtilValidate.isNotEmpty(imageMap)) {
List<String> variantSampleList = new LinkedList<>();
variantSampleList = new LinkedList<>(imageMap.keySet());
request.setAttribute("variantSample", imageMap);
request.setAttribute("variantSampleList", variantSampleList);
request.setAttribute("variantSampleSize", imageMap.size());
}
} catch (GenericServiceException e) {
Debug.logError(e, MODULE);
return "error";
}
}
} catch (GenericServiceException e) {
Debug.logError(e, MODULE);
return "error";
}
}
if ("VV_FEATURETREE".equalsIgnoreCase(virtualVariantMethodEnum)) {
request.setAttribute("featureLists", ProductWorker.getSelectableProductFeaturesByTypesAndSeq(product));
}
}
}
} catch (GenericEntityException e) {
Debug.logError(e, MODULE);
return "error";
}
}
return "success";
}