Also let user decide what to do on expression evaluation error when creating a new column.
git-svn-id: http://google-refine.googlecode.com/svn/trunk@182 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
c07431fb88
commit
eaef7b2394
@ -8,6 +8,7 @@ import com.metaweb.gridworks.commands.EngineDependentCommand;
|
||||
import com.metaweb.gridworks.model.AbstractOperation;
|
||||
import com.metaweb.gridworks.model.Project;
|
||||
import com.metaweb.gridworks.operations.ColumnAdditionOperation;
|
||||
import com.metaweb.gridworks.operations.TextTransformOperation;
|
||||
|
||||
public class AddColumnCommand extends EngineDependentCommand {
|
||||
@Override
|
||||
@ -18,11 +19,13 @@ public class AddColumnCommand extends EngineDependentCommand {
|
||||
String expression = request.getParameter("expression");
|
||||
String headerLabel = request.getParameter("headerLabel");
|
||||
int columnInsertIndex = Integer.parseInt(request.getParameter("columnInsertIndex"));
|
||||
String onError = request.getParameter("onError");
|
||||
|
||||
return new ColumnAdditionOperation(
|
||||
engineConfig,
|
||||
baseColumnName,
|
||||
expression,
|
||||
TextTransformOperation.stringToOnError(onError),
|
||||
headerLabel,
|
||||
columnInsertIndex
|
||||
);
|
||||
|
@ -29,6 +29,7 @@ public class ColumnAdditionOperation extends EngineDependentOperation {
|
||||
|
||||
final protected String _baseColumnName;
|
||||
final protected String _expression;
|
||||
final protected OnError _onError;
|
||||
|
||||
final protected String _headerLabel;
|
||||
final protected int _columnInsertIndex;
|
||||
@ -40,6 +41,7 @@ public class ColumnAdditionOperation extends EngineDependentOperation {
|
||||
engineConfig,
|
||||
obj.getString("baseColumnName"),
|
||||
obj.getString("expression"),
|
||||
TextTransformOperation.stringToOnError(obj.getString("onError")),
|
||||
obj.getString("headerLabel"),
|
||||
obj.getInt("columnInsertIndex")
|
||||
);
|
||||
@ -49,6 +51,7 @@ public class ColumnAdditionOperation extends EngineDependentOperation {
|
||||
JSONObject engineConfig,
|
||||
String baseColumnName,
|
||||
String expression,
|
||||
OnError onError,
|
||||
String headerLabel,
|
||||
int columnInsertIndex
|
||||
) {
|
||||
@ -56,6 +59,7 @@ public class ColumnAdditionOperation extends EngineDependentOperation {
|
||||
|
||||
_baseColumnName = baseColumnName;
|
||||
_expression = expression;
|
||||
_onError = onError;
|
||||
|
||||
_headerLabel = headerLabel;
|
||||
_columnInsertIndex = columnInsertIndex;
|
||||
@ -72,6 +76,7 @@ public class ColumnAdditionOperation extends EngineDependentOperation {
|
||||
writer.key("columnInsertIndex"); writer.value(_columnInsertIndex);
|
||||
writer.key("baseColumnName"); writer.value(_baseColumnName);
|
||||
writer.key("expression"); writer.value(_expression);
|
||||
writer.key("onError"); writer.value(TextTransformOperation.onErrorToString(_onError));
|
||||
writer.endObject();
|
||||
}
|
||||
|
||||
@ -136,7 +141,15 @@ public class ColumnAdditionOperation extends EngineDependentOperation {
|
||||
ExpressionUtils.bind(bindings, row, rowIndex, cell);
|
||||
|
||||
Object v = eval.evaluate(bindings);
|
||||
if (ExpressionUtils.isNonBlankData(v)) {
|
||||
if (ExpressionUtils.isError(v)) {
|
||||
if (_onError == OnError.SetToBlank) {
|
||||
return false;
|
||||
} else if (_onError == OnError.KeepOriginal) {
|
||||
v = cell != null ? cell.value : null;
|
||||
}
|
||||
}
|
||||
|
||||
if (v != null) {
|
||||
Cell newCell = new Cell(v, null);
|
||||
|
||||
cellsAtRows.add(new CellAtRow(rowIndex, newCell));
|
||||
|
10
src/main/java/com/metaweb/gridworks/operations/OnError.java
Normal file
10
src/main/java/com/metaweb/gridworks/operations/OnError.java
Normal file
@ -0,0 +1,10 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package com.metaweb.gridworks.operations;
|
||||
|
||||
public enum OnError {
|
||||
KeepOriginal,
|
||||
SetToBlank,
|
||||
StoreError
|
||||
}
|
@ -21,12 +21,6 @@ import com.metaweb.gridworks.model.changes.CellChange;
|
||||
public class TextTransformOperation extends EngineDependentMassCellOperation {
|
||||
private static final long serialVersionUID = -7698202759999537298L;
|
||||
|
||||
static public enum OnError {
|
||||
KeepOriginal,
|
||||
SetToBlank,
|
||||
StoreError
|
||||
}
|
||||
|
||||
final protected String _expression;
|
||||
final protected OnError _onError;
|
||||
final protected boolean _repeat;
|
||||
|
@ -622,6 +622,16 @@ DataTableColumnHeaderUI.prototype._doAddColumn = function(initialExpression) {
|
||||
'<input bind="columnNameInput" size="40" />' +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td width="1%" style="white-space: pre;">' +
|
||||
'On error' +
|
||||
'</td>' +
|
||||
'<td>' +
|
||||
'<input type="radio" name="create-column-dialog-onerror-choice" value="set-to-blank" checked /> set to blank ' +
|
||||
'<input type="radio" name="create-column-dialog-onerror-choice" value="store-error" /> store error ' +
|
||||
'<input type="radio" name="create-column-dialog-onerror-choice" value="keep-original" /> keep original' +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td colspan="2">' + ExpressionPreviewDialog.generateWidgetHtml() + '</td>' +
|
||||
'</tr>' +
|
||||
@ -653,7 +663,8 @@ DataTableColumnHeaderUI.prototype._doAddColumn = function(initialExpression) {
|
||||
baseColumnName: self._column.headerLabel,
|
||||
expression: previewWidget.getExpression(true),
|
||||
headerLabel: columnName,
|
||||
columnInsertIndex: self._columnIndex + 1
|
||||
columnInsertIndex: self._columnIndex + 1,
|
||||
onError: $('input[name="create-column-dialog-onerror-choice"]:checked')[0].value
|
||||
},
|
||||
null,
|
||||
{ modelsChanged: true }
|
||||
|
Loading…
Reference in New Issue
Block a user