@Override public boolean delete(FileData data) { try { String path = data.getName(); ArtefactAPI artefact = getArtefact(path); if (artefact == null) { return false; } if (artefact.hasProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION)) { throw new ProjectException("Project ''{0}'' is already marked for deletion!", null, path); } artefact.addProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION, ValueType.BOOLEAN, true); return true; } catch (CommonException e) { log.error(e.getMessage(), e); return false; } }
@Override public boolean deleteHistory(String name, String version) { try { ArtefactAPI artefact = getArtefact(name); if (artefact == null) { return false; } if (version == null) { artefact.delete(getUser()); return true; } else { if (!artefact.hasProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION)) { throw new ProjectException("Project ''{0}'' isn't marked for deletion. The method deleteHistory() in JCR Repository is supported only for undelete and erase.", null, name); } artefact.removeProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION); return true; } } catch (CommonException e) { log.error(e.getMessage(), e); return false; } }
private void deleteAbsentFiles(List<String> newFiles, FolderAPI folder, String prefix, CommonUser user) throws ProjectException { for (ArtefactAPI artefact : folder.getArtefacts()) { if (artefact instanceof ResourceAPI) { if (!newFiles.contains(prefix + artefact.getName())) { artefact.delete(user); } } else { deleteAbsentFiles(newFiles, (FolderAPI) artefact, prefix + artefact.getName() + "/", user); } } }
if (artefact != null) { if (artefact instanceof ResourceAPI) { Map<String, Object> artefactProps = artefact.getProps(); artefactProps.put(ArtefactProperties.VERSION_COMMENT, comment); artefact.setProps(artefactProps); ((ResourceAPI) artefact).setContent(in); } else { artefact.delete(user); artefact = createResource(resourceName, in); artefact = createResource(resourceName, in); artefact.commit(user, Integer.parseInt(project.getVersion().getRevision()) + 1); String folder = foldersIterator.next(); ArtefactAPI artefact = getArtefact(name + "/" + folder); artefact.commit(user, Integer.parseInt(project.getVersion().getRevision()) + 1);
private FileData createFileData(String name, ArtefactAPI project) throws PropertyException { FileData fileData = new FileData(); fileData.setName(name); // It's impossible to calculate zip size if project contains artefacts if (((FolderAPI) project).getArtefacts().size() == 0) { fileData.setSize(0); } fileData.setDeleted(project.hasProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION)); if (project.hasProperty(ArtefactProperties.VERSION_COMMENT)) { Property property = project.getProperty(ArtefactProperties.VERSION_COMMENT); fileData.setComment(property.getString()); } ProjectVersion version = project.getVersion(); fileData.setAuthor(version.getVersionInfo().getCreatedBy()); fileData.setModifiedAt(version.getVersionInfo().getCreatedAt()); fileData.setVersion(String.valueOf(version.getRevision())); return fileData; }
private void writeFolderToZip(FolderAPI folder, ZipOutputStream zipOutputStream, String pathPrefix) throws IOException, ProjectException { Collection<? extends ArtefactAPI> artefacts = folder.getArtefacts(); for (ArtefactAPI artefact : artefacts) { if (artefact instanceof ResourceAPI) { ZipEntry entry = new ZipEntry(pathPrefix + artefact.getName()); zipOutputStream.putNextEntry(entry); InputStream content = ((ResourceAPI) artefact).getContent(); IOUtils.copy(content, zipOutputStream); content.close(); zipOutputStream.closeEntry(); } else { writeFolderToZip((FolderAPI) artefact, zipOutputStream, pathPrefix + artefact.getName() + "/"); } } }
if (artefact != null) { if (artefact instanceof ResourceAPI) { Map<String, Object> artefactProps = artefact.getProps(); artefactProps.put(ArtefactProperties.VERSION_COMMENT, comment); artefact.setProps(artefactProps); ((ResourceAPI) artefact).setContent(in); } else { artefact.delete(user); artefact = createResource(resourceName, in); artefact = createResource(resourceName, in); artefact.commit(user, Integer.parseInt(project.getVersion().getRevision()) + 1); String folder = foldersIterator.next(); ArtefactAPI artefact = getArtefact(name + "/" + folder); artefact.commit(user, Integer.parseInt(project.getVersion().getRevision()) + 1);
private FileData createFileData(String name, ArtefactAPI project) throws PropertyException { FileData fileData = new FileData(); fileData.setName(name); // It's impossible to calculate zip size if project contains artefacts if (((FolderAPI) project).getArtefacts().size() == 0) { fileData.setSize(0); } fileData.setDeleted(project.hasProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION)); if (project.hasProperty(ArtefactProperties.VERSION_COMMENT)) { Property property = project.getProperty(ArtefactProperties.VERSION_COMMENT); fileData.setComment(property.getString()); } ProjectVersion version = project.getVersion(); fileData.setAuthor(version.getVersionInfo().getCreatedBy()); fileData.setModifiedAt(version.getVersionInfo().getCreatedAt()); fileData.setVersion(String.valueOf(version.getRevision())); return fileData; }
private void writeFolderToZip(FolderAPI folder, ZipOutputStream zipOutputStream, String pathPrefix) throws IOException, ProjectException { Collection<? extends ArtefactAPI> artefacts = folder.getArtefacts(); for (ArtefactAPI artefact : artefacts) { if (artefact instanceof ResourceAPI) { ZipEntry entry = new ZipEntry(pathPrefix + artefact.getName()); zipOutputStream.putNextEntry(entry); InputStream content = ((ResourceAPI) artefact).getContent(); IOUtils.copy(content, zipOutputStream); content.close(); zipOutputStream.closeEntry(); } else { writeFolderToZip((FolderAPI) artefact, zipOutputStream, pathPrefix + artefact.getName() + "/"); } } }
@Override public boolean deleteHistory(FileData data) { String name = data.getName(); String version = data.getVersion(); try { ArtefactAPI artefact = getArtefact(name); if (artefact == null) { return false; } if (version == null) { CommonUser user = data.getAuthor() == null ? getUser() : new CommonUserImpl(data.getAuthor()); artefact.delete(user); return true; } else { if (!artefact.hasProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION)) { throw new ProjectException("Project ''{0}'' isn't marked for deletion. The method deleteHistory() in JCR Repository is supported only for undelete and erase.", null, name); } artefact.removeProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION); return true; } } catch (CommonException e) { log.error(e.getMessage(), e); return false; } }
private void deleteAbsentFiles(List<String> newFiles, FolderAPI folder, String prefix) throws ProjectException { for (ArtefactAPI artefact : folder.getArtefacts()) { if (artefact instanceof ResourceAPI) { if (!newFiles.contains(prefix + artefact.getName())) { artefact.delete(getUser()); } } else { deleteAbsentFiles(newFiles, (FolderAPI) artefact, prefix + artefact.getName() + "/"); } } }
@Override public boolean delete(FileData data) { try { String path = data.getName(); ArtefactAPI artefact = getArtefact(path); if (artefact == null) { return false; } if (artefact.hasProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION)) { throw new ProjectException("Project ''{0}'' is already marked for deletion!", null, path); } artefact.addProperty(ArtefactProperties.PROP_PRJ_MARKED_4_DELETION, ValueType.BOOLEAN, true); return true; } catch (CommonException e) { log.error(e.getMessage(), e); return false; } }
for (ArtefactAPI artefactAPI : deployment.getArtefacts()) { if (artefactAPI instanceof FolderAPI) { result.add(createFileData(path + "/" + deployment.getName() + "/" + artefactAPI.getName(), artefactAPI));
for (ArtefactAPI artefactAPI : deployment.getArtefacts()) { if (artefactAPI instanceof FolderAPI) { result.add(createFileData(path + "/" + deployment.getName() + "/" + artefactAPI.getName(), artefactAPI));