Fixed Issue 14: Limiting Freebase load to starred records
git-svn-id: http://google-refine.googlecode.com/svn/trunk@853 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
3ac3feb01f
commit
d7f7d50e16
@ -17,6 +17,8 @@ Fixes:
|
||||
- Issue 53: "Moving the cursor inside the Text Filter box by clicking"
|
||||
- Issue 58: "Meta facet"
|
||||
Supported by the function facetCount()
|
||||
- Issue 14: "Limiting Freebase load to starred records"
|
||||
We load whatever rows that are filtered through, not particularly starred rows.
|
||||
|
||||
Features:
|
||||
- Row/record sorting (Issue 32)
|
||||
|
@ -10,6 +10,8 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import com.metaweb.gridworks.browsing.Engine;
|
||||
import com.metaweb.gridworks.browsing.FilteredRows;
|
||||
import com.metaweb.gridworks.commands.Command;
|
||||
import com.metaweb.gridworks.model.Project;
|
||||
import com.metaweb.gridworks.protograph.Protograph;
|
||||
@ -25,6 +27,8 @@ public class PreviewProtographCommand extends Command {
|
||||
|
||||
try {
|
||||
Project project = getProject(request);
|
||||
Engine engine = getEngine(request, project);
|
||||
FilteredRows filteredRows = engine.getAllFilteredRows();
|
||||
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setHeader("Content-Type", "application/json");
|
||||
@ -40,7 +44,7 @@ public class PreviewProtographCommand extends Command {
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
TripleLoaderTransposedNodeFactory nodeFactory = new TripleLoaderTransposedNodeFactory(stringWriter);
|
||||
|
||||
Transposer.transpose(project, protograph, protograph.getRootNode(0), nodeFactory);
|
||||
Transposer.transpose(project, filteredRows, protograph, protograph.getRootNode(0), nodeFactory);
|
||||
nodeFactory.flush();
|
||||
|
||||
sb.append("\"tripleloader\" : ");
|
||||
@ -50,7 +54,7 @@ public class PreviewProtographCommand extends Command {
|
||||
{
|
||||
MqlreadLikeTransposedNodeFactory nodeFactory = new MqlreadLikeTransposedNodeFactory();
|
||||
|
||||
Transposer.transpose(project, protograph, protograph.getRootNode(0), nodeFactory);
|
||||
Transposer.transpose(project, filteredRows, protograph, protograph.getRootNode(0), nodeFactory);
|
||||
|
||||
JSONArray results = nodeFactory.getJSON();
|
||||
|
||||
|
@ -33,7 +33,7 @@ public class TripleloaderExporter implements Exporter {
|
||||
|
||||
TripleLoaderTransposedNodeFactory nodeFactory = new TripleLoaderTransposedNodeFactory(writer);
|
||||
|
||||
Transposer.transpose(project, protograph, protograph.getRootNode(0), nodeFactory, -1);
|
||||
Transposer.transpose(project, engine.getAllFilteredRows(), protograph, protograph.getRootNode(0), nodeFactory, -1);
|
||||
nodeFactory.flush();
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,8 @@ package com.metaweb.gridworks.protograph.transpose;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.metaweb.gridworks.browsing.FilteredRows;
|
||||
import com.metaweb.gridworks.browsing.RowVisitor;
|
||||
import com.metaweb.gridworks.expr.ExpressionUtils;
|
||||
import com.metaweb.gridworks.model.Cell;
|
||||
import com.metaweb.gridworks.model.Column;
|
||||
@ -23,15 +25,17 @@ import com.metaweb.gridworks.protograph.ValueNode;
|
||||
public class Transposer {
|
||||
static public void transpose(
|
||||
Project project,
|
||||
FilteredRows filteredRows,
|
||||
Protograph protograph,
|
||||
Node rootNode,
|
||||
TransposedNodeFactory nodeFactory
|
||||
) {
|
||||
transpose(project, protograph, rootNode, nodeFactory, 20);
|
||||
transpose(project, filteredRows, protograph, rootNode, nodeFactory, 20);
|
||||
}
|
||||
|
||||
static public void transpose(
|
||||
Project project,
|
||||
FilteredRows filteredRows,
|
||||
Protograph protograph,
|
||||
Node rootNode,
|
||||
TransposedNodeFactory nodeFactory,
|
||||
@ -39,12 +43,50 @@ public class Transposer {
|
||||
) {
|
||||
Context rootContext = new Context(rootNode, null, null, limit);
|
||||
|
||||
for (Row row : project.rows) {
|
||||
filteredRows.accept(project, new RowVisitor() {
|
||||
Context rootContext;
|
||||
Protograph protograph;
|
||||
Node rootNode;
|
||||
TransposedNodeFactory nodeFactory;
|
||||
|
||||
@Override
|
||||
public boolean visit(Project project, int rowIndex, Row row) {
|
||||
if (rootContext.limit <= 0 || rootContext.count < rootContext.limit) {
|
||||
descend(project, protograph, nodeFactory, row, rootNode, rootContext);
|
||||
}
|
||||
|
||||
if (rootContext.limit > 0 && rootContext.count > rootContext.limit) {
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(Project project) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void end(Project project) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public RowVisitor init(
|
||||
Context rootContext,
|
||||
Protograph protograph,
|
||||
Node rootNode,
|
||||
TransposedNodeFactory nodeFactory
|
||||
) {
|
||||
this.rootContext = rootContext;
|
||||
this.protograph = protograph;
|
||||
this.rootNode = rootNode;
|
||||
this.nodeFactory = nodeFactory;
|
||||
|
||||
return this;
|
||||
}
|
||||
}.init(rootContext, protograph, rootNode, nodeFactory));
|
||||
}
|
||||
|
||||
static protected void descend(
|
||||
|
@ -118,7 +118,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
||||
var show_triples = function(cont) {
|
||||
$.post(
|
||||
"/command/preview-protograph?" + $.param({ project: theProject.id }),
|
||||
{ protograph: JSON.stringify(theProject.protograph) },
|
||||
{ protograph: JSON.stringify(theProject.protograph), engine: JSON.stringify(ui.browsingEngine.getJSON()) },
|
||||
function(data) {
|
||||
if ("tripleloader" in data) {
|
||||
body.html(
|
||||
@ -192,6 +192,7 @@ FreebaseLoadingDialog.prototype._load = function() {
|
||||
{
|
||||
project: theProject.id,
|
||||
"graph" : (freebase) ? "otg" : "sandbox",
|
||||
"engine" : JSON.stringify(ui.browsingEngine.getJSON()),
|
||||
"source_name" : self._elmts.source_name.val(),
|
||||
"source_id" : self._elmts.source_id.val()
|
||||
},
|
||||
|
@ -257,7 +257,7 @@ SchemaAlignmentDialog.prototype.preview = function() {
|
||||
var protograph = this.getJSON();
|
||||
$.post(
|
||||
"/command/preview-protograph?" + $.param({ project: theProject.id }),
|
||||
{ protograph: JSON.stringify(protograph) },
|
||||
{ protograph: JSON.stringify(protograph), engine: JSON.stringify(ui.browsingEngine.getJSON()) },
|
||||
function(data) {
|
||||
if ("mqllike" in data) {
|
||||
$(self._previewPanes[0]).text(JSON.stringify(data.mqllike, null, 2));
|
||||
|
Loading…
Reference in New Issue
Block a user