Search in sources :

Example 6 with CellChange

use of com.google.refine.model.changes.CellChange in project OpenRefine by OpenRefine.

the class EngineDependentMassCellOperation method createHistoryEntry.

@Override
protected HistoryEntry createHistoryEntry(Project project, long historyEntryID) throws Exception {
    Engine engine = createEngine(project);
    Column column = project.columnModel.getColumnByName(_columnName);
    if (column == null) {
        throw new Exception("No column named " + _columnName);
    }
    List<CellChange> cellChanges = new ArrayList<CellChange>(project.rows.size());
    FilteredRows filteredRows = engine.getAllFilteredRows();
    try {
        filteredRows.accept(project, createRowVisitor(project, cellChanges, historyEntryID));
    } catch (Exception e) {
        e.printStackTrace();
    }
    String description = createDescription(column, cellChanges);
    return new HistoryEntry(historyEntryID, project, description, this, createChange(project, column, cellChanges));
}
Also used : Column(com.google.refine.model.Column) CellChange(com.google.refine.model.changes.CellChange) MassCellChange(com.google.refine.model.changes.MassCellChange) ArrayList(java.util.ArrayList) HistoryEntry(com.google.refine.history.HistoryEntry) FilteredRows(com.google.refine.browsing.FilteredRows) Engine(com.google.refine.browsing.Engine)

Example 7 with CellChange

use of com.google.refine.model.changes.CellChange in project OpenRefine by OpenRefine.

the class ReconJudgeSimilarCellsOperation method createRowVisitor.

@Override
protected RowVisitor createRowVisitor(Project project, List<CellChange> cellChanges, long historyEntryID) throws Exception {
    Column column = project.columnModel.getColumnByName(_columnName);
    return new RowVisitor() {

        int _cellIndex;

        List<CellChange> _cellChanges;

        Recon _sharedNewRecon = null;

        Map<Long, Recon> _dupReconMap = new HashMap<Long, Recon>();

        long _historyEntryID;

        public RowVisitor init(int cellIndex, List<CellChange> cellChanges, long historyEntryID) {
            _cellIndex = cellIndex;
            _cellChanges = cellChanges;
            _historyEntryID = historyEntryID;
            return this;
        }

        @Override
        public void start(Project project) {
        // nothing to do
        }

        @Override
        public void end(Project project) {
        // nothing to do
        }

        @Override
        public boolean visit(Project project, int rowIndex, Row row) {
            Cell cell = row.getCell(_cellIndex);
            if (cell != null && ExpressionUtils.isNonBlankData(cell.value)) {
                String value = cell.value instanceof String ? ((String) cell.value) : cell.value.toString();
                if (_similarValue.equals(value)) {
                    Recon recon = null;
                    if (_judgment == Judgment.New && _shareNewTopics) {
                        if (_sharedNewRecon == null) {
                            _sharedNewRecon = new Recon(_historyEntryID, null, null);
                            _sharedNewRecon.judgment = Judgment.New;
                            _sharedNewRecon.judgmentBatchSize = 0;
                            _sharedNewRecon.judgmentAction = "similar";
                        }
                        _sharedNewRecon.judgmentBatchSize++;
                        recon = _sharedNewRecon;
                    } else {
                        if (_dupReconMap.containsKey(cell.recon.id)) {
                            recon = _dupReconMap.get(cell.recon.id);
                            recon.judgmentBatchSize++;
                        } else {
                            recon = cell.recon.dup(_historyEntryID);
                            recon.judgmentBatchSize = 1;
                            recon.matchRank = -1;
                            recon.judgmentAction = "similar";
                            if (_judgment == Judgment.Matched) {
                                recon.judgment = Recon.Judgment.Matched;
                                recon.match = _match;
                                if (recon.candidates != null) {
                                    for (int m = 0; m < recon.candidates.size(); m++) {
                                        if (recon.candidates.get(m).id.equals(_match.id)) {
                                            recon.matchRank = m;
                                            break;
                                        }
                                    }
                                }
                            } else if (_judgment == Judgment.New) {
                                recon.judgment = Recon.Judgment.New;
                                recon.match = null;
                            } else if (_judgment == Judgment.None) {
                                recon.judgment = Recon.Judgment.None;
                                recon.match = null;
                            }
                            _dupReconMap.put(cell.recon.id, recon);
                        }
                    }
                    Cell newCell = new Cell(cell.value, recon);
                    CellChange cellChange = new CellChange(rowIndex, _cellIndex, cell, newCell);
                    _cellChanges.add(cellChange);
                }
            }
            return false;
        }
    }.init(column.getCellIndex(), cellChanges, historyEntryID);
}
Also used : HashMap(java.util.HashMap) CellChange(com.google.refine.model.changes.CellChange) Project(com.google.refine.model.Project) Column(com.google.refine.model.Column) Row(com.google.refine.model.Row) RowVisitor(com.google.refine.browsing.RowVisitor) Recon(com.google.refine.model.Recon) Cell(com.google.refine.model.Cell)

Aggregations

Column (com.google.refine.model.Column)7 CellChange (com.google.refine.model.changes.CellChange)7 RowVisitor (com.google.refine.browsing.RowVisitor)6 Cell (com.google.refine.model.Cell)6 Project (com.google.refine.model.Project)6 Row (com.google.refine.model.Row)6 JSONObject (org.json.JSONObject)4 HashMap (java.util.HashMap)3 Engine (com.google.refine.browsing.Engine)2 FilteredRows (com.google.refine.browsing.FilteredRows)2 Evaluable (com.google.refine.expr.Evaluable)2 HistoryEntry (com.google.refine.history.HistoryEntry)2 Recon (com.google.refine.model.Recon)2 Serializable (java.io.Serializable)2 ArrayList (java.util.ArrayList)2 Properties (java.util.Properties)2 WrappedCell (com.google.refine.expr.WrappedCell)1 Judgment (com.google.refine.model.Recon.Judgment)1 MassCellChange (com.google.refine.model.changes.MassCellChange)1 MassChange (com.google.refine.model.changes.MassChange)1