Skip to content

Commit

Permalink
Add a selector on text / inner html / outer html / attribute
Browse files Browse the repository at this point in the history
  • Loading branch information
Fabien Carrion committed Dec 8, 2014
1 parent f3ce0f8 commit 34db9f0
Show file tree
Hide file tree
Showing 5 changed files with 242 additions and 30 deletions.
3 changes: 0 additions & 3 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
<property name="build.dir" value="${basedir}/build/"/>
<property name="lib.dir" value="${basedir}/lib/"/>
<property name="libkettle.dir" value="${basedir}/../../../lib/"/>
<property name="libext.dir" value="${basedir}/../../../libext/"/>
<property name="libswt.dir" value="${basedir}/../../../libswt/"/>

<!-- Load Environment specific properties from properties file -->
Expand All @@ -16,8 +15,6 @@
<path id="local.class.path">
<fileset dir="${lib.dir}" includes="*.jar"/>
<fileset dir="${libkettle.dir}" includes="*.jar"/>
<fileset dir="${libext.dir}" includes="*.jar *.zip"/>
<fileset dir="${libext.dir}" includes="**/*.jar *.zip"/>
<fileset dir="${libswt.dir}" includes="*.jar *.zip"/>
<fileset dir="${libswt.dir}/win32/" includes="*.jar *.zip"/>
</path>
Expand Down
37 changes: 32 additions & 5 deletions src/be/ibridge/kettle/jsoup/JsoupInput.java
Original file line number Diff line number Diff line change
Expand Up @@ -418,11 +418,38 @@ private Object[] buildRow() throws KettleException {
Elements jsoupa=data.resultList.get(i);
String nodevalue=null;
if(jsoupa!=null) {
Object jo= (Object) jsoupa.get(data.recordnr);
Element jo= jsoupa.get(data.recordnr);
if(jo!=null){
nodevalue = jo.toString();
}
}

// Do Element Type
switch (field.getElementType()) {
case JsoupInputField.ELEMENT_TYPE_NODE:
// Do Result Type
switch (field.getResultType()) {
case JsoupInputField.RESULT_TYPE_TEXT:
nodevalue = jo.text();
break;
case JsoupInputField.RESULT_TYPE_TYPE_OUTER_HTML:
nodevalue = jo.outerHtml();
break;
case JsoupInputField.RESULT_TYPE_TYPE_INNER_HTML:
nodevalue = jo.html();
break;
default:
nodevalue = jo.toString();
break;
}
break;
case JsoupInputField.ELEMENT_TYPE_ATTRIBUT:
nodevalue = jo.attr(field.getAttribute());
break;
default:
nodevalue = jo.toString();
break;
}
}
}


// Do trimming
switch (field.getTrimType()) {
Expand Down Expand Up @@ -541,4 +568,4 @@ public void dispose(StepMetaInterface smi, StepDataInterface sdi) {
data.resultList=null;
super.dispose(smi, sdi);
}
}
}
61 changes: 42 additions & 19 deletions src/be/ibridge/kettle/jsoup/JsoupInputDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -833,6 +833,20 @@ public void focusGained(org.eclipse.swt.events.FocusEvent e)
ColumnInfo.COLUMN_TYPE_TEXT,
false),
new ColumnInfo(
BaseMessages.getString(PKG, "JsoupInputDialog.FieldsTable.Element.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
JsoupInputField.ElementTypeDesc,
true ),
new ColumnInfo(
BaseMessages.getString(PKG, "JsoupInputDialog.FieldsTable.ResultType.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
JsoupInputField.ResultTypeDesc,
true ),
new ColumnInfo(
BaseMessages.getString(PKG, "JsoupInputDialog.FieldsTable.Attribute.Column"),
ColumnInfo.COLUMN_TYPE_TEXT,
false ),
new ColumnInfo(
BaseMessages.getString(PKG, "JsoupInputDialog.FieldsTable.Type.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
ValueMeta.getTypes(),
Expand Down Expand Up @@ -1237,6 +1251,9 @@ public void getData(JsoupInputMeta in)
TableItem item = wFields.table.getItem(i);
String name = field.getName();
String xpath = field.getPath();
String element = field.getElementTypeDesc();
String resulttype = field.getResultTypeDesc();
String attribute = field.getAttribute();
String type = field.getTypeDesc();
String format = field.getFormat();
String length = ""+field.getLength();
Expand All @@ -1249,15 +1266,18 @@ public void getData(JsoupInputMeta in)

if (name !=null) item.setText( 1, name);
if (xpath !=null) item.setText( 2, xpath);
if (type !=null) item.setText( 3, type );
if (format !=null) item.setText( 4, format );
if (length !=null && !"-1".equals(length )) item.setText( 5, length );
if (prec !=null && !"-1".equals(prec )) item.setText( 6, prec );
if (curr !=null) item.setText( 7, curr );
if (decim !=null) item.setText( 8, decim );
if (group !=null) item.setText( 9, group );
if (trim !=null) item.setText( 10, trim );
if (rep !=null) item.setText(11, rep );
if (element != null) item.setText( 3, element);
if (resulttype != null) item.setText( 4, resulttype);
if (attribute != null) item.setText( 5, attribute);
if (type !=null) item.setText( 6, type );
if (format !=null) item.setText( 7, format );
if (length !=null && !"-1".equals(length )) item.setText( 8, length );
if (prec !=null && !"-1".equals(prec )) item.setText( 9, prec );
if (curr !=null) item.setText( 10, curr );
if (decim !=null) item.setText( 11, decim );
if (group !=null) item.setText( 12, group );
if (trim !=null) item.setText( 13, trim );
if (rep !=null) item.setText(14, rep );

}
}
Expand Down Expand Up @@ -1334,15 +1354,18 @@ private void getInfo(JsoupInputMeta in) throws KettleException

field.setName( item.getText(1) );
field.setPath( item.getText(2) );
field.setType( ValueMeta.getType(item.getText(3)) );
field.setFormat( item.getText(4) );
field.setLength( Const.toInt(item.getText(5), -1) );
field.setPrecision( Const.toInt(item.getText(6), -1) );
field.setCurrencySymbol( item.getText(7) );
field.setDecimalSymbol( item.getText(8) );
field.setGroupSymbol( item.getText(9) );
field.setTrimType( JsoupInputField.getTrimTypeByDesc(item.getText(10)) );
field.setRepeated( BaseMessages.getString(PKG, "System.Combo.Yes").equalsIgnoreCase(item.getText(11)) );
field.setElementType( JsoupInputField.getElementTypeByDesc(item.getText(3)) );
field.setResultType( JsoupInputField.getResultTypeByDesc(item.getText(4)) );
field.setAttribute( item.getText(5) );
field.setType( ValueMeta.getType(item.getText(6)) );
field.setFormat( item.getText(7) );
field.setLength( Const.toInt(item.getText(8), -1) );
field.setPrecision( Const.toInt(item.getText(9), -1) );
field.setCurrencySymbol( item.getText(10) );
field.setDecimalSymbol( item.getText(11) );
field.setGroupSymbol( item.getText(12) );
field.setTrimType( JsoupInputField.getTrimTypeByDesc(item.getText(13)) );
field.setRepeated( BaseMessages.getString(PKG, "System.Combo.Yes").equalsIgnoreCase(item.getText(14)) );

in.getInputFields()[i] = field;
}
Expand Down Expand Up @@ -1589,4 +1612,4 @@ private void addAdditionalFieldsTab()


}
}
}
Loading

0 comments on commit 34db9f0

Please sign in to comment.