В реализации класса RegExpParser достаточно определить enum полей, встречающихся в regExp и формат преобразования:
public class RegistryRowParser extends RegExpParser<RegistryRowParser.REGISTRY_GROUP, RegistryRowParser.RegistryRow> {
private RegistryRow result = new RegistryRow();
public RegistryRowParser(String rowFormat) {
super(REGISTRY_GROUP.class, rowFormat);
}
public RegistryRowParser() {
super(REGISTRY_GROUP.class);
}
@Override
public RegistryRow getResult() {
return result;
}
public enum REGISTRY_GROUP implements RegExpParser.IGroup<RegistryRow> {
amount {
@Override
public void setResult(RegistryRow result, String value, Object param) {
result.amount = new BigDecimal(value);
}
},
factDate {
@Override
public void setResult(RegistryRow result, String value, Object param) throws ParseException {
result.factDate = parseDate(value, param);
}
@Override
public Object initParam(String param) {
return initDateFormat(param);
}
},
partnerOperationId,
customerAlias;
public Object initParam(String param) {
return null;
}
public void setResult(RegistryRow result, String value, Object param) throws ParseException{
setStringField(result, value, this);
}
}
public static class RegistryRow {
public String partnerOperationId;
public Date factDate;
public BigDecimal amount;
public String customerAlias;
}
}