/* * Copyright (C) The Arvados Authors. All rights reserved. * * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0 * */ package org.arvados.client.logic.collection; import com.google.common.collect.ImmutableList; import org.arvados.client.common.Characters; import java.io.File; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; public class ManifestFactory { private Collection files; private List locators; ManifestFactory(Collection files, List locators) { this.files = files; this.locators = locators; } public static ManifestFactoryBuilder builder() { return new ManifestFactoryBuilder(); } public String create() { ImmutableList.Builder builder = new ImmutableList.Builder() .add(Characters.DOT) .addAll(locators); long filePosition = 0; for (File file : files) { builder.add(String.format("%d:%d:%s", filePosition, file.length(), file.getName().replace(" ", Characters.SPACE))); filePosition += file.length(); } String manifest = builder.build().stream().collect(Collectors.joining(" ")).concat(Characters.NEW_LINE); return manifest; } public static class ManifestFactoryBuilder { private Collection files; private List locators; ManifestFactoryBuilder() { } public ManifestFactory.ManifestFactoryBuilder files(Collection files) { this.files = files; return this; } public ManifestFactory.ManifestFactoryBuilder locators(List locators) { this.locators = locators; return this; } public ManifestFactory build() { return new ManifestFactory(files, locators); } } }