
com.powsybl.afs.ext.base.LocalNetworkCacheService Maven / Gradle / Ivy
/**
* Copyright (c) 2017, 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/.
*/
package com.powsybl.afs.ext.base;
import com.powsybl.afs.AfsException;
import com.powsybl.afs.ProjectFile;
import com.powsybl.commons.datasource.ReadOnlyDataSource;
import com.powsybl.iidm.import_.Importer;
import com.powsybl.iidm.network.Network;
import groovy.json.JsonOutput;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Objects;
import java.util.Properties;
import java.util.UUID;
/**
* @author Geoffroy Jamgotchian
*/
public class LocalNetworkCacheService implements NetworkCacheService {
private static final Logger LOGGER = LoggerFactory.getLogger(LocalNetworkCacheService.class);
private final ScriptCache cache;
public LocalNetworkCacheService() {
cache = new ScriptCache<>(50, 1, projectFile -> {
UUID taskId = projectFile.startTask();
try {
projectFile.createLogger(taskId).log("Loading network...");
return loadNetworkFromProjectCase((ProjectCase) projectFile);
} finally {
projectFile.stopTask(taskId);
}
}, (result, listeners) -> {
for (ProjectCaseListener listener : listeners) {
listener.networkUpdated();
}
});
}
private static ScriptResult loadNetworkFromImportedCase(ImportedCase importedCase) {
LOGGER.info("Loading network of project case {}", importedCase.getId());
Importer importer = importedCase.getImporter();
ReadOnlyDataSource dataSource = importedCase.getDataSource();
Properties parameters = importedCase.getParameters();
Network network = importer.importData(dataSource, parameters);
return ScriptResult.of(network);
}
private static ScriptResult applyScript(Network network, String previousScriptOutput, ModificationScript script) {
ScriptResult
© 2015 - 2025 Weber Informatics LLC | Privacy Policy