2013-08-12 4 views
2

Я хотел бы знать, как я могу загрузить некоторые файлы в определенном порядке. Например, я хотел бы загрузить мои файлы в соответствии со своей меткой времени, чтобы убедиться, что последующие обновления данных воспроизводятся в правильном порядке.Как загрузить файлы в определенном порядке

Допустим, у меня есть 2 типа файлов: файлы справки и файлы риска.

Я хотел бы загрузить T1_Info.csv, затем T1_Risk.csv, T2_Info.csv, T2_Risk.csv ...

Я пытался реализовать компаратор, как сказано на Confluence, но мне кажется, что файл loadInstructions имеет приоритет. Он будет заказывать файлы Info и файлы риска независимо. (загрузка T1_Info.csv, T2_Info.csv, а затем T1_Risk.csv, T2_Risk.csv ..)

Должен ли я реализовать пользовательский загрузчик файлов, или это возможно с использованием конфигурации AP?

ответ

2

Загрузка файлов в соответствии с инструкциями по загрузке осуществляется в com.quartetfs.tech.store.csv.impl.CSVDataModelFactory.load(List<FileLoadDescriptor>). Полученный вами список FileLoadDescriptor создается непосредственно из файлов инструкций загрузки.

Что вы можете сделать, это создать простые файлы инструкций с 2 ​​записями, один для справки и один для риска. Таким образом, ваша пользовательская реализация CSVDataModelFactory будет вызываться со списком из двух элементов. В своей пользовательской реализации вы просматриваете каталог, в котором находятся файлы, сортируйте их в том порядке, в котором вы хотите их разбор, и вызовите super.load() со списком FileLoadDescriptor, который вы создали из сканирования каталога.

Если вы хотите также загружать файлы, которые находятся в будущем в этой папке, вы должны добавить в свои инструкции по загрузке строку, которая будет соответствовать всем файлам и которая сделает реализацию super.load() для создания наблюдателя для этого каталога (вы должны затем переопределить createDirectoryWatcher(), чтобы не смотреть файлы, уже присутствующие в папке, когда вызывается load).