Search in sources :

Example 1 with Pool

use of com.google.refine.util.Pool 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("(");
        }
        JSONWriter jsonWriter = new JSONWriter(writer);
        jsonWriter.object();
        RowWritingVisitor rwv = new RowWritingVisitor(start, limit, jsonWriter, options);
        JSONObject sortingJson = null;
        try {
            String json = request.getParameter("sorting");
            sortingJson = (json == null) ? null : ParsingUtilities.evaluateJsonStringToObject(json);
        } catch (JSONException e) {
        }
        if (engine.getMode() == Mode.RowBased) {
            FilteredRows filteredRows = engine.getAllFilteredRows();
            RowVisitor visitor = rwv;
            if (sortingJson != null) {
                SortingRowVisitor srv = new SortingRowVisitor(visitor);
                srv.initializeFromJSON(project, sortingJson);
                if (srv.hasCriteria()) {
                    visitor = srv;
                }
            }
            jsonWriter.key("mode");
            jsonWriter.value("row-based");
            jsonWriter.key("rows");
            jsonWriter.array();
            filteredRows.accept(project, visitor);
            jsonWriter.endArray();
            jsonWriter.key("filtered");
            jsonWriter.value(rwv.total);
            jsonWriter.key("total");
            jsonWriter.value(project.rows.size());
        } else {
            FilteredRecords filteredRecords = engine.getFilteredRecords();
            RecordVisitor visitor = rwv;
            if (sortingJson != null) {
                SortingRecordVisitor srv = new SortingRecordVisitor(visitor);
                srv.initializeFromJSON(project, sortingJson);
                if (srv.hasCriteria()) {
                    visitor = srv;
                }
            }
            jsonWriter.key("mode");
            jsonWriter.value("record-based");
            jsonWriter.key("rows");
            jsonWriter.array();
            filteredRecords.accept(project, visitor);
            jsonWriter.endArray();
            jsonWriter.key("filtered");
            jsonWriter.value(rwv.total);
            jsonWriter.key("total");
            jsonWriter.value(project.recordModel.getRecordCount());
        }
        jsonWriter.key("start");
        jsonWriter.value(start);
        jsonWriter.key("limit");
        jsonWriter.value(limit);
        jsonWriter.key("pool");
        pool.write(jsonWriter, options);
        jsonWriter.endObject();
        if (callback != null) {
            writer.write(")");
        }
    } catch (Exception e) {
        respondException(response, e);
    }
}
Also used : JSONWriter(org.json.JSONWriter) SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) JSONException(org.json.JSONException) FilteredRecords(com.google.refine.browsing.FilteredRecords) Properties(java.util.Properties) RecordVisitor(com.google.refine.browsing.RecordVisitor) SortingRecordVisitor(com.google.refine.sorting.SortingRecordVisitor) FilteredRows(com.google.refine.browsing.FilteredRows) ServletException(javax.servlet.ServletException) JSONException(org.json.JSONException) IOException(java.io.IOException) Project(com.google.refine.model.Project) JSONObject(org.json.JSONObject) ImportingJob(com.google.refine.importing.ImportingJob) Pool(com.google.refine.util.Pool) RowVisitor(com.google.refine.browsing.RowVisitor) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor) Engine(com.google.refine.browsing.Engine) SortingRowVisitor(com.google.refine.sorting.SortingRowVisitor) PrintWriter(java.io.PrintWriter)

Example 2 with Pool

use of com.google.refine.util.Pool in project OpenRefine by OpenRefine.

the class ReconClearOneCellCommand method doPost.

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        Project project = getProject(request);
        int rowIndex = Integer.parseInt(request.getParameter("row"));
        int cellIndex = Integer.parseInt(request.getParameter("cell"));
        ClearOneCellProcess process = new ClearOneCellProcess(project, "Clear one cell's recon data", rowIndex, cellIndex);
        HistoryEntry historyEntry = project.processManager.queueProcess(process);
        if (historyEntry != null) {
            /*
                 * If the process is done, write back the cell's data so that the
                 * client side can update its UI right away.
                 */
            JSONWriter writer = new JSONWriter(response.getWriter());
            Pool pool = new Pool();
            Properties options = new Properties();
            options.put("pool", pool);
            writer.object();
            writer.key("code");
            writer.value("ok");
            writer.key("historyEntry");
            historyEntry.write(writer, options);
            writer.key("cell");
            process.newCell.write(writer, options);
            writer.key("pool");
            pool.write(writer, options);
            writer.endObject();
        } else {
            respond(response, "{ \"code\" : \"pending\" }");
        }
    } catch (Exception e) {
        respondException(response, e);
    }
}
Also used : JSONWriter(org.json.JSONWriter) Project(com.google.refine.model.Project) HistoryEntry(com.google.refine.history.HistoryEntry) Pool(com.google.refine.util.Pool) Properties(java.util.Properties) ServletException(javax.servlet.ServletException) IOException(java.io.IOException)

Example 3 with Pool

use of com.google.refine.util.Pool in project OpenRefine by OpenRefine.

the class ReconJudgeOneCellCommand method doPost.

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        Project project = getProject(request);
        int rowIndex = Integer.parseInt(request.getParameter("row"));
        int cellIndex = Integer.parseInt(request.getParameter("cell"));
        Judgment judgment = Recon.stringToJudgment(request.getParameter("judgment"));
        ReconCandidate match = null;
        String id = request.getParameter("id");
        if (id != null) {
            String scoreString = request.getParameter("score");
            match = new ReconCandidate(id, request.getParameter("name"), request.getParameter("types").split(","), scoreString != null ? Double.parseDouble(scoreString) : 100);
        }
        JudgeOneCellProcess process = new JudgeOneCellProcess(project, "Judge one cell's recon result", judgment, rowIndex, cellIndex, match, request.getParameter("identifierSpace"), request.getParameter("schemaSpace"));
        HistoryEntry historyEntry = project.processManager.queueProcess(process);
        if (historyEntry != null) {
            /*
                 * If the process is done, write back the cell's data so that the
                 * client side can update its UI right away.
                 */
            JSONWriter writer = new JSONWriter(response.getWriter());
            Pool pool = new Pool();
            Properties options = new Properties();
            options.put("pool", pool);
            writer.object();
            writer.key("code");
            writer.value("ok");
            writer.key("historyEntry");
            historyEntry.write(writer, options);
            writer.key("cell");
            process.newCell.write(writer, options);
            writer.key("pool");
            pool.write(writer, options);
            writer.endObject();
        } else {
            respond(response, "{ \"code\" : \"pending\" }");
        }
    } catch (Exception e) {
        respondException(response, e);
    }
}
Also used : JSONWriter(org.json.JSONWriter) Project(com.google.refine.model.Project) HistoryEntry(com.google.refine.history.HistoryEntry) Pool(com.google.refine.util.Pool) Properties(java.util.Properties) ReconCandidate(com.google.refine.model.ReconCandidate) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) Judgment(com.google.refine.model.Recon.Judgment)

Example 4 with Pool

use of com.google.refine.util.Pool in project OpenRefine by OpenRefine.

the class FileHistoryEntryManager method loadChange.

protected void loadChange(HistoryEntry historyEntry, File file) throws Exception {
    ZipFile zipFile = new ZipFile(file);
    try {
        Pool pool = new Pool();
        ZipEntry poolEntry = zipFile.getEntry("pool.txt");
        if (poolEntry != null) {
            pool.load(new InputStreamReader(zipFile.getInputStream(poolEntry)));
        }
        // else, it's a legacy project file
        historyEntry.setChange(History.readOneChange(zipFile.getInputStream(zipFile.getEntry("change.txt")), pool));
    } finally {
        zipFile.close();
    }
}
Also used : ZipFile(java.util.zip.ZipFile) InputStreamReader(java.io.InputStreamReader) ZipEntry(java.util.zip.ZipEntry) Pool(com.google.refine.util.Pool)

Example 5 with Pool

use of com.google.refine.util.Pool in project OpenRefine by OpenRefine.

the class ProjectUtilities method saveToFile.

protected static void saveToFile(Project project, File file) throws IOException {
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(file));
    try {
        Pool pool = new Pool();
        out.putNextEntry(new ZipEntry("data.txt"));
        try {
            project.saveToOutputStream(out, pool);
        } finally {
            out.closeEntry();
        }
        out.putNextEntry(new ZipEntry("pool.txt"));
        try {
            pool.save(out);
        } finally {
            out.closeEntry();
        }
    } finally {
        out.close();
    }
}
Also used : ZipOutputStream(java.util.zip.ZipOutputStream) FileOutputStream(java.io.FileOutputStream) ZipEntry(java.util.zip.ZipEntry) Pool(com.google.refine.util.Pool)

Aggregations

Pool (com.google.refine.util.Pool)10 JSONWriter (org.json.JSONWriter)5 Project (com.google.refine.model.Project)4 IOException (java.io.IOException)4 Properties (java.util.Properties)4 ZipEntry (java.util.zip.ZipEntry)4 ServletException (javax.servlet.ServletException)4 HistoryEntry (com.google.refine.history.HistoryEntry)3 FileOutputStream (java.io.FileOutputStream)2 ZipFile (java.util.zip.ZipFile)2 ZipOutputStream (java.util.zip.ZipOutputStream)2 JSONException (org.json.JSONException)2 Engine (com.google.refine.browsing.Engine)1 FilteredRecords (com.google.refine.browsing.FilteredRecords)1 FilteredRows (com.google.refine.browsing.FilteredRows)1 RecordVisitor (com.google.refine.browsing.RecordVisitor)1 RowVisitor (com.google.refine.browsing.RowVisitor)1 ImportingJob (com.google.refine.importing.ImportingJob)1 Recon (com.google.refine.model.Recon)1 Judgment (com.google.refine.model.Recon.Judgment)1