null, description, new File.FileStatus(File.FileStatus.STAGE), (long) 0, (long) -1, null, (long) -1, null, null, parents, null, options, sessionId);
@Deprecated /** * Creates and links an external folder. * * @param studyId StudyId where to place the folder * @param filePath Path to create the folder * @param parents Make parent directories as needed * @param description Folder description * @param calculateChecksum Calculate checksum from the new linked file * @param externalUri External file to link * @param createFoundFiles Create a simple catalog file entry for found files. * @param relink Change the existing link of a file. * @param sessionId User's sessionId * @return Created folder * @throws CatalogException CatalogException */ public File linkFolder(long studyId, String filePath, boolean parents, String description, boolean calculateChecksum, URI externalUri, boolean createFoundFiles, boolean relink, String sessionId) throws CatalogException { ParamUtils.checkObj(externalUri, "externalUri"); File folder = catalogManager.getFileManager().createFolder(Long.toString(studyId), Paths.get(filePath).toString(), new File.FileStatus(File.FileStatus.STAGE), parents, description, null, sessionId).first(); checkCanLinkFile(folder, relink); return linkFolder(folder, calculateChecksum, externalUri, createFoundFiles, relink, sessionId); }
TimeUtils.getTime(), description, new File.FileStatus(File.FileStatus.READY), true, 0, null, new Experiment(), Collections.emptyList(), new Job(), Collections.emptyList(), null, catalogManager.getStudyManager().getCurrentRelease(study, userId), Collections.emptyList(),
Arrays.asList( new File("data/", File.Type.DIRECTORY, File.Format.PLAIN, File.Bioformat.NONE, "data/", "", new File.FileStatus(File.FileStatus.READY), 1000, 1), new File("file.vcf", File.Type.FILE, File.Format.PLAIN, File.Bioformat.NONE, "data/file.vcf", "", new File.FileStatus(File.FileStatus.READY), 1000, 1) ), Collections.emptyList(), new LinkedList<>(), new LinkedList<>(), new LinkedList<>(), new LinkedList<>(), Collections.emptyList(), new LinkedList<>(), null, null, null, 1, Collections.emptyMap(), Arrays.asList(new Group("@members", Collections.emptyList())), null, Arrays.asList( new File("data/", File.Type.DIRECTORY, File.Format.UNKNOWN, File.Bioformat.NONE, "data/", "Description", new File.FileStatus(File.FileStatus.READY), 10, 1), new File("file1.txt", File.Type.FILE, File.Format.COMMA_SEPARATED_VALUES, File.Bioformat.NONE, "data/file1.txt", "Description", new File.FileStatus(File.FileStatus.READY), 100, 1), new File("file2.txt", File.Type.FILE, File.Format.COMMA_SEPARATED_VALUES, File.Bioformat.NONE, "data/file2.txt", "Description2", new File.FileStatus(File.FileStatus.READY), 100, 1), new File("alignment.bam", File.Type.FILE, File.Format.BAM, File.Bioformat.ALIGNMENT, "data/alignment.bam", "Tophat alignment file", new File.FileStatus(File.FileStatus.READY), 5000, 1) ), Collections.emptyList(), new LinkedList<>(), new LinkedList<>(), new LinkedList<>(), new LinkedList<>(), Collections.emptyList(), new LinkedList<>(), null, null, null, 1, Arrays.asList( new File("data/", File.Type.DIRECTORY, File.Format.UNKNOWN, File.Bioformat.NONE, "data/", "Description", new File.FileStatus(File.FileStatus.READY), 10, 1), new File("m_file1.txt", File.Type.FILE, File.Format.COMMA_SEPARATED_VALUES, File.Bioformat.NONE, "data/file1.txt", "Description", new File.FileStatus(File.FileStatus.READY), 100, 1),
new File.FileStatus(), true, "", QueryOptions.empty(), sessionId);
TimeUtils.getTime(), description, new File.FileStatus(File.FileStatus.READY), true, size, null, new Experiment(), Collections.emptyList(), new Job(), Collections.emptyList(), null, catalogManager.getStudyManager().getCurrentRelease(study, userId), Collections.emptyList(),
Study study = new Study().setFqn("user@project:study").setAttributes(new HashMap<>()); File file = new File("name", File.Type.FILE, File.Format.BAM, File.Bioformat.MICROARRAY_EXPRESSION_ONECHANNEL_AGILENT, "test/base", "convertorTest", new File.FileStatus("READY"), 1111L, 2); file.setUid(111).setSamples(Arrays.asList(new Sample().setId("1"), new Sample().setId("2"))) .setSoftware(new Software().setName("Software"));
File file; file = new File("jobs/", File.Type.DIRECTORY, File.Format.PLAIN, File.Bioformat.NONE, "jobs/", "", new File.FileStatus(File.FileStatus.STAGE), 1000, 1); LinkedList<FileAclEntry> acl = new LinkedList<>(); acl.push(new FileAclEntry("jcoll", Arrays.asList(FileAclEntry.FilePermissions.VIEW.name(), System.out.println(catalogFileDBAdaptor.insert(studyId, file, null, null)); file = new File("file.sam", File.Type.FILE, File.Format.PLAIN, File.Bioformat.ALIGNMENT, "data/file.sam", "", new File.FileStatus(File.FileStatus.STAGE), 1000, 1); System.out.println(catalogFileDBAdaptor.insert(studyId, file, null, null)); file = new File("file.bam", File.Type.FILE, File.Format.BINARY, File.Bioformat.ALIGNMENT, "data/file.bam", "", new File.FileStatus(File.FileStatus.STAGE), 1000, 1); System.out.println(catalogFileDBAdaptor.insert(studyId, file, null, null)); file = new File("file.vcf", File.Type.FILE, File.Format.PLAIN, File.Bioformat.VARIANT, "data/file2.vcf", "", new File.FileStatus(File.FileStatus.STAGE), 1000, 1);
QueryResult<File> queryResult1 = catalogManager.getFileManager().create(studyFqn, File.Type.FILE, File.Format.PLAIN, File.Bioformat.NONE, "folder/subfolder/toDelete.txt", null, "", new File.FileStatus(File.FileStatus.STAGE), 0, -1, null, -1, null, null, true, null, null, userSessionId); new FileUtils(catalogManager).upload(new ByteArrayInputStream(StringUtils.randomString(200).getBytes()), queryResult1.first(), userSessionId, false, false, true); QueryResult<File> queryResult = catalogManager.getFileManager().create(studyFqn, File.Type.FILE, File.Format.PLAIN, File.Bioformat.NONE, "folder/subfolder/toTrash.txt", null, "", new File.FileStatus(File.FileStatus.STAGE), 0, -1, null, -1, null, null, true, null, null, userSessionId); new FileUtils(catalogManager).upload(new ByteArrayInputStream(StringUtils.randomString(200).getBytes()), queryResult.first(), userSessionId, false, false, true); File toTrash = catalogManager.getFileManager().get(studyFqn, queryResult.first().getPath(), null, userSessionId).first();
@Test public void updateInputAndOutputFiles() throws Exception { Job job = new Job() .setOutDir(new File().setUid(5)) .setStatus(new Job.JobStatus()); long studyId = user3.getProjects().get(0).getStudies().get(0).getUid(); job.setName("jobName1"); QueryResult<Job> insert = catalogJobDBAdaptor.insert(job, studyId, null); List<File> fileInput = Arrays.asList( new File().setUid(5L).setName("file1").setStatus(new File.FileStatus()), new File().setUid(6L).setName("file2").setStatus(new File.FileStatus()), new File().setUid(7L).setName("file3").setStatus(new File.FileStatus()) ); List<File> fileOutput = Arrays.asList( new File().setUid(15L).setName("file1").setStatus(new File.FileStatus()), new File().setUid(16L).setName("file2").setStatus(new File.FileStatus()), new File().setUid(17L).setName("file3").setStatus(new File.FileStatus()) ); ObjectMap params = new ObjectMap() .append(JobDBAdaptor.QueryParams.INPUT.key(), fileInput) .append(JobDBAdaptor.QueryParams.OUTPUT.key(), fileOutput); QueryResult<Job> update = catalogJobDBAdaptor.update(insert.first().getUid(), params, QueryOptions.empty()); assertEquals(3, update.first().getInput().size()); assertEquals(3, update.first().getOutput().size()); assertTrue(Arrays.asList(5L, 6L, 7L).containsAll(update.first().getInput().stream().map(File::getUid).collect(Collectors.toList()))); assertTrue(Arrays.asList(15L, 16L, 17L) .containsAll(update.first().getOutput().stream().map(File::getUid).collect(Collectors.toList()))); }
@Test public void testCreateFile() throws CatalogException, IOException { String content = "This is the content\tof the file"; try { fileManager.create(studyFqn3, File.Type.FILE, File.Format.UNKNOWN, File.Bioformat.UNKNOWN, "data/test/myTest/myFile.txt", null, null, new File.FileStatus(File.FileStatus.READY), 0, -1, null, -1, null, null, false, "This is the content\tof the file", null, sessionIdUser2); fail("An error should be raised because parents is false"); } catch (CatalogException e) { System.out.println("Correct"); } QueryResult<File> fileQueryResult = fileManager.create(studyFqn3, File.Type.FILE, File.Format.UNKNOWN, File.Bioformat.UNKNOWN, "data/test/myTest/myFile.txt", null, null, new File.FileStatus(File.FileStatus.READY), 0, -1, null, -1, null, null, true, content, null, sessionIdUser2); CatalogIOManager ioManager = catalogManager.getCatalogIOManagerFactory().get(fileQueryResult.first().getUri()); assertTrue(ioManager.exists(fileQueryResult.first().getUri())); DataInputStream fileObject = ioManager.getFileObject(fileQueryResult.first().getUri(), -1, -1); assertEquals(content, fileObject.readLine()); }
@Test public void deleteFolderTest() throws CatalogException, IOException { List<File> folderFiles = new LinkedList<>(); File folder = createBasicDirectoryFileTestEnvironment(folderFiles); CatalogIOManager ioManager = catalogManager.getCatalogIOManagerFactory().get(catalogManager.getFileManager().getUri(folder)); for (File file : folderFiles) { assertTrue(ioManager.exists(catalogManager.getFileManager().getUri(file))); } catalogManager.getFileManager().create(studyFqn, File.Type.FILE, File.Format.PLAIN, File.Bioformat.NONE, "folder/subfolder/subsubfolder/my_staged.txt", null, null, new File.FileStatus(File.FileStatus.STAGE), (long) 0, (long) -1, null, (long) -1, null, null, true, null, null, sessionIdUser).first(); WriteResult deleteResult = catalogManager.getFileManager().delete(studyFqn, new Query(FileDBAdaptor.QueryParams.UID.key(), folder.getUid()), null, sessionIdUser); assertEquals(0, deleteResult.getNumModified()); File fileTmp = catalogManager.getFileManager().get(studyFqn, folder.getPath(), null, sessionIdUser).first(); assertEquals("Folder name should not be modified", folder.getPath(), fileTmp.getPath()); assertTrue(ioManager.exists(fileTmp.getUri())); for (File file : folderFiles) { fileTmp = catalogManager.getFileManager().get(studyFqn, file.getPath(), null, sessionIdUser).first(); assertEquals("File name should not be modified", file.getPath(), fileTmp.getPath()); assertTrue("File uri: " + fileTmp.getUri() + " should exist", ioManager.exists(fileTmp.getUri())); } }
public QueryResult<File> createFile(String studyStr, String path, String description, boolean parents, String content, String sessionId) throws CatalogException { ParamUtils.checkPath(path, "filePath"); String userId = catalogManager.getUserManager().getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); if (path.startsWith("/")) { path = path.substring(1); } switch (checkPathExists(path, study.getUid())) { case FREE_PATH: return create(studyStr, File.Type.FILE, File.Format.PLAIN, File.Bioformat.UNKNOWN, path, null, description, new File.FileStatus(File.FileStatus.READY), 0, -1, null, -1, null, null, parents, content, new QueryOptions(), sessionId); case FILE_EXISTS: case DIRECTORY_EXISTS: default: throw new CatalogException("A file or folder with the same name already exists in the path of Catalog"); } }
@Test public void assignPermissionsRecursively() throws Exception { Path folderPath = Paths.get("data", "new", "folder"); catalogManager.getFileManager().createFolder(studyFqn, folderPath.toString(), null, true, null, QueryOptions.empty(), sessionIdUser).first(); Path filePath = Paths.get("data", "file1.txt"); fileManager.create(studyFqn, File.Type.FILE, File.Format.UNKNOWN, File.Bioformat.UNKNOWN, filePath.toString(), "", "", new File.FileStatus(), 10, -1, null, -1, null, null, true, "My content", null, sessionIdUser); List<QueryResult<FileAclEntry>> queryResults = fileManager.updateAcl(studyFqn, Arrays.asList("data/new/", filePath.toString()), "user2", new File.FileAclParams("VIEW", AclParams.Action.SET, null), sessionIdUser); assertEquals(3, queryResults.size()); for (QueryResult<FileAclEntry> queryResult : queryResults) { assertEquals("user2", queryResult.getResult().get(0).getMember()); assertEquals(1, queryResult.getResult().get(0).getPermissions().size()); assertEquals(FileAclEntry.FilePermissions.VIEW, queryResult.getResult().get(0).getPermissions().iterator().next()); } }
@Test public void testDownloadFile() throws CatalogException, IOException, InterruptedException { String fileName = "item." + TimeUtils.getTimeMillis() + ".vcf"; int fileSize = 200; byte[] bytesOrig = StringUtils.randomString(fileSize).getBytes(); QueryResult<File> queryResult = catalogManager.getFileManager().create(studyFqn, File.Type.FILE, File.Format.PLAIN, File.Bioformat.NONE, "data/" + fileName, null, "description", new File.FileStatus(File.FileStatus.STAGE), 0, -1, null, -1, null, null, true, null, null, sessionIdUser); new FileUtils(catalogManager).upload(new ByteArrayInputStream(bytesOrig), queryResult.first(), sessionIdUser, false, false, true); File file = catalogManager.getFileManager().get(studyFqn, queryResult.first().getPath(), null, sessionIdUser).first(); DataInputStream dis = catalogManager.getFileManager().download(studyFqn, file.getPath(), -1, -1, null, sessionIdUser); byte[] bytes = new byte[fileSize]; dis.read(bytes, 0, fileSize); assertTrue(Arrays.equals(bytesOrig, bytes)); }
@Test public void deleteFilesTest2() throws CatalogException, IOException { QueryResult<File> queryResult = catalogManager.getFileManager().create(studyFqn, File.Type.FILE, File.Format.PLAIN, File.Bioformat.NONE, "my.txt", null, "", new File.FileStatus(File.FileStatus.STAGE), 0, -1, null, -1, null, null, false, null, null, userSessionId); new FileUtils(catalogManager).upload(new ByteArrayInputStream(StringUtils.randomString(200) .getBytes()), queryResult.first(), userSessionId, false, false, true); File file = catalogManager.getFileManager().get(studyFqn, queryResult.first().getPath(), null, userSessionId).first(); CatalogIOManager ioManager = catalogManager.getCatalogIOManagerFactory().get(file.getUri()); assertTrue(ioManager.exists(file.getUri())); catalogManager.getFileManager().delete(studyFqn, new Query(FileDBAdaptor.QueryParams.UID.key(), file.getUid()), null, userSessionId); assertTrue(ioManager.exists(file.getUri())); // catalogFileUtils.delete(file.getId(), userSessionId); // assertTrue(!ioManager.exists(catalogManager.getFileUri(catalogManager.getFile(file.getId(), userSessionId).first()))); }
@Test public void testIndexFromAvro() throws Exception { URI uri = getClass().getResource("/biofiles/variant-test-file.vcf.gz").toURI(); File file = fileManager.link(studyFqn, uri, "data", null, sessionIdUser).first(); fileManager.create(studyFqn, File.Type.FILE, File.Format.AVRO, null, "data/variant-test-file.vcf.gz.variants.avro.gz", "", "description", new File.FileStatus(File.FileStatus.READY), 0, -1, Collections.emptyList(), -1, Collections.emptyMap(), Collections.emptyMap(), true, "asdf", new QueryOptions(), sessionIdUser); fileManager.link(studyFqn, getClass().getResource("/biofiles/variant-test-file.vcf.gz.file.json.gz").toURI(), "data", null, sessionIdUser).first(); Job job = fileManager.index(studyFqn, Collections.singletonList("variant-test-file.vcf.gz.variants.avro.gz"), "VCF", null, sessionIdUser).first(); assertEquals(file.getUid(), job.getInput().get(0).getUid()); }
@Test public void testIndexFromAvroIncomplete() throws Exception { URI uri = getClass().getResource("/biofiles/variant-test-file.vcf.gz").toURI(); File file = fileManager.link(studyFqn, uri, "data", null, sessionIdUser).first(); fileManager.create(studyFqn, File.Type.FILE, File.Format.AVRO, null, "data/variant-test-file.vcf.gz.variants.avro.gz", "", "description", new File.FileStatus(File.FileStatus.READY), 0, -1, Collections.emptyList(), -1, Collections.emptyMap(), Collections.emptyMap(), true, "asdf", new QueryOptions(), sessionIdUser); // fileManager.link(getClass().getResource("/biofiles/variant-test-file.vcf.gz.file.json.gz").toURI(), "data", studyUid, null, sessionIdUser).first(); thrown.expect(CatalogException.class); thrown.expectMessage("The file variant-test-file.vcf.gz.variants.avro.gz is not a VCF file."); fileManager.index(studyFqn, Collections.singletonList("variant-test-file.vcf.gz.variants.avro.gz"), "VCF", null, sessionIdUser).first(); }
@Test public void testUpdateIndexStatus() throws CatalogException { QueryResult<File> fileResult = fileManager.create(studyFqn, File.Type.FILE, File.Format.VCF, File.Bioformat.VARIANT, "data/test.vcf", "", "description", new File.FileStatus(File.FileStatus.STAGE), 0, -1, Collections.emptyList(), -1, Collections.emptyMap(), Collections.emptyMap(), true, null, new QueryOptions(), sessionIdUser); fileManager.updateFileIndexStatus(fileResult.first(), FileIndex.IndexStatus.TRANSFORMED, null, sessionIdUser); QueryResult<File> read = fileManager.get(studyFqn, fileResult.first().getPath(), new QueryOptions(), sessionIdUser); assertEquals(FileIndex.IndexStatus.TRANSFORMED, read.first().getIndex().getStatus().getName()); }
@Test public void renameFileAlreadyExists() throws CatalogException { catalogManager.getFileManager().createFolder(studyFqn, "analysis/", new File.FileStatus(), false, "", new QueryOptions(), sessionIdUser); thrown.expect(CatalogException.class); thrown.expectMessage("already exists"); catalogManager.getFileManager().rename(studyFqn, "data/", "analysis", sessionIdUser); }