У меня есть фиксированный структурированный файл, такой как
5 записей типа, GM, AB, TM, DM, IN
TM и DM, как вы видите, является отношение мастер-детали
, но также DM и IN находятся в отношениях мастер-детали
GM01012020
ABXX-43432
TM CODE1
DM DESC1
INDESC1
INDESC2
INDESC3
DM DESC2
INDESC1
INDESC2
INDESC3
TM CODE2
DM DESC3
INDESC1
INDESC2
DM DESC4
INDESC1
Мне удалось собрать все строки в бобах, но в отдельности ... Мне нужно найти способ связать основные записи
FixedWidthParserSettings settings;
settings = new FixedWidthParserSettings();
settings.setAutoConfigurationEnabled(true);
settings.setHeaderExtractionEnabled(false);
settings.setRecordEndsOnNewline(true);
settings.trimValues(false);
FixedWidthFields gm = FixedWidthFields.forParsing(Gm.class);
FixedWidthFields ab = FixedWidthFields.forParsing(Ab.class);
FixedWidthFields tm = FixedWidthFields.forParsing(Tm.class);
FixedWidthFields dm = FixedWidthFields.forParsing(Dm.class);
FixedWidthFields in = FixedWidthFields.forParsing(In.class);
settings.addFormatForLookahead("GM", gm);
settings.addFormatForLookahead("AB", ab);
settings.addFormatForLookahead("TM", tm);
settings.addFormatForLookahead("DM", dm);
settings.addFormatForLookahead("IN", in);
final BeanListProcessor<Gm> gmProcessor = new BeanListProcessor<Gm>(Gm.class);
final BeanListProcessor<Ab> abprocessor = new BeanListProcessor<Ab>(Ab.class);
final BeanListProcessor<Tm> tmProcessor = new BeanListProcessor<Tm>(Tm.class);
final BeanListProcessor<Dm> dmProcessor = new BeanListProcessor<Dm>(Dm.class);
final BeanListProcessor<In> inProcessor = new BeanListProcessor<In>(In.class);
InputValueSwitch inputValueSwitch = new InputValueSwitch(0);
inputValueSwitch.addSwitchForValue("GM", bgmProcessor);
inputValueSwitch.addSwitchForValue("AB", abProcessor);
inputValueSwitch.addSwitchForValue("TM", tmProcessor);
inputValueSwitch.addSwitchForValue("DM", dmProcessor);
inputValueSwitch.addSwitchForValue("IN", inProcessor);
settings.setProcessor(inputValueSwitch);
inputValueSwitch.setDefaultSwitch(bgmProcessor);
FixedWidthParser parser = new FixedWidthParser(settings);
parser.parse(f);
//Gm bgmRecord = (Gm) gmProcessor.getBeans();
List<Ab> abRecords = abProcessor.getBeans();
List<Tm> tmRecords = tmProcessor.getBeans();
List<Dm> dmRecords = dmProcessor.getBeans();
List<In> inRecords = inProcessor.getBeans();
Мне удалось извлечь все записи, но я все еще не могу связать отношение MD. Я читал примеры по univocity do c, но не смог заставить его работать
В Tm Bean есть список Dm bean и, конечно, в Dm bean список в Bean
UPDATE
Я ИСПОЛЬЗУЮ MasterDetailListProcessor, но могу получить только 1 уровень мастер-детализации