@Override public FileChange next() { return new FileChange(folderTo + "/" + entry.getName(), stream); }
@Override public FileData save(FileData folderData, Iterable<FileChange> files) throws IOException { // Add new files and update existing ones List<File> savedFiles = new ArrayList<>(); for (FileChange change : files) { File file = new File(root, change.getName()); savedFiles.add(file); createParent(file); FileOutputStream output = null; try { output = new FileOutputStream(file); IOUtils.copy(change.getStream(), output); } finally { // Close only output stream. This class isn't responsible for input stream: stream must be closed in the // place where it was created. IOUtils.closeQuietly(output); } } File folder = new File(root, folderData.getName()); removeAbsentFiles(folder, savedFiles); return folder.exists() ? getFileData(folder) : null; }
FileItem fileItem = readHistory(fileFrom, data.getVersion()); String fileTo = destData.getName() + fileFrom.substring(srcName.length()); files.add(new FileChange(fileTo, fileItem.getStream())); IOUtils.closeQuietly(file.getStream());
@Override public void update(AProjectArtefact newFolder, CommonUser user) throws ProjectException { super.update(newFolder, user); if (this.isFolder()) { AProjectFolder from = (AProjectFolder) newFolder; List<FileChange> changes = new ArrayList<>(); try { findChanges(from, changes); FileData fileData = getFileData(); fileData.setAuthor(user == null ? null : user.getUserName()); ((FolderRepository) getRepository()).save(fileData, changes); } catch (IOException e) { throw new ProjectException("Can't update: " + e.getMessage(), e); } finally { for (FileChange change : changes) { IOUtils.closeQuietly(change.getStream()); } } } }
@Override public FileChange next() { FileData file = files.get(fileIndex++); String srcFileName = file.getName(); String fileTo = deploymentPath + srcFileName.substring(rulesPath.length()); FileItem fileItem; try { fileItem = designRepo.readHistory(file.getName(), file.getVersion()); IOUtils.closeQuietly(openedStream); openedStream = fileItem.getStream(); return new FileChange(fileTo, openedStream); } catch (Exception e) { log.error(e.getMessage(), e); return null; } }
private void findChanges(AProjectFolder from, List<FileChange> files) throws ProjectException { ResourceTransformer transformer = getResourceTransformer(); String folderPath = getFolderPath(); for (AProjectArtefact artefact : from.getArtefacts()) { if (artefact instanceof AProjectResource) { AProjectResource resource = (AProjectResource) artefact; InputStream content = transformer != null ? transformer.transform(resource) : resource.getContent(); files.add(new FileChange(folderPath + "/" + artefact.getInternalPath(), content)); } else { findChanges((AProjectFolder) artefact, files); } } }
fileData.setSize(out.size()); FileChange change = new FileChange(fileData.getName() + "/" + ArtefactProperties.DESCRIPTORS_FILE, new ByteArrayInputStream(out.toByteArray())); setFileData(((FolderRepository) getRepository()).save(fileData, Collections.singletonList(change)));