use of fi.otavanopisto.pyramus.domainmodel.resources.ResourceType in project pyramus by otavanopisto.
the class SearchResourcesJSONRequestController method process.
public void process(JSONRequestContext requestContext) {
ResourceDAO resourceDAO = DAOFactory.getInstance().getResourceDAO();
ResourceCategoryDAO resourceCategoryDAO = DAOFactory.getInstance().getResourceCategoryDAO();
Integer resultsPerPage = NumberUtils.createInteger(requestContext.getRequest().getParameter("maxResults"));
if (resultsPerPage == null) {
resultsPerPage = 10;
}
Integer page = NumberUtils.createInteger(requestContext.getRequest().getParameter("page"));
if (page == null) {
page = 0;
}
SearchResult<Resource> searchResult;
if ("advanced".equals(requestContext.getString("activeTab"))) {
String name = requestContext.getRequest().getParameter("name");
String tags = requestContext.getRequest().getParameter("tags");
ResourceType resourceType = null;
String resourceTypeParam = requestContext.getRequest().getParameter("resourceType");
if (!StringUtils.isBlank(resourceTypeParam)) {
resourceType = Enum.valueOf(ResourceType.class, resourceTypeParam);
}
ResourceCategory resourceCategory = null;
String resourceCategoryParam = requestContext.getRequest().getParameter("resourceCategory");
if (!StringUtils.isBlank(resourceCategoryParam)) {
resourceCategory = resourceCategoryDAO.findById(NumberUtils.createLong(resourceCategoryParam));
}
searchResult = resourceDAO.searchResources(resultsPerPage, page, name, tags, resourceType, resourceCategory, true);
} else {
String simpleQuery = requestContext.getString("simpleQuery");
searchResult = resourceDAO.searchResourcesBasic(resultsPerPage, page, simpleQuery);
}
List<Map<String, Object>> results = new ArrayList<>();
List<Resource> resources = searchResult.getResults();
for (Resource resource : resources) {
Double unitCost = 0.0;
if (resource instanceof MaterialResource) {
unitCost = ((MaterialResource) resource).getUnitCost().getAmount();
} else if (resource instanceof WorkResource) {
unitCost = ((WorkResource) resource).getCostPerUse().getAmount();
}
Double hourlyCost = 0.0;
if (resource instanceof WorkResource) {
hourlyCost = ((WorkResource) resource).getHourlyCost().getAmount();
}
Map<String, Object> resourceInfo = new HashMap<>();
resourceInfo.put("id", resource.getId());
resourceInfo.put("name", resource.getName());
resourceInfo.put("resourceType", resource.getResourceType());
resourceInfo.put("resourceCategoryId", resource.getCategory().getId());
resourceInfo.put("resourceCategoryName", resource.getCategory().getName());
resourceInfo.put("unitCost", unitCost);
resourceInfo.put("hourlyCost", hourlyCost);
results.add(resourceInfo);
}
String statusMessage;
Locale locale = requestContext.getRequest().getLocale();
if (searchResult.getTotalHitCount() > 0) {
statusMessage = Messages.getInstance().getText(locale, "resources.searchResources.searchStatus", new Object[] { searchResult.getFirstResult() + 1, searchResult.getLastResult() + 1, searchResult.getTotalHitCount() });
} else {
statusMessage = Messages.getInstance().getText(locale, "resources.searchResources.searchStatusNoMatches");
}
requestContext.addResponseParameter("results", results);
requestContext.addResponseParameter("statusMessage", statusMessage);
requestContext.addResponseParameter("pages", searchResult.getPages());
requestContext.addResponseParameter("page", searchResult.getPage());
}
Aggregations