Updated Replace By Expression

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-expression-widget@100143 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2014-09-23 16:37:02 +00:00
parent 056dab337f
commit b4158cf9a1
9 changed files with 192 additions and 47 deletions

View File

@ -323,6 +323,9 @@ public class ColumnExpressionPanel extends FramedPanel {
protected void applyRule() {
C_Expression exp = conditionWidget.getExpression();
if(exp==null){
return;
}
switch (type) {
case ColumnRule:
parentRuleDialog.setExpression(exp);

View File

@ -13,6 +13,7 @@ import org.gcube.portlets.user.td.expressionwidget.client.resources.ExpressionRe
import org.gcube.portlets.user.td.expressionwidget.shared.model.OperatorTypeMap;
import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
import org.gcube.portlets.user.td.widgetcommonevent.shared.expression.C_Expression;
import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnDataType;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
@ -512,7 +513,7 @@ public class ConditionWidget extends SimpleContainer {
.getItemByItemId(itemIdCombo);
Log.debug("combo: " + comboOp.getCurrentValue().toString());
if (column.getDataTypeName().compareTo("Date") == 0) {
if (column.getDataTypeName().compareTo(ColumnDataType.Date.toString()) == 0) {
firstArgDate = (DateField) horiz
.getItemByItemId(itemIdFirstArgDate);
secondArgDate = (DateField) horiz
@ -531,7 +532,8 @@ public class ConditionWidget extends SimpleContainer {
firstArg = (TextField) horiz.getItemByItemId(itemIdFirstArg);
secondArg = (TextField) horiz.getItemByItemId(itemIdSecondArg);
Log.debug("argLeft: " + firstArg.getCurrentValue() + " argRight: " + secondArg.getCurrentValue());
expression = mapOp.map(column, comboOp.getCurrentValue()
.getOperatorType(),
firstArg == null ? null : firstArg.getCurrentValue(),
@ -586,6 +588,7 @@ public class ConditionWidget extends SimpleContainer {
return exp;
}
public String getReadableExpression() {
return readableExpression;
}

View File

@ -1,40 +1,40 @@
<!-- file: ./HelpReplaceByExp.html -->
<div>
<div class='HelpReplaceRegexClear'>
<div class="HelpReplaceRegexClear">
<h2>Replace Column By Expression</h2>
</div>
<div class='HelpReplaceRegexClear'>
<div class="HelpReplaceRegexClear">
<h3>Basic Example 1</h3>
<p class='HelpReplaceRegexClear'>
<div class="{style.dataStyle}"></div>
<!-- <img class='HelpReplaceRegexImg' src='Data.png' width="200" height="155" alt=""> -->
<div class=""></div>
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="Data.png" width="200" height="155" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="SimpleConcat.png" width="705" height="484" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="SimpleConcat.png" width="705" height="484" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="SimpleConcatResultData.png" width="203" height="158" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="SimpleConcatResultData.png" width="203" height="158" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="SimpleReplaceMatchingRegex.png" width="707" height="480" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="SimpleReplaceMatchingRegex.png" width="707" height="480" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="SimpleReplaceMatchingRegexResultData.png" width="204" height="155" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="SimpleReplaceMatchingRegexResultData.png" width="204" height="155" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="SimpleSubstringByIndex.png" width="709" height="484" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="SimpleSubstringByIndex.png" width="709" height="484" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="SimpleSubstringByIndexResultData.png" width="206" height="155" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="SimpleSubstringByIndexResultData.png" width="206" height="155" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="Simple2Concat.png" width="712" height="484" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="Simple2Concat.png" width="712" height="484" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="Simple2ConcatResultData.png" width="236" height="159" alt="">
<p class="HelpReplaceRegexClear">
<img class="HelpReplaceRegexImg" src="Simple2ConcatResultData.png" width="236" height="159" alt="">
</p>
</div>
<div class='HelpReplaceRegexClear'>
<div class="HelpReplaceRegexClear">
<h3>Regular Expression</h3>
<p>
<a href="http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP">POSIX Regular Expressions Reference</a>

View File

@ -6,5 +6,9 @@
.HelpReplaceRegexClear {
clear: both;
}
.DataStyle {
}

View File

@ -50,7 +50,8 @@ public class HelpReplaceColumnByExpression {
}
public HelpReplaceColumnByExpression() {
this.style = HelpReplaceByExpResources.INSTANCE.style();
HelpReplaceByExpResources resource=HelpReplaceByExpResources.INSTANCE;
this.style = resource.style();
this.style.ensureInjected();
this.template = GWT.create(HelpReplaceByExpTemplate.class);
@ -58,16 +59,15 @@ public class HelpReplaceColumnByExpression {
public void render(SafeHtmlBuilder sb) {
sb.append(template.render(style));
XElement parent=XDOM.create(sb.toSafeHtml());
XElement element = parent.selectNode("." + style.getDataStyle());
Image image = new Image(HelpReplaceByExpResources.INSTANCE.data());
Element img = image.getElement();
element.appendChild(img);
}
protected void renderImg() {
}
}

View File

@ -38,7 +38,6 @@ public class HelpReplaceColumnByExpressionPanel extends FramedPanel {
protected HelpReplaceColumnByExpressionDialog parent;
private TextButton btnClose;
public HelpReplaceColumnByExpressionPanel(
HelpReplaceColumnByExpressionDialog parent, EventBus eventBus) {
@ -63,27 +62,35 @@ public class HelpReplaceColumnByExpressionPanel extends FramedPanel {
VerticalLayoutContainer basicLayout = new VerticalLayoutContainer();
basicLayout.setAdjustForScroll(true);
basicLayout.setScrollMode(ScrollMode.AUTO);
//
SimpleContainer helpContent=new SimpleContainer();
SimpleContainer helpContent = new SimpleContainer();
helpContent.setWidth(HELP_CONTENT_WIDTH);
helpContent.setHeight(HELP_CONTENT_HEIGHT);
VerticalLayoutContainer helpContentLayout=new VerticalLayoutContainer();
VerticalLayoutContainer helpContentLayout = new VerticalLayoutContainer();
helpContent.add(helpContentLayout);
SafeHtmlBuilder safeHelp=new SafeHtmlBuilder();
HelpReplaceColumnByExpression helpR=new HelpReplaceColumnByExpression();
helpR.render(safeHelp);
HTML htmlHelp=new HTML();
SafeHtmlBuilder safeHelp = new SafeHtmlBuilder();
HelpReplaceColumnByExpression helpR;
try {
helpR = new HelpReplaceColumnByExpression();
helpR.render(safeHelp);
} catch (Throwable e) {
Log.error("Error in Help:" + e.getLocalizedMessage());
e.printStackTrace();
return;
}
HTML htmlHelp = new HTML();
htmlHelp.setHTML(safeHelp.toSafeHtml());
helpContentLayout.add(htmlHelp);
//
HBoxLayoutContainer flowButton = new HBoxLayoutContainer();
flowButton.setHBoxLayoutAlign(HBoxLayoutAlign.MIDDLE);
flowButton.setPack(BoxLayoutPack.CENTER);
btnClose = new TextButton("Close");
btnClose.setIcon(ExpressionResources.INSTANCE.close());
btnClose.setIconAlign(IconAlign.RIGHT);
@ -98,16 +105,15 @@ public class HelpReplaceColumnByExpressionPanel extends FramedPanel {
flowButton.add(btnClose, new BoxLayoutData(new Margins(2, 4, 2, 4)));
// Add to basic layout
basicLayout.add(helpContent, new VerticalLayoutData(-1, -1, new Margins(
1)));
basicLayout.add(helpContent, new VerticalLayoutData(-1, -1,
new Margins(1)));
basicLayout.add(flowButton, new VerticalLayoutData(-1, 36, new Margins(
5, 2, 5, 2)));
add(basicLayout);
}
protected void close() {
parent.close();
}

View File

@ -0,0 +1,29 @@
package org.gcube.portlets.user.td.expressionwidget.shared.exception;
public class OperatorTypeMapException extends Exception {
private static final long serialVersionUID = -9066034060104406559L;
/**
*
*/
public OperatorTypeMapException() {
super();
}
/**
* @param message
*/
public OperatorTypeMapException(String message) {
super(message);
}
public OperatorTypeMapException(String message,Throwable t) {
super(message,t);
}
}

View File

@ -86,6 +86,11 @@ public class OperatorTypeMap {
case ANY:
break;
case BEGINS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextBeginsWith(placeHolder, new TD_Value(dataType,
firstArg));
readableExpression = "Begins(" + readablePlaceHolder + ", "
@ -100,6 +105,11 @@ public class OperatorTypeMap {
+ firstArg + ", " + secondArg + "))";
break;
case CONTAINS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
fArg = new TD_Value(dataType, firstArg);
exp = new C_TextContains(placeHolder, fArg);
readableExpression = "Contains(" + readablePlaceHolder + ", "
@ -108,12 +118,22 @@ public class OperatorTypeMap {
case DIVISION:
break;
case ENDS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextEndsWith(placeHolder, new TD_Value(dataType,
firstArg));
readableExpression = "TextEndsWith(" + readablePlaceHolder + ","
+ firstArg + ")";
break;
case EQUALS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_Equals(placeHolder, new TD_Value(dataType, firstArg));
readableExpression = "Equals(" + readablePlaceHolder + ","
+ firstArg + ")";
@ -157,6 +177,11 @@ public class OperatorTypeMap {
case LIKE:
break;
case MATCH_REGEX:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextMatchSQLRegexp(placeHolder, new TD_Value(dataType,
firstArg));
readableExpression = "TextMatchSQLRegexp(" + readablePlaceHolder
@ -169,6 +194,11 @@ public class OperatorTypeMap {
case NOT:
break;
case NOT_BEGINS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextBeginsWith(placeHolder, new TD_Value(dataType,
firstArg));
exp = new C_Not(exp);
@ -185,6 +215,11 @@ public class OperatorTypeMap {
+ ", Range(" + firstArg + ", " + secondArg + ")))";
break;
case NOT_CONTAINS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
fArg = new TD_Value(dataType, firstArg);
exp = new C_TextContains(placeHolder, fArg);
exp = new C_Not(exp);
@ -192,6 +227,11 @@ public class OperatorTypeMap {
+ firstArg + "))";
break;
case NOT_ENDS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextEndsWith(placeHolder, new TD_Value(dataType,
firstArg));
exp = new C_Not(exp);
@ -199,6 +239,11 @@ public class OperatorTypeMap {
+ "," + firstArg + "))";
break;
case NOT_EQUALS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_NotEquals(placeHolder, new TD_Value(dataType, firstArg));
readableExpression = "NotEquals(" + readablePlaceHolder + ","
+ firstArg + ")";
@ -219,6 +264,11 @@ public class OperatorTypeMap {
case NOT_LIKE:
break;
case NOT_MATCH_REGEX:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextMatchSQLRegexp(placeHolder, new TD_Value(dataType,
firstArg));
exp = new C_Not(exp);
@ -268,6 +318,11 @@ public class OperatorTypeMap {
case ANY:
break;
case BEGINS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextBeginsWith(columnReference, new TD_Value(dataType,
firstArg));
readableExpression = "TextBeginsWith(" + readableColumnReference
@ -282,6 +337,11 @@ public class OperatorTypeMap {
+ ", Range(" + firstArg + ", " + secondArg + "))";
break;
case CONTAINS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
fArg = new TD_Value(dataType, firstArg);
exp = new C_TextContains(columnReference, fArg);
readableExpression = "Contains(" + columnReference + ", "
@ -290,12 +350,22 @@ public class OperatorTypeMap {
case DIVISION:
break;
case ENDS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextEndsWith(columnReference, new TD_Value(dataType,
firstArg));
readableExpression = "TextEndsWith(" + readableColumnReference
+ ", " + firstArg + ")";
break;
case EQUALS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_Equals(columnReference,
new TD_Value(dataType, firstArg));
readableExpression = "Equals(" + readableColumnReference + ", "
@ -341,6 +411,11 @@ public class OperatorTypeMap {
case LIKE:
break;
case MATCH_REGEX:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextMatchSQLRegexp(columnReference, new TD_Value(
dataType, firstArg));
readableExpression = "TextMatchSQLRegexp("
@ -353,6 +428,11 @@ public class OperatorTypeMap {
case NOT:
break;
case NOT_BEGINS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextBeginsWith(columnReference, new TD_Value(dataType,
firstArg));
exp = new C_Not(exp);
@ -369,6 +449,11 @@ public class OperatorTypeMap {
+ ", Range(" + firstArg + ", " + secondArg + ")))";
break;
case NOT_CONTAINS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
fArg = new TD_Value(dataType, firstArg);
exp = new C_TextContains(columnReference, fArg);
exp = new C_Not(exp);
@ -376,6 +461,11 @@ public class OperatorTypeMap {
+ firstArg + "))";
break;
case NOT_ENDS_WITH:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextEndsWith(columnReference, new TD_Value(dataType,
firstArg));
exp = new C_Not(exp);
@ -383,6 +473,11 @@ public class OperatorTypeMap {
+ "," + firstArg + "))";
break;
case NOT_EQUALS:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_NotEquals(columnReference, new TD_Value(dataType,
firstArg));
readableExpression = "NotEquals(" + readableColumnReference + ","
@ -405,6 +500,11 @@ public class OperatorTypeMap {
case NOT_LIKE:
break;
case NOT_MATCH_REGEX:
if(column.getDataTypeName().compareTo(ColumnDataType.Text.toString())==0){
if(firstArg==null){
firstArg="";
}
}
exp = new C_TextMatchSQLRegexp(columnReference, new TD_Value(
dataType, firstArg));
exp = new C_Not(exp);

View File

@ -5,8 +5,8 @@
</div>
<div class='HelpReplaceRegexClear'>
<h3>Basic Example 1</h3>
<p>
<img class='HelpReplaceRegexImg' src='Data.png' width="200" height="155" alt="">
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src='Data.png' width="200" height="155" alt="">
</p>
<p class='HelpReplaceRegexClear'>
<img class='HelpReplaceRegexImg' src="SimpleConcat.png" width="705" height="484" alt="">