private static URI getFileLocationURI(URI rootURI, Product product) { File file = product.getFileLocation(); return FileUtils.getRelativeUri(rootURI, file); }
@Test public void testRelativeOneDirHigher() throws IOException { final File deeperRootDir = new File(root, "oneDirDeeper"); final File twoDeeperRootDir = new File(deeperRootDir, "secondDirDeeper"); final File relativeFileTwoDirsHigher = new File(twoDeeperRootDir, "../../lsmf").getCanonicalFile(); final URI uri = FileUtils.getRelativeUri(twoDeeperRootDir.toURI(), relativeFileTwoDirsHigher); final String path = relativeFileTwoDirsHigher.getCanonicalPath().replace("\\", "/"); final String expected = "file:" + (path.startsWith("/") ? path : "/" + path); assertEquals(expected, uri.toString()); } }
@Test public void testRelativeOneDirDeeper() { final File relativeDir = new File(root, "oneDirDeeper"); final File relativeFile = new File(relativeDir, "lsmf"); final URI uri = FileUtils.getRelativeUri(rootURI, relativeFile); assertEquals("oneDirDeeper/lsmf", uri.toString()); }
@Test public void testRelativeInTheRootDir() { final File relativeFile = new File(root, "lsmf"); final URI uri = FileUtils.getRelativeUri(rootURI, relativeFile); assertEquals("lsmf", uri.toString()); }
private static void replaceWithRelativePaths(MetadataElement[] elements, File outputDir) { for (MetadataElement element : elements) { final String pathName = element.getAttributeString(AbstractTimeSeries.PL_PATH); final URI relativeUri = FileUtils.getRelativeUri(outputDir.toURI(), new File(pathName)); final MetadataAttribute pathAttr = element.getAttribute(AbstractTimeSeries.PL_PATH); final MetadataAttribute typeAttr = element.getAttribute(AbstractTimeSeries.PL_TYPE); element.removeAttribute(pathAttr); element.removeAttribute(typeAttr); pathAttr.dispose(); final MetadataAttribute newPathAttr = new MetadataAttribute(AbstractTimeSeries.PL_PATH, ProductData.createInstance(relativeUri.toString()), true); element.addAttribute(newPathAttr); element.addAttribute(typeAttr); } }