/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.examples.marketdata; import java.io.File; import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; import java.util.stream.Collectors; import com.opengamma.strata.collect.Messages; import com.opengamma.strata.collect.io.ResourceLocator; /** * Loads market data from the standard directory structure on disk. */ public class DirectoryMarketDataBuilder extends ExampleMarketDataBuilder { /** * The path to the root of the directory structure. */ private final Path rootPath; /** * Constructs an instance. * * @param rootPath the path to the root of the directory structure */ public DirectoryMarketDataBuilder(Path rootPath) { this.rootPath = rootPath; } //------------------------------------------------------------------------- @Override protected Collection<ResourceLocator> getAllResources(String subdirectoryName) { File dir = rootPath.resolve(subdirectoryName).toFile(); if (!dir.exists()) { throw new IllegalArgumentException(Messages.format("Directory does not exist: {}", dir)); } return Arrays.stream(dir.listFiles()) .filter(f -> !f.isHidden()) .map(ResourceLocator::ofFile) .collect(Collectors.toList()); } @Override protected ResourceLocator getResource(String subdirectoryName, String resourceName) { File file = rootPath.resolve(subdirectoryName).resolve(resourceName).toFile(); if (!file.exists()) { return null; } return ResourceLocator.ofFile(file); } @Override protected boolean subdirectoryExists(String subdirectoryName) { File file = rootPath.resolve(subdirectoryName).toFile(); return file.exists(); } }