Hybris переписать существующий файл - PullRequest
0 голосов
/ 17 октября 2018

Я внедряю сервис, который должен хранить CSV-файл в бэк-офисе Hybris, один файл на один день.(и добавьте одну строку, когда конкретный процесс будет завершен)

Можно ли как-то переписать этот файл, потому что я получаю только новые версии файла.Есть ли какой-нибудь документ для этого?Я боюсь, что нет на help.hybris.com

File fileForCatalog = ... // I'm able to get that file from backoffice and add a line
Media mediaForFile = MediaManager.getInstance().createMedia(fileForCatalog.getName());
// creates new file 
mediaForFile.setFile(fileForCatalog);
mediaForFile.writeReplace(); // creates duplicate

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я бы предложил использовать носители с MediaService.

// Get media, f.e. by code
MediaModel media = mediaService.getMedia("myMediaCode");
InputStream oldInputStream = mediaService.getStreamFromMedia(media);
// add your logic to add a line
InputStream newInputStream = ...;
mediaService.setStreamForMedia(media, newInputStream);

Lookup Добавление символов в начало и конец InputStream в Java для примеров того, как добавить вашу строку во входной поток.

0 голосов
/ 17 октября 2018

Я думаю, что вам нужно использовать Media Service и мультимедийные файлы, потому что вам не нужно синхронизировать эти мультимедийные файлы.

Сохранение мультимедийных данных:

final CatalogUnawareMediaModel media = modelService.create(CatalogUnawareMediaModel.class);
media.setCode(name);
media.setMime(MediaType.CSV_UTF_8.type());
media.setRealFileName(name + "_" + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()) + ".csv");
modelService.save(media);
mediaService.setStreamForMedia(media, IOUtils.toInputStream(buffer));

Вы можете использовать те же setStreamForMedia метод обновления данных.

...