Added recon config to column model so we can use that to do automatic schema alignment.
Fixed bug in recon operation that also tried to reconcile blank cells. git-svn-id: http://google-refine.googlecode.com/svn/trunk@57 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
2eccab4c71
commit
51de415809
@ -16,6 +16,7 @@ public class Column implements Serializable, Jsonizable {
|
|||||||
final private int _cellIndex;
|
final private int _cellIndex;
|
||||||
final private String _originalHeaderLabel;
|
final private String _originalHeaderLabel;
|
||||||
private String _headerLabel;
|
private String _headerLabel;
|
||||||
|
private ReconConfig _reconConfig;
|
||||||
|
|
||||||
transient protected Map<String, Object> _precomputes;
|
transient protected Map<String, Object> _precomputes;
|
||||||
|
|
||||||
@ -40,6 +41,14 @@ public class Column implements Serializable, Jsonizable {
|
|||||||
return _headerLabel;
|
return _headerLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setReconConfig(ReconConfig config) {
|
||||||
|
this._reconConfig = config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReconConfig getReconConfig() {
|
||||||
|
return _reconConfig;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(JSONWriter writer, Properties options)
|
public void write(JSONWriter writer, Properties options)
|
||||||
throws JSONException {
|
throws JSONException {
|
||||||
@ -47,6 +56,10 @@ public class Column implements Serializable, Jsonizable {
|
|||||||
writer.object();
|
writer.object();
|
||||||
writer.key("cellIndex"); writer.value(getCellIndex());
|
writer.key("cellIndex"); writer.value(getCellIndex());
|
||||||
writer.key("headerLabel"); writer.value(getHeaderLabel());
|
writer.key("headerLabel"); writer.value(getHeaderLabel());
|
||||||
|
if (_reconConfig != null) {
|
||||||
|
writer.key("reconConfig");
|
||||||
|
_reconConfig.write(writer, options);
|
||||||
|
}
|
||||||
writer.endObject();
|
writer.endObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
28
src/main/java/com/metaweb/gridworks/model/ReconConfig.java
Normal file
28
src/main/java/com/metaweb/gridworks/model/ReconConfig.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package com.metaweb.gridworks.model;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONWriter;
|
||||||
|
|
||||||
|
import com.metaweb.gridworks.Jsonizable;
|
||||||
|
|
||||||
|
public class ReconConfig implements Serializable, Jsonizable {
|
||||||
|
private static final long serialVersionUID = -4831409797104437854L;
|
||||||
|
|
||||||
|
final public String typeID;
|
||||||
|
|
||||||
|
public ReconConfig(String typeID) {
|
||||||
|
this.typeID = typeID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(JSONWriter writer, Properties options)
|
||||||
|
throws JSONException {
|
||||||
|
|
||||||
|
writer.object();
|
||||||
|
writer.key("type"); writer.value(typeID);
|
||||||
|
writer.endObject();
|
||||||
|
}
|
||||||
|
}
|
@ -24,12 +24,15 @@ import org.json.JSONWriter;
|
|||||||
import com.metaweb.gridworks.browsing.Engine;
|
import com.metaweb.gridworks.browsing.Engine;
|
||||||
import com.metaweb.gridworks.browsing.FilteredRows;
|
import com.metaweb.gridworks.browsing.FilteredRows;
|
||||||
import com.metaweb.gridworks.browsing.RowVisitor;
|
import com.metaweb.gridworks.browsing.RowVisitor;
|
||||||
|
import com.metaweb.gridworks.expr.ExpressionUtils;
|
||||||
|
import com.metaweb.gridworks.history.Change;
|
||||||
import com.metaweb.gridworks.history.HistoryEntry;
|
import com.metaweb.gridworks.history.HistoryEntry;
|
||||||
import com.metaweb.gridworks.model.Cell;
|
import com.metaweb.gridworks.model.Cell;
|
||||||
import com.metaweb.gridworks.model.Column;
|
import com.metaweb.gridworks.model.Column;
|
||||||
import com.metaweb.gridworks.model.Project;
|
import com.metaweb.gridworks.model.Project;
|
||||||
import com.metaweb.gridworks.model.Recon;
|
import com.metaweb.gridworks.model.Recon;
|
||||||
import com.metaweb.gridworks.model.ReconCandidate;
|
import com.metaweb.gridworks.model.ReconCandidate;
|
||||||
|
import com.metaweb.gridworks.model.ReconConfig;
|
||||||
import com.metaweb.gridworks.model.Row;
|
import com.metaweb.gridworks.model.Row;
|
||||||
import com.metaweb.gridworks.model.changes.CellChange;
|
import com.metaweb.gridworks.model.changes.CellChange;
|
||||||
import com.metaweb.gridworks.model.changes.MassCellChange;
|
import com.metaweb.gridworks.model.changes.MassCellChange;
|
||||||
@ -75,7 +78,7 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
public boolean visit(Project project, int rowIndex, Row row, boolean contextual) {
|
public boolean visit(Project project, int rowIndex, Row row, boolean contextual) {
|
||||||
if (cellIndex < row.cells.size()) {
|
if (cellIndex < row.cells.size()) {
|
||||||
Cell cell = row.cells.get(cellIndex);
|
Cell cell = row.cells.get(cellIndex);
|
||||||
if (cell.value != null) {
|
if (cell != null && !ExpressionUtils.isBlank(cell.value)) {
|
||||||
entries.add(new ReconEntry(rowIndex, cell));
|
entries.add(new ReconEntry(rowIndex, cell));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -108,6 +111,41 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static protected class ReconChange extends MassCellChange {
|
||||||
|
private static final long serialVersionUID = 7048806528587330543L;
|
||||||
|
|
||||||
|
final protected ReconConfig _newReconConfig;
|
||||||
|
protected ReconConfig _oldReconConfig;
|
||||||
|
|
||||||
|
public ReconChange(
|
||||||
|
List<CellChange> cellChanges,
|
||||||
|
int commonCellIndex,
|
||||||
|
ReconConfig newReconConfig
|
||||||
|
) {
|
||||||
|
super(cellChanges, commonCellIndex, false);
|
||||||
|
_newReconConfig = newReconConfig;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void apply(Project project) {
|
||||||
|
synchronized (project) {
|
||||||
|
super.apply(project);
|
||||||
|
|
||||||
|
Column column = project.columnModel.getColumnByCellIndex(_commonCellIndex);
|
||||||
|
_oldReconConfig = column.getReconConfig();
|
||||||
|
column.setReconConfig(_newReconConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void revert(Project project) {
|
||||||
|
synchronized (project) {
|
||||||
|
super.revert(project);
|
||||||
|
|
||||||
|
project.columnModel.getColumnByCellIndex(_commonCellIndex).setReconConfig(_oldReconConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class ReconProcess extends LongRunningProcess implements Runnable {
|
public class ReconProcess extends LongRunningProcess implements Runnable {
|
||||||
final protected Project _project;
|
final protected Project _project;
|
||||||
final protected List<ReconEntry> _entries;
|
final protected List<ReconEntry> _entries;
|
||||||
@ -160,12 +198,15 @@ public class ReconOperation extends EngineDependentOperation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MassCellChange massCellChange = new MassCellChange(cellChanges, _cellIndex, false);
|
ReconConfig reconConfig = new ReconConfig(_typeID);
|
||||||
|
|
||||||
|
Change reconChange = new ReconChange(cellChanges, _cellIndex, reconConfig);
|
||||||
|
|
||||||
HistoryEntry historyEntry = new HistoryEntry(
|
HistoryEntry historyEntry = new HistoryEntry(
|
||||||
_project,
|
_project,
|
||||||
_description,
|
_description,
|
||||||
ReconOperation.this,
|
ReconOperation.this,
|
||||||
massCellChange
|
reconChange
|
||||||
);
|
);
|
||||||
|
|
||||||
_project.history.addEntry(historyEntry);
|
_project.history.addEntry(historyEntry);
|
||||||
|
Loading…
Reference in New Issue
Block a user