private void saveFiles(Iterable files, String entityPath) { if (files != null) files.forEach( file -> { LinkedHashMap map = (LinkedHashMap) file; map.put("path", entityPath); fileStoreService.save(map.get("id").toString()); }); }
private Iterable<Object> saveAndDeleteFiles( JSONArray oldFiles, JSONArray newFiles, String entityPath) { Iterable<Object> toDelete = Sets.difference(Sets.newHashSet(oldFiles), Sets.newHashSet(newFiles)); Iterable<Object> toSave = Sets.difference(Sets.newHashSet(newFiles), Sets.newHashSet(oldFiles)); toDelete.forEach(file -> fileStoreService.delete(((LinkedHashMap) file).get("id").toString())); saveFiles(toSave, entityPath); return toDelete; }
public void deleteFiles(SchemaFormContentAware entity) { Object json = defaultConfiguration().jsonProvider().parse(entity.getContent()); DocumentContext context = JsonPath.using(defaultConfiguration().addOptions(Option.AS_PATH_LIST)).parse(json); DocumentContext reader = new JsonReader(defaultConfiguration().addOptions(Option.REQUIRE_PROPERTIES)).parse(json); try { ((JSONArray) context.read("$..obibaFiles")) .stream() .map(p -> (JSONArray) reader.read(p.toString())) .flatMap(Collection::stream) .forEach(file -> fileStoreService.delete(((LinkedHashMap) file).get("id").toString())); } catch (PathNotFoundException e) { } }