Tweak test script no issue #
[arvados.git] / src / main / java / org / arvados / client / logic / collection / ManifestFactory.java
1 /*
2  * Copyright (C) The Arvados Authors. All rights reserved.
3  *
4  * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
5  *
6  */
7
8 package org.arvados.client.logic.collection;
9
10 import com.google.common.collect.ImmutableList;
11 import org.arvados.client.common.Characters;
12
13 import java.io.File;
14 import java.util.Collection;
15 import java.util.List;
16 import java.util.stream.Collectors;
17
18 public class ManifestFactory {
19
20     private Collection<File> files;
21     private List<String> locators;
22
23     ManifestFactory(Collection<File> files, List<String> locators) {
24         this.files = files;
25         this.locators = locators;
26     }
27
28     public static ManifestFactoryBuilder builder() {
29         return new ManifestFactoryBuilder();
30     }
31
32     public String create() {
33         ImmutableList.Builder<String> builder = new ImmutableList.Builder<String>()
34                 .add(Characters.DOT)
35                 .addAll(locators);
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();
40         }
41         String manifest = builder.build().stream().collect(Collectors.joining(" ")).concat(Characters.NEW_LINE);
42         return manifest;
43     }
44
45     public static class ManifestFactoryBuilder {
46         private Collection<File> files;
47         private List<String> locators;
48
49         ManifestFactoryBuilder() {
50         }
51
52         public ManifestFactory.ManifestFactoryBuilder files(Collection<File> files) {
53             this.files = files;
54             return this;
55         }
56
57         public ManifestFactory.ManifestFactoryBuilder locators(List<String> locators) {
58             this.locators = locators;
59             return this;
60         }
61
62         public ManifestFactory build() {
63             return new ManifestFactory(files, locators);
64         }
65
66     }
67 }