@Override public NetworkCacheService createService(ServiceCreationContext context) { return new LocalNetworkCacheService(); } }
private static ScriptResult<Network> loadNetworkFromProjectCase(ProjectCase projectCase) { if (projectCase instanceof ImportedCase) { return loadNetworkFromImportedCase((ImportedCase) projectCase); } else if (projectCase instanceof VirtualCase) { return loadNetworkFromVirtualCase((VirtualCase) projectCase); } else { throw new AssertionError("ProjectCase implementation " + projectCase.getClass().getName() + " not supported"); } }
private static ScriptResult<Network> loadNetworkFromVirtualCase(VirtualCase virtualCase) { ProjectCase baseCase = (ProjectCase) virtualCase.getCase() .orElseThrow(() -> new AfsException("Case link is dead")); ScriptResult<Network> network = loadNetworkFromProjectCase(baseCase); if (network.getError() != null) { return network; } ModificationScript script = virtualCase.getScript() .orElseThrow(VirtualCase::createScriptLinkIsDeadException); LOGGER.info("Applying script to network of project case {}", virtualCase.getId()); return applyScript(network.getValue(), network.getOutput(), script); }
@Override public <T extends ProjectFile & ProjectCase> String queryNetwork(T projectCase, ScriptType scriptType, String scriptContent) { Objects.requireNonNull(projectCase); Objects.requireNonNull(scriptType); Objects.requireNonNull(scriptContent); Network network = getNetwork(projectCase); ScriptResult<Object> result = ScriptUtils.runScript(network, ScriptType.GROOVY, scriptContent); if (result.getError() != null) { throw new ScriptException(projectCase, result.getError()); } return JsonOutput.toJson(result.getValue()); }
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(); } }); }