use of com.google.refine.model.Recon in project OpenRefine by OpenRefine.
the class MassReconChange method writeRecons.
protected void writeRecons(Writer writer, Properties options, Map<Long, Recon> recons, String key) throws IOException {
writer.write(key + "=");
writer.write(Integer.toString(recons.size()));
writer.write('\n');
for (Recon recon : recons.values()) {
Pool pool = (Pool) options.get("pool");
pool.poolReconCandidates(recon);
JSONWriter jsonWriter = new JSONWriter(writer);
try {
recon.write(jsonWriter, options);
} catch (JSONException e) {
e.printStackTrace();
}
writer.write("\n");
}
}
use of com.google.refine.model.Recon in project OpenRefine by OpenRefine.
the class Pool method load.
public void load(Reader reader) throws Exception {
LineNumberReader reader2 = new LineNumberReader(reader);
/* String version = */
reader2.readLine();
String line;
while ((line = reader2.readLine()) != null) {
int equal = line.indexOf('=');
CharSequence field = line.subSequence(0, equal);
String value = line.substring(equal + 1);
if ("reconCandidateCount".equals(field)) {
int count = Integer.parseInt(value);
for (int i = 0; i < count; i++) {
line = reader2.readLine();
if (line != null) {
ReconCandidate candidate = ReconCandidate.loadStreaming(line);
if (candidate != null) {
// pool for backward compatibility
pool(candidate);
}
}
}
} else if ("reconCount".equals(field)) {
int count = Integer.parseInt(value);
for (int i = 0; i < count; i++) {
line = reader2.readLine();
if (line != null) {
Recon recon = Recon.loadStreaming(line, this);
if (recon != null) {
pool(recon);
}
}
}
}
}
}
use of com.google.refine.model.Recon 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);
}
Aggregations