/** * @param file File in origin container * @param origin Distribution URL * @return URL to file in distribution */ private URI toUrl(final Path file, final URI origin) { final StringBuilder b = new StringBuilder(String.format("%s://%s", origin.getScheme(), origin.getHost())); if(distribution.getMethod().equals(Distribution.CUSTOM)) { b.append(Path.DELIMITER).append(URIEncoder.encode(PathRelativizer.relativize(origin.getRawPath(), file.getAbsolute()))); } else { if(StringUtils.isNotEmpty(origin.getRawPath())) { b.append(origin.getRawPath()); } if(StringUtils.isNotEmpty(containerService.getKey(file))) { b.append(Path.DELIMITER).append(URIEncoder.encode(containerService.getKey(file))); } } return URI.create(b.toString()).normalize(); }
/** * @param workdir Working directory * @param files Files to archive * @return Archive command */ public String getCompressCommand(final Path workdir, final List<Path> files) { final StringBuilder archive = new StringBuilder(); if(files.size() == 1) { archive.append(this.escape(files.get(0).getAbsolute())); } else { // Use default filename archive.append(this.escape(files.get(0).getParent().getAbsolute())).append(Path.DELIMITER).append("Archive"); } final List<String> command = new ArrayList<String>(); for(Path path : files) { command.add(this.escape(PathRelativizer.relativize(workdir.getAbsolute(), path.getAbsolute()))); } return MessageFormat.format(preferences.getProperty(String.format("archive.command.create.%s", this.getIdentifier())), archive.toString(), StringUtils.join(command, " "), this.escape(workdir.getAbsolute())); }
/** * @return Path relative to the container name */ public String getKey(final Path file) { if(file.isRoot()) { return null; } if(this.isContainer(file)) { return null; } return PathRelativizer.relativize(this.getContainer(file).getAbsolute(), file.getAbsolute()); } }
@Override public DescriptiveUrlBag toUrl(final Path file) { final DescriptiveUrlBag list = new DescriptiveUrlBag(); final DescriptiveUrl base = this.toUrl(); list.add(new DescriptiveUrl(URI.create(String.format("%s%s", base.getUrl(), URIEncoder.encode( PathNormalizer.normalize(PathRelativizer.relativize(PathNormalizer.normalize(host.getDefaultPath(), true), file.getAbsolute())) ))).normalize(), base.getType(), base.getHelp()) ); return list; }