use of org.pentaho.platform.api.repository2.unified.webservices.RepositoryFileDto in project pentaho-platform by pentaho.
the class FileService method getSourceFileIdsThatNotConflictWithFolderFiles.
/**
* Conflict occurs if one of source files has the same
* name with any of folder files.
*
* @param params
* String with file ids, separated by comma
* @param pathToFolder
* path to folder
*
* @return String
* with file ids of not conflict files, separated by comma
*/
protected String getSourceFileIdsThatNotConflictWithFolderFiles(String pathToFolder, String params) {
String[] sourceFileIds = FileUtils.convertCommaSeparatedStringToArray(params);
List<String> nonConflictFileIdsList = new ArrayList<>();
List<RepositoryFileDto> homeFolderFiles = doGetChildren(pathToFolder, null, true, true);
for (String sourceFileId : sourceFileIds) {
boolean isConflict = false;
RepositoryFile fileToRestore = getRepository().getFileById(sourceFileId);
if (fileToRestore == null) {
logger.error("Could not get file with id: " + sourceFileId);
continue;
}
for (RepositoryFileDto fileInHomeFolder : homeFolderFiles) {
if (fileToRestore.getName().equals(fileInHomeFolder.getName())) {
isConflict = true;
break;
}
}
if (!isConflict) {
nonConflictFileIdsList.add(sourceFileId);
}
}
return getCommaSeparatedFileIds(nonConflictFileIdsList);
}
use of org.pentaho.platform.api.repository2.unified.webservices.RepositoryFileDto in project pentaho-platform by pentaho.
the class FileService method getFolderFileIdsThatConflictWithSource.
public String getFolderFileIdsThatConflictWithSource(String pathToFolder, String params) {
if (params == null) {
throw new IllegalArgumentException("parameters cannot be null");
}
String[] sourceFileIds = FileUtils.convertCommaSeparatedStringToArray(params);
List<String> conflictFileIdsList = new ArrayList<>();
List<RepositoryFileDto> homeFolderFiles = doGetChildren(pathToFolder, null, false, true);
for (RepositoryFileDto fileInHomeFolder : homeFolderFiles) {
for (String sourceFileId : sourceFileIds) {
RepositoryFile fileToRestore = getRepository().getFileById(sourceFileId);
if (fileToRestore.getName().equals(fileInHomeFolder.getName())) {
conflictFileIdsList.add(fileInHomeFolder.getId());
}
}
}
return getCommaSeparatedFileIds(conflictFileIdsList);
}
use of org.pentaho.platform.api.repository2.unified.webservices.RepositoryFileDto in project pentaho-platform by pentaho.
the class FileService method doSetContentCreator.
/**
* Store content creator of the selected repository file
*
* @param pathId colon separated path for the repository file
* <pre function="syntax.xml">
* :path:to:file:id
* </pre>
* @param contentCreator repository file
* <pre function="syntax.xml">
* <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
* <repositoryFileDto>
* <createdDate>1402911997019</createdDate>
* <fileSize>3461</fileSize>
* <folder>false</folder>
* <hidden>false</hidden>
* <id>ff11ac89-7eda-4c03-aab1-e27f9048fd38</id>
* <lastModifiedDate>1406647160536</lastModifiedDate>
* <locale>en</locale>
* <localePropertiesMapEntries>
* <localeMapDto>
* <locale>default</locale>
* <properties>
* <stringKeyStringValueDto>
* <key>file.title</key>
* <value>myFile</value>
* </stringKeyStringValueDto>
* <stringKeyStringValueDto>
* <key>jcr:primaryType</key>
* <value>nt:unstructured</value>
* </stringKeyStringValueDto>
* <stringKeyStringValueDto>
* <key>title</key>
* <value>myFile</value>
* </stringKeyStringValueDto>
* <stringKeyStringValueDto>
* <key>file.description</key>
* <value>myFile Description</value>
* </stringKeyStringValueDto>
* </properties>
* </localeMapDto>
* </localePropertiesMapEntries>
* <locked>false</locked>
* <name>myFile.prpt</name></name>
* <originalParentFolderPath>/public/admin</originalParentFolderPath>
* <ownerType>-1</ownerType>
* <path>/public/admin/ff11ac89-7eda-4c03-aab1-e27f9048fd38</path>
* <title>myFile</title>
* <versionId>1.9</versionId>
* <versioned>true</versioned>
* </repositoryFileAclDto>
* </pre>
* @throws FileNotFoundException
*/
public void doSetContentCreator(String pathId, RepositoryFileDto contentCreator) throws FileNotFoundException {
RepositoryFileDto file = getRepoWs().getFile(idToPath(pathId));
if (file == null) {
throw new FileNotFoundException();
}
try {
Map<String, Serializable> fileMetadata = getRepository().getFileMetadata(file.getId());
fileMetadata.put(PentahoJcrConstants.PHO_CONTENTCREATOR, contentCreator.getId());
getRepository().setFileMetadata(file.getId(), fileMetadata);
} catch (Exception e) {
throw new InternalError();
}
}
use of org.pentaho.platform.api.repository2.unified.webservices.RepositoryFileDto in project pentaho-platform by pentaho.
the class FileService method doMoveFiles.
/**
* Moves a list of files from its current location to another.
* <p/>
* Moves a list of files from its current location to another, the list should be comma separated.
*
* @param destPathId colon separated path for the repository file
* <pre function="syntax.xml">
* :path:to:file:id
* </pre>
* @param params comma separated list of files to be moved
* <pre function="syntax.xml">
* path1,path2,...
* </pre>
*
* @return boolean <code>true</code> if all files were moved correctly or <code>false</code> if the destiny path is
* not available
* @throws FileNotFoundException
*/
public void doMoveFiles(String destPathId, String params) throws FileNotFoundException {
String idToPath = idToPath(destPathId);
RepositoryFileDto repositoryFileDto = getRepoWs().getFile(idToPath);
if (repositoryFileDto == null) {
throw new FileNotFoundException(idToPath);
}
String[] sourceFileIds = FileUtils.convertCommaSeparatedStringToArray(params);
int i = 0;
try {
for (; i < sourceFileIds.length; i++) {
getRepoWs().moveFile(sourceFileIds[i], repositoryFileDto.getPath(), null);
}
} catch (IllegalArgumentException | UnifiedRepositoryAccessDeniedException e) {
throw e;
} catch (Exception e) {
throw new InternalError();
}
}
use of org.pentaho.platform.api.repository2.unified.webservices.RepositoryFileDto in project pentaho-platform by pentaho.
the class FileServiceIT method doGetContentCreator.
@Test
public void doGetContentCreator() {
String pathId = "path:to:file:file1.ext";
String fileId = "file1";
String creatorId = "creatorId";
Map<String, Serializable> fileMetadata = mock(HashMap.class);
doReturn(creatorId).when(fileMetadata).get("contentCreator");
doReturn(fileMetadata).when(fileService.repository).getFileMetadata(fileId);
doReturn("/path/to/file/file1.ext").when(fileService).idToPath(pathId);
RepositoryFileDto repositoryFileDto = mock(RepositoryFileDto.class);
doReturn(fileId).when(repositoryFileDto).getId();
doReturn(repositoryFileDto).when(fileService.defaultUnifiedRepositoryWebService).getFile(nullable(String.class));
RepositoryFileDto repositoryFileDto1 = mock(RepositoryFileDto.class);
doReturn(repositoryFileDto1).when(fileService.defaultUnifiedRepositoryWebService).getFileById(creatorId);
// Test 1
RepositoryFileDto repositoryFileDto2 = null;
try {
repositoryFileDto2 = fileService.doGetContentCreator(pathId);
} catch (Exception e) {
fail();
}
assertEquals(repositoryFileDto1, repositoryFileDto2);
// Test 2
doReturn(null).when(fileMetadata).get("contentCreator");
try {
repositoryFileDto2 = fileService.doGetContentCreator(pathId);
assertEquals(null, repositoryFileDto2);
} catch (Exception e) {
fail();
}
// Test 3
doReturn("").when(fileMetadata).get("contentCreator");
try {
repositoryFileDto2 = fileService.doGetContentCreator(pathId);
assertEquals(null, repositoryFileDto2);
} catch (Exception e) {
fail();
}
verify(fileService, times(3)).idToPath(pathId);
verify(fileService.repository, times(3)).getFileMetadata(fileId);
verify(fileService.defaultUnifiedRepositoryWebService, times(3)).getFile(nullable(String.class));
verify(fileService.defaultUnifiedRepositoryWebService).getFileById(nullable(String.class));
}
Aggregations