i transformed some CSV'S into Java-Entities, but now i have the problem, that there are some entities double. I filtered them in a Java function which is called after smooks, but would prefer to filter it befor calling result.getBean(...).
App main = new App();
JavaResult result;
result = main.runCSVTransform("config-Verlag.xml", "input-Verlag");
List<Verlag> inputVerlag = ((List<Verlag>) result.getBean("input-Verlag"));
List<Adresse> inputAdresse = (List<Adresse>) result.getBean("input-Adresse");
inputAdresse.filter();`
protected JavaResult runCSVTransform(...) {
smooks = new Smooks(config);
final ExecutionContext executionContext = smooks.createExecutionContext();
JavaResult result = new JavaResult();
executionContext.setEventListener(new HtmlReportGenerator("target/report/" + csvName + "Report.html"));
URIResourceLocator resourceLocator = new URIResourceLocator();
InputStream is = resourceLocator.getResource(csvName + ".csv");
String messageIn = StreamUtils.readStreamAsString(is);
smooks.filterSource(executionContext, new StringSource(messageIn), result);
return result;
}
And my smooksConfig:
<?xml version="1.0"?>
<smooks-resource-list xmlns="http://ift.tt/1lg2aEi"
xmlns:csv="http://ift.tt/1rhyGah"
xmlns:jb="http://ift.tt/1rhyGak">
<csv:reader fields="name,strasse,hausnummer,zusatz,postleitzahl,ort"/>
<jb:bindings beanId="input-Verlag" class="java.util.ArrayList" createOnElement="csv-set">
<jb:wiring beanIdRef="verlag"/>
</jb:bindings>
<jb:bindings beanId="input-Adresse" class="java.util.ArrayList" createOnElement="csv-set">
<jb:wiring beanIdRef="adresse"/>
</jb:bindings>
<jb:bindings beanId="verlag" class="de.target.classes.Verlag" createOnElement="csv-record">
<jb:value property="name" data="csv-record/name"/>
</jb:bindings>
<jb:bindings beanId="adresse" class="de.target.classes.Adresse" createOnElement="csv-record">
<jb:value property="strasse" data="csv-record/strasse"/>
<jb:value property="hausnummer" data="csv-record/hausnummer"/>
<jb:value property="zusatz" data="csv-record/zusatz"/>
<jb:value property="postleitzahl" data="csv-record/postleitzahl"/>
<jb:value property="ort" data="csv-record/ort"/>
</jb:bindings>
I've read something about a visitor-pattern but couldn't include any examples.
Aucun commentaire:
Enregistrer un commentaire