From c8da91b39f07f40b69548082172de54dca56ef64 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Tue, 28 Aug 2018 14:40:43 +0300 Subject: [PATCH] Actions to kotlin. Actions cleanup --- .../src/main/java/inr/numass/Main.java | 176 ------------------ .../models/TransmissionInterpolator.java | 13 +- .../main/kotlin/inr/numass/NumassPlugin.kt | 3 +- .../inr/numass/actions/AnalyzeDataAction.kt | 2 +- .../main/kotlin/inr/numass/viewer/Cache.kt | 2 +- .../main/kotlin/inr/numass/viewer/HVView.kt | 4 +- .../kotlin/inr/numass/viewer/StorageView.kt | 4 +- 7 files changed, 14 insertions(+), 190 deletions(-) delete mode 100644 numass-main/src/main/java/inr/numass/Main.java diff --git a/numass-main/src/main/java/inr/numass/Main.java b/numass-main/src/main/java/inr/numass/Main.java deleted file mode 100644 index 591e44a7..00000000 --- a/numass-main/src/main/java/inr/numass/Main.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2015 Alexander Nozik. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package inr.numass; - -import hep.dataforge.actions.ActionUtils; -import hep.dataforge.context.Context; -import hep.dataforge.context.Global; -import hep.dataforge.io.MetaFileReader; -import hep.dataforge.meta.Meta; -import org.apache.commons.cli.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.swing.*; -import javax.swing.filechooser.FileFilter; -import javax.swing.filechooser.FileNameExtensionFilter; -import java.io.File; -import java.io.FileNotFoundException; -import java.nio.file.Files; -import java.util.Locale; - -import static inr.numass.Numass.printDescription; -import static java.util.Locale.setDefault; - -/** - * - */ -public class Main { - - public static void main(String[] args) throws Exception { - setDefault(Locale.US); - - Context context = Numass.buildContext(); - run(context, args); - } - - public static void run(Context context, String[] args) throws Exception { - if(context == null){ - context = Global.INSTANCE; - } - Logger logger = LoggerFactory.getLogger("numass-main"); - - Options options = prepareOptions(); - CommandLineParser parser = new DefaultParser(); - CommandLine line; - try { - // parse the command line arguments - line = parser.parse(options, args); - } catch (ParseException exp) { - // oops, something went wrong - logger.error("Command line error. Reason: " + exp.getMessage()); - return; - } - - if (line.hasOption("l")) { - printDescription(context); - return; - } - - String cfgPath; - - if (args.length == 0) { - HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp("java -jar DataReader.jar [OPTIONS]", options); - System.out.println("Trying to use default config location..."); - } - - if (line.hasOption("c")) { - cfgPath = line.getOptionValue("c"); - if (cfgPath == null) { - logger.info("Configutation path not provided."); - return; - } - - java.nio.file.Path configFile = context.getRootDir().resolve(cfgPath); - - if (!Files.exists(configFile)) { - throw new FileNotFoundException("Configuration file not found"); - } - - Meta config = MetaFileReader.Companion.read(configFile); - - context.setValue(Context.ROOT_DIRECTORY_CONTEXT_KEY, configFile.getParent().toString()); - - applyCLItoContext(line, context); - - ActionUtils.runConfig(context, config); - } - } - - public static void applyCLItoContext(CommandLine line, Context context) throws FileNotFoundException { - File workDir = new File(context.getString(Context.ROOT_DIRECTORY_CONTEXT_KEY)); - - if (line.hasOption("h")) { - workDir = new File(line.getOptionValue("h")); - context.setValue(Context.ROOT_DIRECTORY_CONTEXT_KEY, workDir.toString()); - } - - if (line.hasOption("d")) { - String dataPath = line.getOptionValue("d"); - File dataDir = new File(dataPath); - if (!dataDir.isAbsolute()) { - dataDir = new File(workDir, dataPath); - } - if (dataDir.exists() && dataDir.isDirectory()) { - context.setValue(Context.DATA_DIRECTORY_CONTEXT_KEY, dataDir.getAbsolutePath()); - } else { - throw new FileNotFoundException("Data directory not found"); - } - } - - if (line.hasOption("o")) { - String outPath = line.getOptionValue("o"); - File outDir = new File(outPath); - if (!outDir.isAbsolute()) { - outDir = new File(workDir, outPath); - } - if (!outDir.exists()) { - outDir.mkdirs(); - } - context.setValue(Context.WORK_DIRECTORY_CONTEXT_KEY, outDir.toString()); - } - } - - private static Options prepareOptions() { - Options options = new Options(); - - options.addOption("c", "config", true, "Configuration file path. " - + "If this option is not present, than workbench is launched and all other parameters are ignored."); - options.addOption("h", "home", true, - "Working directory (by default the working directory is the directory where config file is placed)"); - options.addOption("d", "data", true, "Data directory (absolute or relative to working directory)"); - options.addOption("o", "output", true, "Output directory (absolute or relative to working directory)"); - options.addOption("l", "list", false, "List of available actions"); - options.addOption("lc", "list-color", false, "List of available actions with ANSI coloring"); - - return options; - } - - private static String getFilePathFromDialog(String homeDir) throws FileNotFoundException { - //TODO переместить в IOManager - - JFrame frame = new JFrame("Chose a configuration file"); - JFileChooser fc = new JFileChooser(homeDir); - FileFilter xmlFilter = new FileNameExtensionFilter("XML files", "XML", "xml"); -// fc.addChoosableFileFilter(xmlFilter); - - fc.setFileFilter(xmlFilter); - - int returnVal = fc.showOpenDialog(frame); - File file; - if (returnVal == JFileChooser.APPROVE_OPTION) { - file = fc.getSelectedFile(); - frame.dispose(); - return file.getAbsolutePath(); - } else { - frame.dispose(); - return null; - } - - } - -} diff --git a/numass-main/src/main/java/inr/numass/models/TransmissionInterpolator.java b/numass-main/src/main/java/inr/numass/models/TransmissionInterpolator.java index 205894ea..aad425d8 100644 --- a/numass-main/src/main/java/inr/numass/models/TransmissionInterpolator.java +++ b/numass-main/src/main/java/inr/numass/models/TransmissionInterpolator.java @@ -15,14 +15,11 @@ */ package inr.numass.models; -import hep.dataforge.actions.ActionUtils; import hep.dataforge.context.Context; -import hep.dataforge.data.DataNode; import hep.dataforge.io.ColumnedDataReader; import hep.dataforge.meta.Meta; -import hep.dataforge.tables.Table; -import hep.dataforge.tables.ValuesSource; import hep.dataforge.values.Values; +import kotlin.NotImplementedError; import org.apache.commons.math3.analysis.UnivariateFunction; import org.apache.commons.math3.analysis.interpolation.LinearInterpolator; @@ -51,9 +48,11 @@ public class TransmissionInterpolator implements UnivariateFunction { @SuppressWarnings("unchecked") public static TransmissionInterpolator fromAction(Context context, Meta actionAnnotation, String xName, String yName, int nSmooth, double w, double border) throws InterruptedException { - DataNode node = ActionUtils.runConfig(context, actionAnnotation); - ValuesSource data = node.getData().get(); - return new TransmissionInterpolator(data, xName, yName, nSmooth, w, border); + + throw new NotImplementedError(); +// DataNode
node = ActionUtils.runConfig(context, actionAnnotation); +// ValuesSource data = node.getData().get(); +// return new TransmissionInterpolator(data, xName, yName, nSmooth, w, border); } UnivariateFunction func; diff --git a/numass-main/src/main/kotlin/inr/numass/NumassPlugin.kt b/numass-main/src/main/kotlin/inr/numass/NumassPlugin.kt index 228b48f6..b0d7e8b4 100644 --- a/numass-main/src/main/kotlin/inr/numass/NumassPlugin.kt +++ b/numass-main/src/main/kotlin/inr/numass/NumassPlugin.kt @@ -259,8 +259,7 @@ class NumassPlugin : BasicPlugin() { } else if (an.hasMeta("transBuildAction")) { val transBuild = an.getMeta("transBuildAction") try { - return TransmissionInterpolator.fromAction(context, - transBuild, transXName, transYName, nSmooth, w, stitchBorder) + return TransmissionInterpolator.fromAction(context, transBuild, transXName, transYName, nSmooth, w, stitchBorder) } catch (ex: InterruptedException) { throw RuntimeException("Transmission builder failed") } diff --git a/numass-main/src/main/kotlin/inr/numass/actions/AnalyzeDataAction.kt b/numass-main/src/main/kotlin/inr/numass/actions/AnalyzeDataAction.kt index e24495cc..b8434104 100644 --- a/numass-main/src/main/kotlin/inr/numass/actions/AnalyzeDataAction.kt +++ b/numass-main/src/main/kotlin/inr/numass/actions/AnalyzeDataAction.kt @@ -28,7 +28,7 @@ object AnalyzeDataAction : OneToOneAction() { val analyzer = NumassAnalyzer.DEFAULT_ANALYZER val res = analyzer.analyzeSet(input, inputMeta) - push(context, name, NumassUtils.wrap(res, inputMeta)) + render(context, name, NumassUtils.wrap(res, inputMeta)) // output(context, name) { stream -> NumassUtils.write(stream, inputMeta, res) } return res } diff --git a/numass-viewer/src/main/kotlin/inr/numass/viewer/Cache.kt b/numass-viewer/src/main/kotlin/inr/numass/viewer/Cache.kt index 586a5d46..c3bfdc32 100644 --- a/numass-viewer/src/main/kotlin/inr/numass/viewer/Cache.kt +++ b/numass-viewer/src/main/kotlin/inr/numass/viewer/Cache.kt @@ -43,5 +43,5 @@ class CachedPoint(val point: NumassPoint) : NumassPoint by point { } class CachedSet(set: NumassSet) : NumassSet by set { - override val points: List = set.points.map { CachedPoint(it) } + override val points: List by lazy { set.points.map { CachedPoint(it) } } } diff --git a/numass-viewer/src/main/kotlin/inr/numass/viewer/HVView.kt b/numass-viewer/src/main/kotlin/inr/numass/viewer/HVView.kt index ab62c542..aa81a327 100644 --- a/numass-viewer/src/main/kotlin/inr/numass/viewer/HVView.kt +++ b/numass-viewer/src/main/kotlin/inr/numass/viewer/HVView.kt @@ -57,8 +57,8 @@ class HVView : View(title = "High voltage time plot", icon = ImageView(dfIcon)) runLater { container.progress = -1.0 } runGoal("hvData[${change.key}]") { change.valueAdded.getHvData() - } ui {table-> - if(table!= null) { + } ui { table -> + if (table != null) { ((frame[change.key] as? DataPlot) ?: DataPlot(change.key, adapter = Adapters.buildXYAdapter("timestamp", "value")).also { frame.add(it) }) .fillData(table) diff --git a/numass-viewer/src/main/kotlin/inr/numass/viewer/StorageView.kt b/numass-viewer/src/main/kotlin/inr/numass/viewer/StorageView.kt index e4815f1b..63546ce8 100644 --- a/numass-viewer/src/main/kotlin/inr/numass/viewer/StorageView.kt +++ b/numass-viewer/src/main/kotlin/inr/numass/viewer/StorageView.kt @@ -102,7 +102,9 @@ class StorageView(val storage: Storage) : View(title = "Numass storage", icon = //isShowRoot = false root = TreeItem(Container(storage.name, storage)) root.isExpanded = true - lazyPopulate(leafCheck = { !it.value.hasChildren }) { it.value.children } + lazyPopulate(leafCheck = { !it.value.hasChildren }) { + it.value.children + } cellFormat { value -> when (value.content) { is Storage -> {