blob: 0d60927b33bd7e0c3312f64eceb2b961625ee63e [file] [log] [blame]
package org.apache.ofbiz.ecommerce.forum;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilMisc;
import org.apache.ofbiz.base.util.UtilValidate;
import org.apache.ofbiz.entity.Delegator;
import org.apache.ofbiz.entity.GenericEntityException;
import org.apache.ofbiz.entity.GenericValue;
import org.apache.ofbiz.entity.util.EntityListIterator;
import org.apache.ofbiz.service.GenericServiceException;
import org.apache.ofbiz.service.LocalDispatcher;
import org.apache.ofbiz.service.ServiceUtil;
public class ForumEvents {
public static final String module = ForumEvents.class.getName();
public static Map<String, Object> getForumMessages(HttpServletRequest request, Delegator delegator) {
LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
// ========== Create View Indexes
int viewIndex = 0;
int viewSize = 20;
if (UtilValidate.isNotEmpty(request.getParameter("VIEW_INDEX"))) {
Integer viewIndexInteger = Integer.parseInt(request.getParameter("VIEW_INDEX"));
if (viewIndexInteger != null) {
viewIndex = viewIndexInteger;
}
}
if (UtilValidate.isNotEmpty(request.getParameter("VIEW_SIZE"))) {
Integer viewSizeInteger = Integer.parseInt(request.getParameter("VIEW_SIZE"));
if (viewSizeInteger != null) {
viewSize = viewSizeInteger;
}
}
int lowIndex = viewIndex * viewSize;
int highIndex = (viewIndex + 1) * viewSize;
// =========== Set up the PerformFindList
GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin");
String forumId = request.getParameter("forumId");
Map<String, Object> inputFields = new HashMap<>();
inputFields.put("contentIdStart", forumId);
inputFields.put("caContentAssocTypeId_fld0", "PUBLISH_LINK");
inputFields.put("caContentAssocTypeId_fld1", "RESPONSE");
Map<String, Object> articlesFound = null;
try {
articlesFound = dispatcher.runSync("performFind", UtilMisc.<String, Object>toMap("entityName",
"ContentAssocViewTo", "inputFields", inputFields, "userLogin", userLogin, "orderBy", "-createdDate"));
} catch (GenericServiceException e) {
Debug.logError(e, "Cannot get ForumMessages for Forum %s", module, forumId);
return ServiceUtil.returnError("Error while searching for Messages, please retry and/or contact Admin.");
}
int start = viewIndex * viewSize;
List<GenericValue> list = null;
Integer listSize = 0;
try (EntityListIterator it = (EntityListIterator) articlesFound.get("listIt")) {
list = it.getPartialList(start + 1, viewSize); // list starts at '1'
listSize = it.getResultsSizeAfterPartialList();
} catch (ClassCastException | NullPointerException | GenericEntityException e) {
Debug.logInfo("Problem getting partial list" + e, module);
}
// create the result map
Map<String, Object> result = ServiceUtil.returnSuccess();
result.put("highIndex", highIndex);
result.put("listSize", listSize);
result.put("lowIndex", lowIndex);
result.put("viewIndex", viewIndex);
result.put("viewSize", viewSize);
result.put("forumMessages", list);
return result;
}
}