2013-06-25 2 views
1

Я новичок в Smooks, и я хочу добиться следующего. Может быть, я совершенно новичок в этом, и я пока не вижу ответа, но это должно быть основной задачей.Как разобрать строку на Smooks beanpopulator

Я беру выдержку из примера, показанного в официальном документе для beanpopulator.

http://www.milyn.org/javadoc/v1.0/smooks-cartridges/javabean/org/milyn/javabean/BeanPopulator.html

public class Header { 
    private Date date; 
    private Long customerNumber; 
    private String customerName; 
} 

Соответствующие smooks конфигурации

<-- Create the Header bean instance when we encounter the "header" element. 
     Call it "header" --> 
<resource-config selector="header"> 
    <resource>org.milyn.javabean.BeanPopulator</resource> 
    <param name="beanId">header</param> 
    <param name="beanClass">org.milyn.javabean.Header</param> 
    <param name="bindings"> 
     <-- Header bindings... --> 
     <binding property="date" type="OrderDateLong" selector="header/date" /> <-- See OrderDateLong decoder definition below... --> 
     <binding property="customerNumber" type="Long" selector="header/customer/@number" /> 
     <binding property="customerName" selector="header/customer" /> <-- Type defaults to String --> 
    </param> 
</resource-config> 

Предположим, что поле 'CUSTOMERNAME' не нужно извлечь из 'Selecter', вместо этого он должен быть заполнен с уникальным значением каждый раз. (Например: customerName = 'Richard')

Как это достичь? Благодаря!

EDIT: В случае, если это выглядит глупо. Что я хочу сделать, это добавить значение к карте. Я прочитал CSV для этого, и если CSV содержит определенный заголовок (например: customerName), я добавляю его на карту с ключом как «customerName». Чтение заголовка из CSV - это еще одна вещь в моем сознании, но я не мог найти решение для этого.

ответ

0

Я исправил это, написав новый класс Декодера. Не уверен, что это лучший способ, но выглядит как его путь;)

public class NameStringDecoder implements DataDecoder { 
    @Override 
    public Object decode(String customerName) throws DataDecodeException { 
     return "Richard"; 
    } 
}