Search in sources :

Example 1 with SortingRecordVisitor

use of com.google.refine.sorting.SortingRecordVisitor in project OpenRefine by OpenRefine.

the class RowReorderOperation method createHistoryEntry.

@Override
protected HistoryEntry createHistoryEntry(Project project, long historyEntryID) throws Exception {
    Engine engine = new Engine(project);
    engine.setMode(_mode);
    List<Integer> rowIndices = new ArrayList<Integer>();
    if (_mode == Mode.RowBased) {
        RowVisitor visitor = new IndexingVisitor(rowIndices);
        if (_sorting != null) {
            SortingRowVisitor srv = new SortingRowVisitor(visitor);
            srv.initializeFromConfig(project, _sorting);
            if (srv.hasCriteria()) {
                visitor = srv;
            }
        }
        engine.getAllRows().accept(project, visitor);
    } else {
        RecordVisitor visitor = new IndexingVisitor(rowIndices);
        if (_sorting != null) {
            SortingRecordVisitor srv = new SortingRecordVisitor(visitor);
            srv.initializeFromConfig(project, _sorting);
            if (srv.hasCriteria()) {
                visitor = srv;
            }
        }
        engine.getAllRecords().accept(project, visitor);
    }
    return new HistoryEntry(historyEntryID, project, "Reorder rows", this, new RowReorderChange(rowIndices));
}
Also used : RowReorderChange(com.google.refine.model.changes.RowReorderChange) ArrayList(java.util.ArrayList) SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) HistoryEntry(com.google.refine.history.HistoryEntry) SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) RecordVisitor(com.google.refine.browsing.RecordVisitor) RowVisitor(com.google.refine.browsing.RowVisitor) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor) Engine(com.google.refine.browsing.Engine) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor)

Example 2 with SortingRecordVisitor

use of com.google.refine.sorting.SortingRecordVisitor in project OpenRefine by OpenRefine.

the class TemplatingExporter method export.

@Override
public void export(Project project, Properties options, Engine engine, Writer writer) throws IOException {
    String limitString = options.getProperty("limit");
    int limit = limitString != null ? Integer.parseInt(limitString) : -1;
    String sortingJson = options.getProperty("sorting");
    String templateString = options.getProperty("template");
    String prefixString = options.getProperty("prefix");
    String suffixString = options.getProperty("suffix");
    String separatorString = options.getProperty("separator");
    Template template;
    try {
        template = Parser.parse(templateString);
    } catch (ParsingException e) {
        throw new IOException("Missing or bad template", e);
    }
    template.setPrefix(prefixString);
    template.setSuffix(suffixString);
    template.setSeparator(separatorString);
    if (!"true".equals(options.getProperty("preview"))) {
        TemplateConfig config = new TemplateConfig(templateString, prefixString, suffixString, separatorString);
        project.getMetadata().getPreferenceStore().put("exporters.templating.template", ParsingUtilities.defaultWriter.writeValueAsString(config));
    }
    if (engine.getMode() == Mode.RowBased) {
        FilteredRows filteredRows = engine.getAllFilteredRows();
        RowVisitor visitor = template.getRowVisitor(writer, limit);
        if (sortingJson != null) {
            SortingConfig sorting = SortingConfig.reconstruct(sortingJson);
            SortingRowVisitor srv = new SortingRowVisitor(visitor);
            srv.initializeFromConfig(project, sorting);
            if (srv.hasCriteria()) {
                visitor = srv;
            }
        }
        filteredRows.accept(project, visitor);
    } else {
        FilteredRecords filteredRecords = engine.getFilteredRecords();
        RecordVisitor visitor = template.getRecordVisitor(writer, limit);
        if (sortingJson != null) {
            SortingConfig sorting = SortingConfig.reconstruct(sortingJson);
            SortingRecordVisitor srv = new SortingRecordVisitor(visitor);
            srv.initializeFromConfig(project, sorting);
            if (srv.hasCriteria()) {
                visitor = srv;
            }
        }
        filteredRecords.accept(project, visitor);
    }
}
Also used : SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) IOException(java.io.IOException) FilteredRecords(com.google.refine.browsing.FilteredRecords) SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) RecordVisitor(com.google.refine.browsing.RecordVisitor) FilteredRows(com.google.refine.browsing.FilteredRows) Template(com.google.refine.templating.Template) ParsingException(com.google.refine.expr.ParsingException) RowVisitor(com.google.refine.browsing.RowVisitor) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor) SortingConfig(com.google.refine.sorting.SortingConfig)

Example 3 with SortingRecordVisitor

use of com.google.refine.sorting.SortingRecordVisitor in project OpenRefine by OpenRefine.

the class GetRowsCommand method internalRespond.

protected void internalRespond(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        Project project = null;
        // This command also supports retrieving rows for an importing job.
        String importingJobID = request.getParameter("importingJobID");
        if (importingJobID != null) {
            long jobID = Long.parseLong(importingJobID);
            ImportingJob job = ImportingManager.getJob(jobID);
            if (job != null) {
                project = job.project;
            }
        }
        if (project == null) {
            project = getProject(request);
        }
        Engine engine = getEngine(request, project);
        String callback = request.getParameter("callback");
        int start = Math.min(project.rows.size(), Math.max(0, getIntegerParameter(request, "start", 0)));
        int limit = Math.min(project.rows.size() - start, Math.max(0, getIntegerParameter(request, "limit", 20)));
        Pool pool = new Pool();
        /* Properties options = new Properties();
            options.put("project", project);
            options.put("reconCandidateOmitTypes", true);
            options.put("pool", pool); */
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Type", callback == null ? "application/json" : "text/javascript");
        PrintWriter writer = response.getWriter();
        if (callback != null) {
            writer.write(callback);
            writer.write("(");
        }
        RowWritingVisitor rwv = new RowWritingVisitor(start, limit);
        SortingConfig sortingConfig = null;
        try {
            String sortingJson = request.getParameter("sorting");
            if (sortingJson != null) {
                sortingConfig = SortingConfig.reconstruct(sortingJson);
            }
        } catch (IOException e) {
        }
        if (engine.getMode() == Mode.RowBased) {
            FilteredRows filteredRows = engine.getAllFilteredRows();
            RowVisitor visitor = rwv;
            if (sortingConfig != null) {
                SortingRowVisitor srv = new SortingRowVisitor(visitor);
                srv.initializeFromConfig(project, sortingConfig);
                if (srv.hasCriteria()) {
                    visitor = srv;
                }
            }
            filteredRows.accept(project, visitor);
        } else {
            FilteredRecords filteredRecords = engine.getFilteredRecords();
            RecordVisitor visitor = rwv;
            if (sortingConfig != null) {
                SortingRecordVisitor srv = new SortingRecordVisitor(visitor);
                srv.initializeFromConfig(project, sortingConfig);
                if (srv.hasCriteria()) {
                    visitor = srv;
                }
            }
            filteredRecords.accept(project, visitor);
        }
        // Pool all the recons occuring in the rows seen
        for (WrappedRow wr : rwv.results) {
            for (Cell c : wr.row.cells) {
                if (c != null && c.recon != null) {
                    pool.pool(c.recon);
                }
            }
        }
        JsonResult result = new JsonResult(engine.getMode(), rwv.results, rwv.total, engine.getMode() == Mode.RowBased ? project.rows.size() : project.recordModel.getRecordCount(), start, limit, pool);
        ParsingUtilities.defaultWriter.writeValue(writer, result);
        if (callback != null) {
            writer.write(")");
        }
        // metadata refresh for row mode and record mode
        if (project.getMetadata() != null) {
            project.getMetadata().setRowCount(project.rows.size());
        }
    } catch (Exception e) {
        respondException(response, e);
    }
}
Also used : SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) IOException(java.io.IOException) FilteredRecords(com.google.refine.browsing.FilteredRecords) RecordVisitor(com.google.refine.browsing.RecordVisitor) SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) FilteredRows(com.google.refine.browsing.FilteredRows) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) Project(com.google.refine.model.Project) ImportingJob(com.google.refine.importing.ImportingJob) Pool(com.google.refine.util.Pool) RowVisitor(com.google.refine.browsing.RowVisitor) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor) Cell(com.google.refine.model.Cell) Engine(com.google.refine.browsing.Engine) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor) PrintWriter(java.io.PrintWriter) SortingConfig(com.google.refine.sorting.SortingConfig)

Aggregations

RecordVisitor (com.google.refine.browsing.RecordVisitor)3 RowVisitor (com.google.refine.browsing.RowVisitor)3 SortingRecordVisitor (com.google.refine.sorting.SortingRecordVisitor)3 SortingRowVisitor (com.google.refine.sorting.SortingRowVisitor)3 Engine (com.google.refine.browsing.Engine)2 FilteredRecords (com.google.refine.browsing.FilteredRecords)2 FilteredRows (com.google.refine.browsing.FilteredRows)2 SortingConfig (com.google.refine.sorting.SortingConfig)2 IOException (java.io.IOException)2 ParsingException (com.google.refine.expr.ParsingException)1 HistoryEntry (com.google.refine.history.HistoryEntry)1 ImportingJob (com.google.refine.importing.ImportingJob)1 Cell (com.google.refine.model.Cell)1 Project (com.google.refine.model.Project)1 RowReorderChange (com.google.refine.model.changes.RowReorderChange)1 Template (com.google.refine.templating.Template)1 Pool (com.google.refine.util.Pool)1 PrintWriter (java.io.PrintWriter)1 ArrayList (java.util.ArrayList)1 ServletException (javax.servlet.ServletException)1