Как заставить CsvDozerBeanWriter извлекать заголовки столбцов из XML-файлов сопоставления Dozer

Я пишу функцию для создания снимков экрана в формате CSV.

Мне нужно, чтобы это управлялось данными. Таким образом, мне нужно избегать жесткого кодирования каждого моментального снимка в Java, а загружать его из источника данных, такого как XML-файл или база данных. Данные содержатся в Java-бинах.

Я использую SuperCSV с расширением Dozer в версии 2.1.0.

Эта комбинация кажется идеальной, так как я могу кодировать сопоставления bean-компонентов со столбцами в XML-файлах сопоставления Dozer.

Это хорошо работает для данных, но я не нашел способа указать строки, которые будут использоваться для заголовков столбцов CSV, кроме как жестко закодировать их в Java, как это делается во всех примерах и тестовых примерах, которые я просмотрел. . Это не зависит от данных.

Есть ли способ закодировать заголовки столбцов в файле сопоставления. Или даже извлечь их из файла сопоставления, создать список и передать их методу writerHeader()?

Я думаю, что было бы нормально просто использовать имена свойств bean-компонента в качестве заголовков, хотя в идеальной ситуации мне предоставляется некоторая дополнительная нотация метаданных в теге <Field> XML, который определяет заголовок.

Я бы разместил это на SourceForge, но получаю там ошибку 500.


person DaBlick    schedule 13.08.2013    source источник


Ответы (1)


Я разработчик Super CSV. Вы первый человек, о котором я слышу, кто использует CsvDozerBeanWriter со своими DozerBeanMapper — приятно слышать, что эта функция полезна :)

Итак, какова цель «управления данными»? Похоже, вы хотите, чтобы ваш код был действительно общим, поэтому вы можете изменить CSV, просто изменив XML. Это правильно? Конечно, вы не можете настроить процессоры ячеек динамически... или вы тоже пытаетесь это сделать!!??

Я бы взглянул на MappingMetadata API Dozer, к которому вы можете получить доступ, позвонив getMappingMetadata() на DozerBeanMapper. Я никогда не использовал его, но похоже, что вы могли бы получить имена столбцов таким образом (хотя вы, вероятно, были бы ограничены именами полей).

В противном случае вам придется самостоятельно анализировать файл XML (я бы, вероятно, использовал XPath). Вам придется сделать это таким образом, если вы хотите использовать некоторые другие метаданные в XML для имени столбца.

person James Bassett    schedule 14.08.2013
comment
Да. Большая мотивация заключается в том, что я хочу иметь возможность развертывать новые моментальные снимки без необходимости повторного развертывания программного обеспечения. Вчера у меня была такая же идея использовать MappingMetadata, но я подумал, что это слишком тяжело для этого, а также я столкнулся с некоторыми проблемами с примерами в документации. Я как бы склоняюсь к самодельной мини-версии, в которую я могу включать свои собственные метаданные (заголовки). - person DaBlick; 14.08.2013