Search in sources :

Example 1 with ResultsPage

use of com.adobe.acs.commons.reports.api.ResultsPage in project acs-aem-commons by Adobe-Consulting-Services.

the class ReportCSVExportServlet method updateCSV.

private void updateCSV(Resource config, SlingHttpServletRequest request, List<ReportCellCSVExporter> exporters, Csv csv, Writer writer) throws ReportException {
    QueryReportExecutor executor = request.adaptTo(QueryReportExecutor.class);
    executor.setConfiguration(config);
    log.debug("Retrieved executor {}", executor);
    ResultsPage queryResult = executor.getAllResults();
    List<? extends Object> results = queryResult.getResults();
    log.debug("Retrieved {} results", results.size());
    for (Object result : results) {
        List<String> row = new ArrayList<String>();
        try {
            for (ReportCellCSVExporter exporter : exporters) {
                row.add(exporter.getValue(result));
            }
            csv.writeRow(row.toArray(new String[row.size()]));
            writer.flush();
        } catch (Exception e) {
            log.warn("Exception writing row: " + row, e);
        }
    }
    log.debug("Results written successfully");
}
Also used : QueryReportExecutor(com.adobe.acs.commons.reports.models.QueryReportExecutor) ArrayList(java.util.ArrayList) ResultsPage(com.adobe.acs.commons.reports.api.ResultsPage) ReportCellCSVExporter(com.adobe.acs.commons.reports.api.ReportCellCSVExporter) ReportException(com.adobe.acs.commons.reports.api.ReportException) ServletException(javax.servlet.ServletException) IOException(java.io.IOException)

Example 2 with ResultsPage

use of com.adobe.acs.commons.reports.api.ResultsPage in project acs-aem-commons by Adobe-Consulting-Services.

the class QueryReportExecutor method fetchResults.

private ResultsPage fetchResults(int limit, int offset) throws ReportException {
    prepareStatement();
    ResourceResolver resolver = request.getResourceResolver();
    Session session = resolver.adaptTo(Session.class);
    List<Object> results = new ArrayList<>();
    try {
        QueryManager queryMgr = session.getWorkspace().getQueryManager();
        Query query = queryMgr.createQuery(statement, config.getQueryLanguage());
        if (page != -1) {
            log.debug("Fetching results with limit {} and offset {}", new Object[] { limit, offset });
            query.setLimit(limit);
            query.setOffset(offset);
        } else {
            log.debug("Fetching all results");
        }
        QueryResult result = query.execute();
        NodeIterator nodes = result.getNodes();
        while (nodes.hasNext()) {
            results.add(resolver.getResource(nodes.nextNode().getPath()));
        }
    } catch (RepositoryException re) {
        log.error("Exception executing search results", re);
        throw new ReportException("Exception executing search results", re);
    }
    return new ResultsPage(results, config.getPageSize(), page);
}
Also used : NodeIterator(javax.jcr.NodeIterator) QueryResult(javax.jcr.query.QueryResult) Query(javax.jcr.query.Query) ResourceResolver(org.apache.sling.api.resource.ResourceResolver) ArrayList(java.util.ArrayList) QueryManager(javax.jcr.query.QueryManager) ReportException(com.adobe.acs.commons.reports.api.ReportException) RepositoryException(javax.jcr.RepositoryException) ResultsPage(com.adobe.acs.commons.reports.api.ResultsPage) Session(javax.jcr.Session)

Aggregations

ReportException (com.adobe.acs.commons.reports.api.ReportException)2 ResultsPage (com.adobe.acs.commons.reports.api.ResultsPage)2 ArrayList (java.util.ArrayList)2 ReportCellCSVExporter (com.adobe.acs.commons.reports.api.ReportCellCSVExporter)1 QueryReportExecutor (com.adobe.acs.commons.reports.models.QueryReportExecutor)1 IOException (java.io.IOException)1 NodeIterator (javax.jcr.NodeIterator)1 RepositoryException (javax.jcr.RepositoryException)1 Session (javax.jcr.Session)1 Query (javax.jcr.query.Query)1 QueryManager (javax.jcr.query.QueryManager)1 QueryResult (javax.jcr.query.QueryResult)1 ServletException (javax.servlet.ServletException)1 ResourceResolver (org.apache.sling.api.resource.ResourceResolver)1