use of fi.otavanopisto.pyramus.domainmodel.resources.Resource 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());
}
use of fi.otavanopisto.pyramus.domainmodel.resources.Resource in project pyramus by otavanopisto.
the class SearchResourcesAutoCompleteBinaryRequestController method process.
/**
* Processes a binary request.
* The request should contain the following parameters:
* <dl>
* <dt><code>query</code></dt>
* <dd>Already typed characters.</dd>
* </dl>
*
* @param binaryRequestContext The context of the binary request.
*/
public void process(BinaryRequestContext binaryRequestContext) {
ResourceDAO resourceDAO = DAOFactory.getInstance().getResourceDAO();
ResourceCategoryDAO resourceCategoryDAO = DAOFactory.getInstance().getResourceCategoryDAO();
String query = binaryRequestContext.getString("query");
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append("<ul>");
List<ResourceCategory> resourceCategories = resourceCategoryDAO.listUnarchived();
Collections.sort(resourceCategories, new StringAttributeComparator("getName"));
for (ResourceCategory resourceCategory : resourceCategories) {
SearchResult<Resource> searchResult = resourceDAO.searchResources(5, 0, query + '*', null, null, resourceCategory, true);
if (searchResult.getTotalHitCount() > 0) {
addResourceCategory(resultBuilder, resourceCategory);
for (Resource resource : searchResult.getResults()) {
addResource(resultBuilder, resource);
}
}
}
resultBuilder.append("</ul>");
try {
binaryRequestContext.setResponseContent(resultBuilder.toString().getBytes("UTF-8"), "text/html;charset=UTF-8");
} catch (UnsupportedEncodingException e) {
throw new SmvcRuntimeException(e);
}
}
Aggregations