Package org.dspace.search

Examples of org.dspace.search.QueryResults


            Item[] resultsItems;
            Collection[] resultsCollections;
            Community[] resultsCommunities;

            QueryResults qResults = null;
            QueryArgs qArgs = new QueryArgs();
            SortOption sortOption = null;

            if (request.getParameter("etal") != null)
            {
                qArgs.setEtAl(UIUtil.getIntParameter(request, "etal"));
            }

            try
            {
                if (sortBy > 0)
                {
                    sortOption = SortOption.getSortOption(sortBy);
                    qArgs.setSortOption(sortOption);
                }

                if (SortOption.ASCENDING.equalsIgnoreCase(order))
                {
                    qArgs.setSortOrder(SortOption.ASCENDING);
                }
                else
                {
                    qArgs.setSortOrder(SortOption.DESCENDING);
                }
            }
            catch (Exception e)
            {
            }

            // Override the page setting if exporting metadata
            if ("submit_export_metadata".equals(UIUtil.getSubmitButton(request, "submit")))
            {
                qArgs.setPageSize(Integer.MAX_VALUE);
            }
            else if (rpp > 0)
            {
                qArgs.setPageSize(rpp);
            }
           
            // if the "advanced" flag is set, build the query string from the
            // multiple query fields
            if (advanced != null)
            {
                query = qArgs.buildQuery(request);
                advancedQuery = qArgs.buildHTTPQuery(request);
            }

            // Ensure the query is non-null
            if (query == null)
            {
                query = "";
            }

            // Get the location parameter, if any
            String location = request.getParameter("location");

            // If there is a location parameter, we should redirect to
            // do the search with the correct location.
            if ((location != null) && !location.equals(""))
            {
                String url = "";

                if (!location.equals("/"))
                {
                    // Location is a Handle
                    url = "/handle/" + location;
                }

                // Encode the query
                query = URLEncoder.encode(query, Constants.DEFAULT_ENCODING);

                if (advancedQuery.length() > 0)
                {
                    query = query + "&from_advanced=true&" + advancedQuery;
                }

                // Do the redirect
                response.sendRedirect(response.encodeRedirectURL(request
                        .getContextPath()
                        + url + "/simple-search?query=" + query));

                return;
            }

            // Build log information
            String logInfo = "";

            // Get our location
            Community community = UIUtil.getCommunityLocation(request);
            Collection collection = UIUtil.getCollectionLocation(request);

            // get the start of the query results page
            //        List resultObjects = null;
            qArgs.setQuery(query);
            qArgs.setStart(start);

            // Perform the search
            if (collection != null)
            {
                logInfo = "collection_id=" + collection.getID() + ",";

                // Values for drop-down box
                request.setAttribute("community", community);
                request.setAttribute("collection", collection);

                qResults = DSQuery.doQuery(context, qArgs, collection);
            }
            else if (community != null)
            {
                logInfo = "community_id=" + community.getID() + ",";

                request.setAttribute("community", community);

                // Get the collections within the community for the dropdown box
                request
                        .setAttribute("collection.array", community
                                .getCollections());

                qResults = DSQuery.doQuery(context, qArgs, community);
            }
            else
            {
                // Get all communities for dropdown box
                Community[] communities = Community.findAll(context);
                request.setAttribute("community.array", communities);

                qResults = DSQuery.doQuery(context, qArgs);
            }

            // now instantiate the results and put them in their buckets
            for (int i = 0; i < qResults.getHitTypes().size(); i++)
            {
                Integer myType = qResults.getHitTypes().get(i);

                // add the handle to the appropriate lists
                switch (myType.intValue())
                {
                case Constants.ITEM:
                    itemCount++;
                    break;

                case Constants.COLLECTION:
                    collCount++;
                    break;

                case Constants.COMMUNITY:
                    commCount++;
                    break;
                }
            }

            // Make objects from the handles - make arrays, fill them out
            resultsCommunities = new Community[commCount];
            resultsCollections = new Collection[collCount];
            resultsItems = new Item[itemCount];

            collCount = 0;
            commCount = 0;
            itemCount = 0;

            for (int i = 0; i < qResults.getHitTypes().size(); i++)
            {
                Integer myId    = qResults.getHitIds().get(i);
                String myHandle = qResults.getHitHandles().get(i);
                Integer myType  = qResults.getHitTypes().get(i);

                // add the handle to the appropriate lists
                switch (myType.intValue())
                {
                case Constants.ITEM:
                    if (myId != null)
                    {
                        resultsItems[itemCount] = Item.find(context, myId);
                    }
                    else
                    {
                        resultsItems[itemCount] = (Item)HandleManager.resolveToObject(context, myHandle);
                    }

                    if (resultsItems[itemCount] == null)
                    {
                        throw new SQLException("Query \"" + query
                                + "\" returned unresolvable item");
                    }
                    itemCount++;
                    break;

                case Constants.COLLECTION:
                    if (myId != null)
                    {
                        resultsCollections[collCount] = Collection.find(context, myId);
                    }
                    else
                    {
                        resultsCollections[collCount] = (Collection)HandleManager.resolveToObject(context, myHandle);
                    }

                    if (resultsCollections[collCount] == null)
                    {
                        throw new SQLException("Query \"" + query
                                + "\" returned unresolvable collection");
                    }

                    collCount++;
                    break;

                case Constants.COMMUNITY:
                    if (myId != null)
                    {
                        resultsCommunities[commCount] = Community.find(context, myId);
                    }
                    else
                    {
                        resultsCommunities[commCount] = (Community)HandleManager.resolveToObject(context, myHandle);
                    }

                    if (resultsCommunities[commCount] == null)
                    {
                        throw new SQLException("Query \"" + query
                                + "\" returned unresolvable community");
                    }

                    commCount++;
                    break;
                }
            }

            // Log
            log.info(LogManager.getHeader(context, "search", logInfo + "query=\""
                    + query + "\",results=(" + resultsCommunities.length + ","
                    + resultsCollections.length + "," + resultsItems.length + ")"));

            // Pass in some page qualities
            // total number of pages
            int pageTotal = 1 + ((qResults.getHitCount() - 1) / qResults
                    .getPageSize());

            // current page being displayed
            int pageCurrent = 1 + (qResults.getStart() / qResults.getPageSize());

            // pageLast = min(pageCurrent+9,pageTotal)
            int pageLast = ((pageCurrent + 9) > pageTotal) ? pageTotal
                    : (pageCurrent + 9);

            // pageFirst = max(1,pageCurrent-9)
            int pageFirst = ((pageCurrent - 9) > 1) ? (pageCurrent - 9) : 1;


            //Fire an event to log our search
            DSpaceObject scope = null;
            if(collection != null){
                scope = collection;
            }else
            if(community != null){
                scope = community;
            }
            logSearch(context, request, query, pageCurrent, scope);


            // Pass the results to the display JSP
            request.setAttribute("items", resultsItems);
            request.setAttribute("communities", resultsCommunities);
            request.setAttribute("collections", resultsCollections);

            request.setAttribute("pagetotal", Integer.valueOf(pageTotal));
            request.setAttribute("pagecurrent", Integer.valueOf(pageCurrent));
            request.setAttribute("pagelast", Integer.valueOf(pageLast));
            request.setAttribute("pagefirst", Integer.valueOf(pageFirst));

            request.setAttribute("queryresults", qResults);

            // And the original query string
            request.setAttribute("query", query);

            request.setAttribute("order",  qArgs.getSortOrder());
            request.setAttribute("sortedBy", sortOption);

            if (AuthorizeManager.isAdmin(context))
            {
                // Set a variable to create admin buttons
                request.setAttribute("admin_button", Boolean.TRUE);
            }
           
            if ((fromAdvanced != null) && (qResults.getHitCount() == 0))
            {
                // send back to advanced form if no results
                Community[] communities = Community.findAll(context);
                request.setAttribute("communities", communities);
                request.setAttribute("no_results", "yes");
View Full Code Here


        // get the start of the query results page
        qArgs.setQuery(query);

        // Perform the search
        QueryResults qResults = null;
        if (container == null)
        {
                qResults = DSQuery.doQuery(context, qArgs);
        }
        else if (container instanceof Collection)
        {
            logInfo = "collection_id=" + container.getID() + ",";
            qResults = DSQuery.doQuery(context, qArgs, (Collection)container);
        }
        else if (container instanceof Community)
        {
            logInfo = "community_id=" + container.getID() + ",";
            qResults = DSQuery.doQuery(context, qArgs, (Community)container);
        }
        else
        {
            throw new IllegalStateException("Invalid container for search context");
        }
       
        // now instantiate the results
        DSpaceObject[] results = new DSpaceObject[qResults.getHitHandles().size()];
        for (int i = 0; i < qResults.getHitHandles().size(); i++)
        {
            String myHandle = qResults.getHitHandles().get(i);
            DSpaceObject dso;
            try
            {
                dso = HandleManager.resolveToObject(context, myHandle);
            }
            catch (IllegalStateException e)
            {
                throw new SearchProcessorException(e.getMessage(), e);
            }
            catch (SQLException e)
            {
                throw new SearchProcessorException(e.getMessage(), e);
            }
            if (dso == null)
            {
                throw new SearchProcessorException("Query \"" + query
                        + "\" returned unresolvable handle: " + myHandle);
            }
            results[i] = dso;
        }

        // Log
        log.info(LogManager.getHeader(context, "search", logInfo + "query=\"" + query + "\",results=(" + results.length + ")"));

        // format and return results
        Map<String, String> labelMap = getLabels(request);
        Document resultsDoc = OpenSearch.getResultsDoc(format, query,
                qResults.getHitCount(), qResults.getStart(),
                qResults.getPageSize(), container, results, labelMap);
        try
        {
            Transformer xf = TransformerFactory.newInstance().newTransformer();
            response.setContentType(OpenSearch.getContentType(format));
            xf.transform(new DOMSource(resultsDoc), new StreamResult(response.getWriter()));
View Full Code Here

        }
        QueryArgs queryArgs = new QueryArgs();
        queryArgs.setQuery(query + " -location:l" + collection.getID());
        queryArgs.setPageSize(ITEMMAP_RESULT_PAGE_SIZE);
        queryArgs.setStart(offset);
        QueryResults results = DSQuery.doQuery(context, queryArgs);

        Map<Integer, Item> items = new HashMap<Integer, Item>();
        List<String> handles = results.getHitHandles();
        try
        {
            for (String handle : handles)
            {
                DSpaceObject resultDSO = HandleManager.resolveToObject(context, handle);
   
                if (resultDSO.getType() == Constants.ITEM)
                {
                    Item item = (Item) resultDSO;
                    if (AuthorizeManager.authorizeActionBoolean(context, item, Constants.READ))
                    {
                        items.put(Integer.valueOf(item.getID()), item);
                    }
                }
            }
        }
        catch (SQLException e)
        {
            throw new SearchProcessorException(e.getMessage(), e);
        }

        request.setAttribute("browsetext", query);
        request.setAttribute("items", items);
        request.setAttribute("more", results.getHitCount() > offset + ITEMMAP_RESULT_PAGE_SIZE);
        request.setAttribute("browsetype", "Add");
        request.setAttribute("page", page > 0 ? page + 1 : 1);
       
        JSPManager.showJSP(request, response, "itemmap-browse.jsp");
    }
View Full Code Here

        else
        {
            queryArgs.setStart(0);
        }

        QueryResults qResults = null;
        if (scope instanceof Community)
        {
            qResults = DSQuery.doQuery(context, queryArgs, (Community) scope);
        }
        else if (scope instanceof Collection)
View Full Code Here

        Item[] resultsItems;
        Collection[] resultsCollections;
        Community[] resultsCommunities;

        QueryResults qResults = null;
        QueryArgs qArgs = new QueryArgs();

        // if the "advanced" flag is set, build the query string from the
        // multiple query fields
        if (advanced != null)
        {
            query = qArgs.buildQuery(request);
        }

        // Ensure the query is non-null
        if (query == null)
        {
            query = "";
        }

        // Build log information
        String logInfo = "";

        // Get our location
        Community community = UIUtil.getCommunityLocation(request);
        Collection collection = UIUtil.getCollectionLocation(request);

        // get the start of the query results page
        // List resultObjects = null;
        qArgs.setQuery(query);
        qArgs.setStart(start);

        // Perform the search
        if (collection != null)
        {
            logInfo = "collection_id=" + collection.getID() + ",";

            // Values for drop-down box
            request.setAttribute("community", community);
            request.setAttribute("collection", collection);

            qResults = DSQuery.doQuery(context, qArgs, collection);
        }
        else if (community != null)
        {
            logInfo = "community_id=" + community.getID() + ",";

            request.setAttribute("community", community);

            // Get the collections within the community for the dropdown box
            request
                    .setAttribute("collection.array", community
                            .getCollections());

            qResults = DSQuery.doQuery(context, qArgs, community);
        }
        else
        {
            // Get all communities for dropdown box
            Community[] communities = Community.findAll(context);
            request.setAttribute("community.array", communities);

            qResults = DSQuery.doQuery(context, qArgs);
        }

        // now instantiate the results and put them in their buckets
        for (int i = 0; i < qResults.getHitHandles().size(); i++)
        {
            String myHandle = qResults.getHitHandles().get(i);
            Integer myType = qResults.getHitTypes().get(i);

            // add the handle to the appropriate lists
            switch (myType.intValue())
            {
            case Constants.ITEM:
                itemHandles.add(myHandle);

                break;

            case Constants.COLLECTION:
                collectionHandles.add(myHandle);

                break;

            case Constants.COMMUNITY:
                communityHandles.add(myHandle);

                break;
            }
        }

        int numCommunities = communityHandles.size();
        int numCollections = collectionHandles.size();
        int numItems = itemHandles.size();

        // Make objects from the handles - make arrays, fill them out
        resultsCommunities = new Community[numCommunities];
        resultsCollections = new Collection[numCollections];
        resultsItems = new Item[numItems];

        for (int i = 0; i < numItems; i++)
        {
            String myhandle = itemHandles.get(i);

            Object o = HandleManager.resolveToObject(context, myhandle);

            resultsItems[i] = (Item) o;

            if (resultsItems[i] == null)
            {
                throw new SQLException("Query \"" + query
                        + "\" returned unresolvable handle: " + myhandle);
            }
        }

        for (int i = 0; i < collectionHandles.size(); i++)
        {
            String myhandle = collectionHandles.get(i);

            Object o = HandleManager.resolveToObject(context, myhandle);

            resultsCollections[i] = (Collection) o;

            if (resultsCollections[i] == null)
            {
                throw new SQLException("Query \"" + query
                        + "\" returned unresolvable handle: " + myhandle);
            }
        }

        for (int i = 0; i < communityHandles.size(); i++)
        {
            String myhandle = communityHandles.get(i);

            Object o = HandleManager.resolveToObject(context, myhandle);

            resultsCommunities[i] = (Community) o;

            if (resultsCommunities[i] == null)
            {
                throw new SQLException("Query \"" + query
                        + "\" returned unresolvable handle: " + myhandle);
            }
        }

        // Log
        log.info(LogManager.getHeader(context, "search", logInfo + "query=\""
                + query + "\",results=(" + resultsCommunities.length + ","
                + resultsCollections.length + "," + resultsItems.length + ")"));

        // Pass in some page qualities
        // total number of pages
        int pageTotal = 1 + ((qResults.getHitCount() - 1) / qResults
                .getPageSize());

        // current page being displayed
        int pageCurrent = 1 + (qResults.getStart() / qResults.getPageSize());

        // pageLast = min(pageCurrent+9,pageTotal)
        int pageLast = ((pageCurrent + 9) > pageTotal) ? pageTotal
                : (pageCurrent + 9);
View Full Code Here

            throws IOException, SQLException
    {
        QueryArgs queryArgs = new QueryArgs();
        queryArgs.setQuery(query);
        queryArgs.setPageSize(Integer.MAX_VALUE);
        QueryResults results = DSQuery.doQuery(context, queryArgs);

        results.getHitHandles();
        List<DSpaceObject> dsos = new ArrayList<DSpaceObject>();
        for (String handle : results.getHitHandles())
            dsos.add(HandleManager.resolveToObject(context, handle));

        return dsos;
    }
View Full Code Here

TOP

Related Classes of org.dspace.search.QueryResults

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.