2 * Copyright (C) The Arvados Authors. All rights reserved.
4 * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
8 package org.arvados.client.logic.collection;
10 import com.google.common.collect.ImmutableList;
11 import org.arvados.client.common.Characters;
14 import java.util.Collection;
15 import java.util.List;
16 import java.util.stream.Collectors;
18 public class ManifestFactory {
20 private Collection<File> files;
21 private List<String> locators;
23 ManifestFactory(Collection<File> files, List<String> locators) {
25 this.locators = locators;
28 public static ManifestFactoryBuilder builder() {
29 return new ManifestFactoryBuilder();
32 public String create() {
33 ImmutableList.Builder<String> builder = new ImmutableList.Builder<String>()
36 long filePosition = 0;
37 for (File file : files) {
38 builder.add(String.format("%d:%d:%s", filePosition, file.length(), file.getName().replace(" ", Characters.SPACE)));
39 filePosition += file.length();
41 String manifest = builder.build().stream().collect(Collectors.joining(" ")).concat(Characters.NEW_LINE);
45 public static class ManifestFactoryBuilder {
46 private Collection<File> files;
47 private List<String> locators;
49 ManifestFactoryBuilder() {
52 public ManifestFactory.ManifestFactoryBuilder files(Collection<File> files) {
57 public ManifestFactory.ManifestFactoryBuilder locators(List<String> locators) {
58 this.locators = locators;
62 public ManifestFactory build() {
63 return new ManifestFactory(files, locators);