Search in sources :

Example 1 with ResourceType

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());
}
Also used : MaterialResource(fi.otavanopisto.pyramus.domainmodel.resources.MaterialResource) Locale(java.util.Locale) WorkResource(fi.otavanopisto.pyramus.domainmodel.resources.WorkResource) HashMap(java.util.HashMap) ResourceCategoryDAO(fi.otavanopisto.pyramus.dao.resources.ResourceCategoryDAO) Resource(fi.otavanopisto.pyramus.domainmodel.resources.Resource) MaterialResource(fi.otavanopisto.pyramus.domainmodel.resources.MaterialResource) WorkResource(fi.otavanopisto.pyramus.domainmodel.resources.WorkResource) ArrayList(java.util.ArrayList) ResourceType(fi.otavanopisto.pyramus.domainmodel.resources.ResourceType) ResourceCategory(fi.otavanopisto.pyramus.domainmodel.resources.ResourceCategory) ResourceDAO(fi.otavanopisto.pyramus.dao.resources.ResourceDAO) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

ResourceCategoryDAO (fi.otavanopisto.pyramus.dao.resources.ResourceCategoryDAO)1 ResourceDAO (fi.otavanopisto.pyramus.dao.resources.ResourceDAO)1 MaterialResource (fi.otavanopisto.pyramus.domainmodel.resources.MaterialResource)1 Resource (fi.otavanopisto.pyramus.domainmodel.resources.Resource)1 ResourceCategory (fi.otavanopisto.pyramus.domainmodel.resources.ResourceCategory)1 ResourceType (fi.otavanopisto.pyramus.domainmodel.resources.ResourceType)1 WorkResource (fi.otavanopisto.pyramus.domainmodel.resources.WorkResource)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Locale (java.util.Locale)1 Map (java.util.Map)1