AbstractFileSystemDataSource.java
/*
* Copyright (c) 2024, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.commons.datasource;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Objects;
/**
* @author Nicolas Rol {@literal <nicolas.rol at rte-france.com>}
*/
abstract class AbstractFileSystemDataSource implements DataSource {
final Path directory;
final String baseName;
final String dataExtension;
final CompressionFormat compressionFormat;
final DataSourceObserver observer;
/**
*
* @param directory Directory in which is located the data
* @param baseName Base of the filenames that will be used
* @param observer Data source observer
*/
AbstractFileSystemDataSource(Path directory, String baseName,
String dataExtension,
CompressionFormat compressionFormat,
DataSourceObserver observer) {
this.directory = Objects.requireNonNull(directory);
this.baseName = Objects.requireNonNull(baseName);
this.dataExtension = dataExtension;
this.compressionFormat = compressionFormat;
this.observer = observer;
}
@Override
public boolean isDataExtension(String ext) {
return dataExtension == null || dataExtension.isEmpty() || dataExtension.equals(ext);
}
public Path getDirectory() {
return this.directory;
}
@Override
public String getBaseName() {
return baseName;
}
@Override
public String getDataExtension() {
return dataExtension;
}
public CompressionFormat getCompressionFormat() {
return compressionFormat;
}
String getCompressionExtension() {
return compressionFormat == null ? "" : "." + compressionFormat.getExtension();
}
public DataSourceObserver getObserver() {
return observer;
}
@Override
public boolean exists(String suffix, String ext) throws IOException {
return exists(DataSourceUtil.getFileName(baseName, suffix, ext));
}
}