private static ScriptResult<Network> applyScript(Network network, String previousScriptOutput, ModificationScript script) { ScriptResult<Object> result = ScriptUtils.runScript(network, script.getScriptType(), script.readScript()); if (result.getError() == null) { return new ScriptResult<>(network, previousScriptOutput + result.getOutput(), null); } else { // return an empty network return new ScriptResult<>(null, result.getOutput(), result.getError()); } }
@Override public Network getNetwork() { return findService(NetworkCacheService.class).getNetwork(this); }
@Override public void removeListener(ProjectCaseListener l) { findService(NetworkCacheService.class).removeListener(this, l); }
@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()); }
@Override protected List<ProjectFileExtension> getProjectFileExtensions() { return ImmutableList.of(new ImportedCaseExtension(createImportersLoader(), new ImportConfig()), new ModificationScriptExtension(), new VirtualCaseExtension()); }
@Override public void invalidateNetworkCache() { findService(NetworkCacheService.class).invalidateCache(this); }
@Override public Network getNetwork() { return findService(NetworkCacheService.class).getNetwork(this); }
@Override public void invalidateNetworkCache() { findService(NetworkCacheService.class).invalidateCache(this); }
@Override public void addListener(ProjectCaseListener l) { findService(NetworkCacheService.class).addListener(this, l); }
@Override public <T extends ProjectFile & ProjectCase> Network getNetwork(T projectCase) { return cache.get(projectCase).getValueOrThrowIfError(projectCase); }
@Override public String queryNetwork(ScriptType scriptType, String scriptContent) { Objects.requireNonNull(scriptType); Objects.requireNonNull(scriptContent); return findService(NetworkCacheService.class).queryNetwork(this, scriptType, scriptContent); }
@Override public VirtualCaseBuilder createProjectFileBuilder(ProjectFileBuildContext context) { return new VirtualCaseBuilder(context); } }
@Override public NetworkCacheService createService(ServiceCreationContext context) { return new LocalNetworkCacheService(); } }
@Override public ModificationScriptBuilder createProjectFileBuilder(ProjectFileBuildContext context) { return new ModificationScriptBuilder(context); } }
@Override public <T extends ProjectFile & ProjectCase> void removeListener(T projectCase, ProjectCaseListener listener) { cache.removeListener(projectCase, listener); } }
public T getValueOrThrowIfError(ProjectFile projectFile) { if (error == null) { return value; } throw new ScriptException(projectFile, error); }
@Override protected String call() { return storableScript.readScript(); } }, context.getExecutor());
@Override public ImportedCaseBuilder createProjectFileBuilder(ProjectFileBuildContext context) { return new ImportedCaseBuilder(context, importersLoader, importConfig); } }
@Override public Case createFile(FileCreationContext context) { return new Case(context, importersLoader); } }
@Override protected void invalidate() { // invalidate network cache findService(NetworkCacheService.class).invalidateCache(this); super.invalidate(); } }