Attempt at fixing issue 185. Will need someone else to verify.

git-svn-id: http://google-refine.googlecode.com/svn/trunk@1989 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
David Huynh 2011-01-20 22:49:36 +00:00
parent 44652a3ee2
commit d7b482be06
3 changed files with 10 additions and 49 deletions

View File

@ -273,13 +273,13 @@ public class Recon implements HasFields, Jsonizable {
writer.key("j"); writer.value(judgmentToString()); writer.key("j"); writer.value(judgmentToString());
if (match != null) { if (match != null) {
writer.key("m"); writer.key("m");
writer.value(match.id); match.write(writer, options);
} }
if (match == null || saveMode) { if (match == null || saveMode) {
writer.key("c"); writer.array(); writer.key("c"); writer.array();
if (candidates != null) { if (candidates != null) {
for (ReconCandidate c : candidates) { for (ReconCandidate c : candidates) {
writer.value(c.id); c.write(writer, options);
} }
} }
writer.endArray(); writer.endArray();
@ -344,11 +344,10 @@ public class Recon implements HasFields, Jsonizable {
recon.judgment = stringToJudgment(jp.getText()); recon.judgment = stringToJudgment(jp.getText());
} else if ("m".equals(fieldName)) { } else if ("m".equals(fieldName)) {
if (jp.getCurrentToken() == JsonToken.VALUE_STRING) { if (jp.getCurrentToken() == JsonToken.VALUE_STRING) {
// legacy case
String candidateID = jp.getText(); String candidateID = jp.getText();
recon.match = pool.getReconCandidate(candidateID); recon.match = pool.getReconCandidate(candidateID);
} else { } else {
// legacy
recon.match = ReconCandidate.loadStreaming(jp); recon.match = ReconCandidate.loadStreaming(jp);
} }
} else if ("f".equals(fieldName)) { } else if ("f".equals(fieldName)) {
@ -380,11 +379,10 @@ public class Recon implements HasFields, Jsonizable {
while (jp.nextToken() != JsonToken.END_ARRAY) { while (jp.nextToken() != JsonToken.END_ARRAY) {
if (jp.getCurrentToken() == JsonToken.VALUE_STRING) { if (jp.getCurrentToken() == JsonToken.VALUE_STRING) {
// legacy case
String candidateID = jp.getText(); String candidateID = jp.getText();
recon.addCandidate(pool.getReconCandidate(candidateID)); recon.addCandidate(pool.getReconCandidate(candidateID));
} else { } else {
// legacy
recon.addCandidate(ReconCandidate.loadStreaming(jp)); recon.addCandidate(ReconCandidate.loadStreaming(jp));
} }
} }

View File

@ -56,10 +56,12 @@ import com.google.refine.model.Recon;
import com.google.refine.model.ReconCandidate; import com.google.refine.model.ReconCandidate;
public class Pool implements Jsonizable { public class Pool implements Jsonizable {
final protected Map<String, ReconCandidate> candidates = new HashMap<String, ReconCandidate>();
final protected Map<String, Recon> recons = new HashMap<String, Recon>(); final protected Map<String, Recon> recons = new HashMap<String, Recon>();
public void pool(ReconCandidate candidate) { // This is only for backward compatibility while loading old project files
final protected Map<String, ReconCandidate> candidates = new HashMap<String, ReconCandidate>();
private void pool(ReconCandidate candidate) {
candidates.put(candidate.id, candidate); candidates.put(candidate.id, candidate);
} }
@ -103,20 +105,6 @@ public class Pool implements Jsonizable {
options.setProperty("mode", "save"); options.setProperty("mode", "save");
options.put("pool", this); options.put("pool", this);
Collection<ReconCandidate> candidates2 = candidates.values();
writer.write("reconCandidateCount=" + candidates2.size()); writer.write('\n');
for (ReconCandidate c : candidates2) {
JSONWriter jsonWriter = new JSONWriter(writer);
try {
c.write(jsonWriter, options);
writer.write('\n');
} catch (JSONException e) {
e.printStackTrace();
}
}
Collection<Recon> recons2 = recons.values(); Collection<Recon> recons2 = recons.values();
writer.write("reconCount=" + recons2.size()); writer.write('\n'); writer.write("reconCount=" + recons2.size()); writer.write('\n');
@ -141,6 +129,7 @@ public class Pool implements Jsonizable {
/* String version = */ reader2.readLine(); /* String version = */ reader2.readLine();
Map<String, ReconCandidate> candidates = new HashMap<String, ReconCandidate>();
String line; String line;
while ((line = reader2.readLine()) != null) { while ((line = reader2.readLine()) != null) {
int equal = line.indexOf('='); int equal = line.indexOf('=');
@ -155,6 +144,7 @@ public class Pool implements Jsonizable {
if (line != null) { if (line != null) {
ReconCandidate candidate = ReconCandidate.loadStreaming(line); ReconCandidate candidate = ReconCandidate.loadStreaming(line);
if (candidate != null) { if (candidate != null) {
// pool for backward compatibility
pool(candidate); pool(candidate);
} }
} }
@ -179,15 +169,6 @@ public class Pool implements Jsonizable {
throws JSONException { throws JSONException {
writer.object(); writer.object();
writer.key("reconCandidates");
writer.object();
for (Entry<String, ReconCandidate> entry : candidates.entrySet()) {
writer.key(entry.getKey());
entry.getValue().write(writer, options);
}
writer.endObject();
writer.key("recons"); writer.key("recons");
writer.object(); writer.object();
for (Entry<String, Recon> entry : recons.entrySet()) { for (Entry<String, Recon> entry : recons.entrySet()) {
@ -195,7 +176,6 @@ public class Pool implements Jsonizable {
entry.getValue().write(writer, options); entry.getValue().write(writer, options);
} }
writer.endObject(); writer.endObject();
writer.endObject(); writer.endObject();
} }
} }

View File

@ -384,22 +384,6 @@ Refine.columnNameToColumnIndex = function(columnName) {
return -1; return -1;
}; };
Refine.preparePool = function(pool) {
for (var id in pool.recons) {
if (pool.recons.hasOwnProperty(id)) {
var recon = pool.recons[id];
if (recon.m) {
recon.m = pool.reconCandidates[recon.m];
}
if (recon.c) {
for (var j = 0; j < recon.c.length; j++) {
recon.c[j] = pool.reconCandidates[recon.c[j]];
}
}
}
}
};
Refine.fetchRows = function(start, limit, onDone, sorting) { Refine.fetchRows = function(start, limit, onDone, sorting) {
var body = { var body = {
engine: JSON.stringify(ui.browsingEngine.getJSON()) engine: JSON.stringify(ui.browsingEngine.getJSON())
@ -415,7 +399,6 @@ Refine.fetchRows = function(start, limit, onDone, sorting) {
theProject.rowModel = data; theProject.rowModel = data;
// Un-pool objects // Un-pool objects
Refine.preparePool(data.pool);
for (var r = 0; r < data.rows.length; r++) { for (var r = 0; r < data.rows.length; r++) {
var row = data.rows[r]; var row = data.rows[r];
for (var c = 0; c < row.cells.length; c++) { for (var c = 0; c < row.cells.length; c++) {