Schema editing cleanup
This commit is contained in:
parent
6cb4386e64
commit
15ba7fbdde
@ -15,10 +15,15 @@ WarningsRenderer._renderEntity = function(entity) {
|
|||||||
fullLabel = entity.label + ' (' + id + ')';
|
fullLabel = entity.label + ' (' + id + ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var url = entity.iri;
|
||||||
|
if (!url && entity.value) {
|
||||||
|
url = 'http://www.wikidata.org/entity/'+entity.value.id;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_new) {
|
if (is_new) {
|
||||||
return '<span class="wb-preview-new-entity">'+fullLabel+'</span>';
|
return '<span class="wb-preview-new-entity">'+fullLabel+'</span>';
|
||||||
} else {
|
} else {
|
||||||
return '<a href="'+entity.iri+'" class="wb-preview-entity" target="_blank">'+fullLabel+'</a>';
|
return '<a href="'+url+'" class="wb-preview-entity" target="_blank">'+fullLabel+'</a>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@ public class EditInspector {
|
|||||||
// so that all newly created entities appear in the batch
|
// so that all newly created entities appear in the batch
|
||||||
WikibaseAPIUpdateScheduler scheduler = new WikibaseAPIUpdateScheduler();
|
WikibaseAPIUpdateScheduler scheduler = new WikibaseAPIUpdateScheduler();
|
||||||
editBatch = scheduler.schedule(editBatch);
|
editBatch = scheduler.schedule(editBatch);
|
||||||
|
|
||||||
Map<EntityIdValue, ItemUpdate> updates = ItemUpdate.groupBySubject(editBatch);
|
Map<EntityIdValue, ItemUpdate> updates = ItemUpdate.groupBySubject(editBatch);
|
||||||
List<ItemUpdate> mergedUpdates = updates.values().stream().collect(Collectors.toList());
|
List<ItemUpdate> mergedUpdates = updates.values().stream().collect(Collectors.toList());
|
||||||
for(EditScrutinizer scrutinizer : scrutinizers.values()) {
|
for(EditScrutinizer scrutinizer : scrutinizers.values()) {
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package org.openrefine.wikidata.schema;
|
package org.openrefine.wikidata.schema;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.openrefine.wikidata.qa.QAWarning;
|
import org.openrefine.wikidata.qa.QAWarning;
|
||||||
import org.openrefine.wikidata.qa.QAWarningStore;
|
import org.openrefine.wikidata.qa.QAWarningStore;
|
||||||
|
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
|
import com.google.refine.model.Column;
|
||||||
import com.google.refine.model.ColumnModel;
|
import com.google.refine.model.ColumnModel;
|
||||||
import com.google.refine.model.Row;
|
import com.google.refine.model.Row;
|
||||||
|
|
||||||
@ -11,7 +13,7 @@ import com.google.refine.model.Row;
|
|||||||
* A class holding all the necessary information about
|
* A class holding all the necessary information about
|
||||||
* the context in which a schema expression is evaluated.
|
* the context in which a schema expression is evaluated.
|
||||||
*
|
*
|
||||||
* @author antonin
|
* @author Antonin Delpeuch
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class ExpressionContext {
|
public class ExpressionContext {
|
||||||
@ -23,12 +25,17 @@ public class ExpressionContext {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds an expression context to evaluate a schema on a row
|
* Builds an expression context to evaluate a schema on a row
|
||||||
* @param baseIRI: the siteIRI of the schema
|
* @param baseIRI
|
||||||
* @param rowId: the id of the row currently visited
|
* the siteIRI of the schema
|
||||||
* @param row: the row itself
|
* @param rowId
|
||||||
* @param columnModel: lets us access cells by column name
|
* the id of the row currently visited
|
||||||
* @param warningStore: where to store the issues encountered when
|
* @param row
|
||||||
* evaluating (can be set to null if these issues should be ignored)
|
* the row itself
|
||||||
|
* @param columnModel
|
||||||
|
* lets us access cells by column name
|
||||||
|
* @param warningStore
|
||||||
|
* where to store the issues encountered when
|
||||||
|
* evaluating (can be set to null if these issues should be ignored)
|
||||||
*/
|
*/
|
||||||
public ExpressionContext(
|
public ExpressionContext(
|
||||||
String baseIRI,
|
String baseIRI,
|
||||||
@ -36,9 +43,12 @@ public class ExpressionContext {
|
|||||||
Row row,
|
Row row,
|
||||||
ColumnModel columnModel,
|
ColumnModel columnModel,
|
||||||
QAWarningStore warningStore) {
|
QAWarningStore warningStore) {
|
||||||
|
Validate.notNull(baseIRI);
|
||||||
this.baseIRI = baseIRI;
|
this.baseIRI = baseIRI;
|
||||||
this.rowId = rowId;
|
this.rowId = rowId;
|
||||||
|
Validate.notNull(row);
|
||||||
this.row = row;
|
this.row = row;
|
||||||
|
Validate.notNull(columnModel);
|
||||||
this.columnModel = columnModel;
|
this.columnModel = columnModel;
|
||||||
this.warningStore = warningStore;
|
this.warningStore = warningStore;
|
||||||
}
|
}
|
||||||
@ -46,14 +56,23 @@ public class ExpressionContext {
|
|||||||
public String getBaseIRI() {
|
public String getBaseIRI() {
|
||||||
return baseIRI;
|
return baseIRI;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
public int getCellIndexByName(String name) {
|
* Retrieves a cell in the current row, by column name.
|
||||||
return columnModel.getColumnByName(name).getCellIndex();
|
* If the column does not exist, null is returned.
|
||||||
}
|
*
|
||||||
|
* @param name
|
||||||
|
* the name of the column to retrieve the cell from
|
||||||
|
* @return
|
||||||
|
* the cell
|
||||||
|
*/
|
||||||
public Cell getCellByName(String name) {
|
public Cell getCellByName(String name) {
|
||||||
int idx = getCellIndexByName(name);
|
Column column = columnModel.getColumnByName(name);
|
||||||
return row.getCell(idx);
|
if (column != null) {
|
||||||
|
int idx = column.getCellIndex();
|
||||||
|
return row.getCell(idx);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getRowId() {
|
public int getRowId() {
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package org.openrefine.wikidata.schema;
|
package org.openrefine.wikidata.schema;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.jsoup.helper.Validate;
|
||||||
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
||||||
import org.openrefine.wikidata.updates.ItemUpdate;
|
import org.openrefine.wikidata.updates.ItemUpdate;
|
||||||
import org.openrefine.wikidata.updates.ItemUpdateBuilder;
|
import org.openrefine.wikidata.updates.ItemUpdateBuilder;
|
||||||
@ -34,8 +36,15 @@ public class WbItemDocumentExpr extends JacksonJsonizable implements WbExpressio
|
|||||||
@JsonProperty("subject") WbExpression<? extends ItemIdValue> subjectExpr,
|
@JsonProperty("subject") WbExpression<? extends ItemIdValue> subjectExpr,
|
||||||
@JsonProperty("nameDescs") List<WbNameDescExpr> nameDescExprs,
|
@JsonProperty("nameDescs") List<WbNameDescExpr> nameDescExprs,
|
||||||
@JsonProperty("statementGroups") List<WbStatementGroupExpr> statementGroupExprs) {
|
@JsonProperty("statementGroups") List<WbStatementGroupExpr> statementGroupExprs) {
|
||||||
|
Validate.notNull(subjectExpr);
|
||||||
this.subject = subjectExpr;
|
this.subject = subjectExpr;
|
||||||
|
if(nameDescExprs == null) {
|
||||||
|
nameDescExprs = Collections.emptyList();
|
||||||
|
}
|
||||||
this.nameDescs = nameDescExprs;
|
this.nameDescs = nameDescExprs;
|
||||||
|
if(statementGroupExprs == null) {
|
||||||
|
statementGroupExprs = Collections.emptyList();
|
||||||
|
}
|
||||||
this.statementGroups = statementGroupExprs;
|
this.statementGroups = statementGroupExprs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.openrefine.wikidata.schema;
|
package org.openrefine.wikidata.schema;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.openrefine.wikidata.qa.QAWarning;
|
import org.openrefine.wikidata.qa.QAWarning;
|
||||||
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
||||||
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
||||||
@ -19,7 +20,9 @@ public class WbMonolingualExpr implements WbExpression<MonolingualTextValue> {
|
|||||||
public WbMonolingualExpr(
|
public WbMonolingualExpr(
|
||||||
@JsonProperty("language") WbExpression<? extends String> languageExpr,
|
@JsonProperty("language") WbExpression<? extends String> languageExpr,
|
||||||
@JsonProperty("value") WbExpression<? extends StringValue> valueExpr) {
|
@JsonProperty("value") WbExpression<? extends StringValue> valueExpr) {
|
||||||
|
Validate.notNull(languageExpr);
|
||||||
this.languageExpr = languageExpr;
|
this.languageExpr = languageExpr;
|
||||||
|
Validate.notNull(valueExpr);
|
||||||
this.valueExpr = valueExpr;
|
this.valueExpr = valueExpr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.openrefine.wikidata.schema;
|
package org.openrefine.wikidata.schema;
|
||||||
|
|
||||||
|
import org.jsoup.helper.Validate;
|
||||||
import org.openrefine.wikidata.schema.entityvalues.SuggestedPropertyIdValue;
|
import org.openrefine.wikidata.schema.entityvalues.SuggestedPropertyIdValue;
|
||||||
import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue;
|
import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue;
|
||||||
|
|
||||||
@ -23,7 +24,9 @@ public class WbPropConstant implements WbExpression<PropertyIdValue> {
|
|||||||
@JsonProperty("pid") String pid,
|
@JsonProperty("pid") String pid,
|
||||||
@JsonProperty("label") String label,
|
@JsonProperty("label") String label,
|
||||||
@JsonProperty("datatype") String datatype) {
|
@JsonProperty("datatype") String datatype) {
|
||||||
|
Validate.notNull(pid);
|
||||||
this.pid = pid;
|
this.pid = pid;
|
||||||
|
Validate.notNull(label);
|
||||||
this.label = label;
|
this.label = label;
|
||||||
this.datatype = datatype;
|
this.datatype = datatype;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package org.openrefine.wikidata.schema;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
||||||
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
||||||
import org.wikidata.wdtk.datamodel.interfaces.Reference;
|
import org.wikidata.wdtk.datamodel.interfaces.Reference;
|
||||||
@ -28,6 +29,7 @@ public class WbReferenceExpr implements WbExpression<Reference> {
|
|||||||
@JsonCreator
|
@JsonCreator
|
||||||
public WbReferenceExpr(
|
public WbReferenceExpr(
|
||||||
@JsonProperty("snaks") List<WbSnakExpr> snakExprs) {
|
@JsonProperty("snaks") List<WbSnakExpr> snakExprs) {
|
||||||
|
Validate.notNull(snakExprs);
|
||||||
this.snakExprs = snakExprs;
|
this.snakExprs = snakExprs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.openrefine.wikidata.schema;
|
package org.openrefine.wikidata.schema;
|
||||||
|
|
||||||
|
import org.jsoup.helper.Validate;
|
||||||
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
import org.openrefine.wikidata.schema.exceptions.SkipSchemaExpressionException;
|
||||||
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
||||||
import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue;
|
import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue;
|
||||||
@ -28,7 +29,9 @@ public class WbSnakExpr implements WbExpression<Snak> {
|
|||||||
public WbSnakExpr(
|
public WbSnakExpr(
|
||||||
@JsonProperty("prop") WbExpression<? extends PropertyIdValue> propExpr,
|
@JsonProperty("prop") WbExpression<? extends PropertyIdValue> propExpr,
|
||||||
@JsonProperty("value") WbExpression<? extends Value> valueExpr) {
|
@JsonProperty("value") WbExpression<? extends Value> valueExpr) {
|
||||||
|
Validate.notNull(propExpr);
|
||||||
this.prop = propExpr;
|
this.prop = propExpr;
|
||||||
|
Validate.notNull(valueExpr);
|
||||||
this.value = valueExpr;
|
this.value = valueExpr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.openrefine.wikidata.schema;
|
package org.openrefine.wikidata.schema;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
import org.wikidata.wdtk.datamodel.helpers.Datamodel;
|
||||||
import org.wikidata.wdtk.datamodel.interfaces.StringValue;
|
import org.wikidata.wdtk.datamodel.interfaces.StringValue;
|
||||||
|
|
||||||
@ -13,6 +14,7 @@ public class WbStringConstant implements WbExpression<StringValue> {
|
|||||||
|
|
||||||
@JsonCreator
|
@JsonCreator
|
||||||
public WbStringConstant(@JsonProperty("value") String value) {
|
public WbStringConstant(@JsonProperty("value") String value) {
|
||||||
|
Validate.notNull(value);
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.wikidata.wdtk.datamodel.helpers.Hash;
|
import org.wikidata.wdtk.datamodel.helpers.Hash;
|
||||||
|
import org.wikidata.wdtk.datamodel.helpers.ToString;
|
||||||
import org.wikidata.wdtk.datamodel.interfaces.EntityIdValue;
|
import org.wikidata.wdtk.datamodel.interfaces.EntityIdValue;
|
||||||
import org.wikidata.wdtk.datamodel.interfaces.ValueVisitor;
|
import org.wikidata.wdtk.datamodel.interfaces.ValueVisitor;
|
||||||
|
|
||||||
@ -70,4 +71,5 @@ public abstract class SuggestedEntityIdValue implements PrefetchedEntityIdValue
|
|||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Hash.hashCode(this);
|
return Hash.hashCode(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.openrefine.wikidata.schema.entityvalues;
|
package org.openrefine.wikidata.schema.entityvalues;
|
||||||
|
|
||||||
|
import org.wikidata.wdtk.datamodel.helpers.ToString;
|
||||||
import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue;
|
import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue;
|
||||||
|
|
||||||
public class SuggestedPropertyIdValue extends SuggestedEntityIdValue implements PropertyIdValue {
|
public class SuggestedPropertyIdValue extends SuggestedEntityIdValue implements PropertyIdValue {
|
||||||
@ -13,4 +14,8 @@ public class SuggestedPropertyIdValue extends SuggestedEntityIdValue implements
|
|||||||
return ET_PROPERTY;
|
return ET_PROPERTY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "suggested "+ToString.toString(this)+" (\""+getLabel()+"\")";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
package org.openrefine.wikidata.schema;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.refine.model.Project;
|
||||||
|
import com.google.refine.tests.RefineTest;
|
||||||
|
|
||||||
|
public class ExpressionContextTest extends RefineTest {
|
||||||
|
|
||||||
|
Project project = null;
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
public void setUp() {
|
||||||
|
project = createCSVProject("a,b\nc\nd,e");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetCellByColumnName() {
|
||||||
|
ExpressionContext ctxt = new ExpressionContext("foo:", 1, project.rows.get(1), project.columnModel, null);
|
||||||
|
assertEquals("e", ctxt.getCellByName("b").value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNonExistentColumn() {
|
||||||
|
ExpressionContext ctxt = new ExpressionContext("foo:", 1, project.rows.get(1), project.columnModel, null);
|
||||||
|
assertNull(ctxt.getCellByName("auie"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetRowId() {
|
||||||
|
ExpressionContext ctxt = new ExpressionContext("foo:", 1, project.rows.get(1), project.columnModel, null);
|
||||||
|
assertEquals(1, ctxt.getRowId());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user