Global update for storage and control
This commit is contained in:
parent
4f0b12bbad
commit
4e5b3bb885
@ -1,50 +0,0 @@
|
|||||||
package inr.numass.client;
|
|
||||||
|
|
||||||
import hep.dataforge.exceptions.StorageException;
|
|
||||||
import hep.dataforge.meta.Meta;
|
|
||||||
import hep.dataforge.storage.api.Loader;
|
|
||||||
import hep.dataforge.storage.api.Storage;
|
|
||||||
import hep.dataforge.storage.commons.AbstractStorage;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by darksnake on 09-Oct-16.
|
|
||||||
*/
|
|
||||||
public class RemoteNumassStorage extends AbstractStorage {
|
|
||||||
private NumassClient client;
|
|
||||||
|
|
||||||
|
|
||||||
private RemoteNumassStorage(Storage parent, String name, Meta annotation) {
|
|
||||||
super(parent, name, annotation);
|
|
||||||
}
|
|
||||||
|
|
||||||
public RemoteNumassStorage(String name) {
|
|
||||||
super(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getIP() {
|
|
||||||
return meta().getString("numass.server.ip", "192.168.111.1");
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getPort() {
|
|
||||||
return meta().getInt("numass.server.port", 8335);
|
|
||||||
}
|
|
||||||
|
|
||||||
private NumassClient getClient() throws IOException {
|
|
||||||
if (client == null) {
|
|
||||||
client = new NumassClient(getIP(), getPort());
|
|
||||||
}
|
|
||||||
return client;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Loader buildLoader(Meta loaderConfiguration) throws StorageException {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Storage buildShelf(String shelfName, Meta shelfConfiguration) throws StorageException {
|
|
||||||
return new RemoteNumassStorage(this, shelfName, shelfConfiguration);
|
|
||||||
}
|
|
||||||
}
|
|
@ -15,7 +15,6 @@ class BoardView : View("Numass control board") {
|
|||||||
deviceList = vbox {
|
deviceList = vbox {
|
||||||
bindChildren(controller.devices) { DeviceInfoView(it).root }
|
bindChildren(controller.devices) { DeviceInfoView(it).root }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
package inr.numass.cryotemp;
|
package inr.numass.cryotemp;
|
||||||
|
|
||||||
import hep.dataforge.context.Context;
|
import hep.dataforge.context.Context;
|
||||||
|
import hep.dataforge.control.RoleDef;
|
||||||
import hep.dataforge.control.collectors.RegularPointCollector;
|
import hep.dataforge.control.collectors.RegularPointCollector;
|
||||||
import hep.dataforge.control.connections.Roles;
|
import hep.dataforge.control.connections.Roles;
|
||||||
import hep.dataforge.control.connections.StorageConnection;
|
import hep.dataforge.control.connections.StorageConnection;
|
||||||
import hep.dataforge.control.devices.PortSensor;
|
import hep.dataforge.control.devices.PortSensor;
|
||||||
import hep.dataforge.control.devices.annotations.RoleDef;
|
|
||||||
import hep.dataforge.control.measurements.AbstractMeasurement;
|
import hep.dataforge.control.measurements.AbstractMeasurement;
|
||||||
import hep.dataforge.control.measurements.Measurement;
|
import hep.dataforge.control.measurements.Measurement;
|
||||||
import hep.dataforge.control.ports.PortHandler;
|
import hep.dataforge.control.ports.PortHandler;
|
||||||
@ -77,7 +77,7 @@ public class PKT8Device extends PortSensor<PKT8Result> {
|
|||||||
|
|
||||||
public PKT8Device(Context context, Meta meta) {
|
public PKT8Device(Context context, Meta meta) {
|
||||||
setContext(context);
|
setContext(context);
|
||||||
setMetaBase(meta);
|
setMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PointLoader buildLoader(StorageConnection connection) {
|
private PointLoader buildLoader(StorageConnection connection) {
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
package inr.numass.control.msp;
|
package inr.numass.control.msp;
|
||||||
|
|
||||||
import hep.dataforge.context.Context;
|
import hep.dataforge.context.Context;
|
||||||
|
import hep.dataforge.control.RoleDef;
|
||||||
import hep.dataforge.control.connections.Roles;
|
import hep.dataforge.control.connections.Roles;
|
||||||
import hep.dataforge.control.connections.StorageConnection;
|
import hep.dataforge.control.connections.StorageConnection;
|
||||||
import hep.dataforge.control.devices.SingleMeasurementDevice;
|
import hep.dataforge.control.devices.SingleMeasurementDevice;
|
||||||
import hep.dataforge.control.devices.annotations.RoleDef;
|
import hep.dataforge.control.devices.StateDef;
|
||||||
import hep.dataforge.control.devices.annotations.StateDef;
|
|
||||||
import hep.dataforge.control.measurements.AbstractMeasurement;
|
import hep.dataforge.control.measurements.AbstractMeasurement;
|
||||||
import hep.dataforge.control.measurements.Measurement;
|
import hep.dataforge.control.measurements.Measurement;
|
||||||
import hep.dataforge.control.ports.PortHandler;
|
import hep.dataforge.control.ports.PortHandler;
|
||||||
@ -75,7 +75,7 @@ public class MspDevice extends SingleMeasurementDevice implements PortHandler.Po
|
|||||||
|
|
||||||
public MspDevice(Context context, Meta meta) {
|
public MspDevice(Context context, Meta meta) {
|
||||||
setContext(context);
|
setContext(context);
|
||||||
setMetaBase(meta);
|
setMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public MspDevice(String name, Context context, Meta config) {
|
// public MspDevice(String name, Context context, Meta config) {
|
||||||
|
@ -39,15 +39,18 @@ public class NumassControlUtils {
|
|||||||
String numassRun = ClientUtils.getRunName(config);
|
String numassRun = ClientUtils.getRunName(config);
|
||||||
config.getMetaList("storage").forEach(node -> {
|
config.getMetaList("storage").forEach(node -> {
|
||||||
device.getContext().getLogger().debug("Creating storage for device with meta: {}", node);
|
device.getContext().getLogger().debug("Creating storage for device with meta: {}", node);
|
||||||
Storage storage = StorageFactory.buildStorage(device.getContext(), node);
|
//building storage in a separate thread
|
||||||
if (!numassRun.isEmpty()) {
|
new Thread(() -> {
|
||||||
try {
|
Storage storage = StorageFactory.buildStorage(device.getContext(), node);
|
||||||
storage = storage.buildShelf(numassRun, Meta.empty());
|
if (!numassRun.isEmpty()) {
|
||||||
} catch (StorageException e) {
|
try {
|
||||||
device.getContext().getLogger().error("Failed to build shelf", e);
|
storage = storage.buildShelf(numassRun, Meta.empty());
|
||||||
|
} catch (StorageException e) {
|
||||||
|
device.getContext().getLogger().error("Failed to build shelf", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
device.connect(new StorageConnection(storage), Roles.STORAGE_ROLE);
|
||||||
device.connect(new StorageConnection(storage), Roles.STORAGE_ROLE);
|
}).start();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ public class CM32Device extends PortSensor<Double> {
|
|||||||
|
|
||||||
public CM32Device(Context context, Meta meta) {
|
public CM32Device(Context context, Meta meta) {
|
||||||
setContext(context);
|
setContext(context);
|
||||||
setMetaBase(meta);
|
setMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,7 +25,7 @@ public class MKSBaratronDevice extends PortSensor<Double> {
|
|||||||
|
|
||||||
public MKSBaratronDevice(Context context, Meta meta) {
|
public MKSBaratronDevice(Context context, Meta meta) {
|
||||||
setContext(context);
|
setContext(context);
|
||||||
setMetaBase(meta);
|
setMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ package inr.numass.readvac;
|
|||||||
|
|
||||||
import hep.dataforge.context.Context;
|
import hep.dataforge.context.Context;
|
||||||
import hep.dataforge.control.devices.PortSensor;
|
import hep.dataforge.control.devices.PortSensor;
|
||||||
import hep.dataforge.control.devices.annotations.StateDef;
|
import hep.dataforge.control.devices.StateDef;
|
||||||
import hep.dataforge.control.measurements.Measurement;
|
import hep.dataforge.control.measurements.Measurement;
|
||||||
import hep.dataforge.control.measurements.SimpleMeasurement;
|
import hep.dataforge.control.measurements.SimpleMeasurement;
|
||||||
import hep.dataforge.control.ports.PortHandler;
|
import hep.dataforge.control.ports.PortHandler;
|
||||||
@ -35,7 +35,7 @@ public class MKSVacDevice extends PortSensor<Double> {
|
|||||||
|
|
||||||
public MKSVacDevice(Context context, Meta meta) {
|
public MKSVacDevice(Context context, Meta meta) {
|
||||||
setContext(context);
|
setContext(context);
|
||||||
setMetaBase(meta);
|
setMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String talk(String requestContent) throws ControlException {
|
private String talk(String requestContent) throws ControlException {
|
||||||
|
@ -30,7 +30,7 @@ public class MeradatVacDevice extends PortSensor<Double> {
|
|||||||
|
|
||||||
public MeradatVacDevice(Context context, Meta meta) {
|
public MeradatVacDevice(Context context, Meta meta) {
|
||||||
setContext(context);
|
setContext(context);
|
||||||
setMetaBase(meta);
|
setMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -5,17 +5,19 @@
|
|||||||
*/
|
*/
|
||||||
package inr.numass.readvac;
|
package inr.numass.readvac;
|
||||||
|
|
||||||
|
import hep.dataforge.context.Context;
|
||||||
|
import hep.dataforge.control.RoleDef;
|
||||||
import hep.dataforge.control.collectors.PointCollector;
|
import hep.dataforge.control.collectors.PointCollector;
|
||||||
import hep.dataforge.control.collectors.ValueCollector;
|
import hep.dataforge.control.collectors.ValueCollector;
|
||||||
import hep.dataforge.control.connections.Roles;
|
import hep.dataforge.control.connections.Roles;
|
||||||
import hep.dataforge.control.connections.StorageConnection;
|
import hep.dataforge.control.connections.StorageConnection;
|
||||||
import hep.dataforge.control.devices.annotations.RoleDef;
|
import hep.dataforge.control.devices.StateDef;
|
||||||
import hep.dataforge.control.devices.annotations.StateDef;
|
|
||||||
import hep.dataforge.control.measurements.AbstractMeasurement;
|
import hep.dataforge.control.measurements.AbstractMeasurement;
|
||||||
import hep.dataforge.control.measurements.Measurement;
|
import hep.dataforge.control.measurements.Measurement;
|
||||||
import hep.dataforge.control.measurements.Sensor;
|
import hep.dataforge.control.measurements.Sensor;
|
||||||
import hep.dataforge.exceptions.ControlException;
|
import hep.dataforge.exceptions.ControlException;
|
||||||
import hep.dataforge.exceptions.MeasurementException;
|
import hep.dataforge.exceptions.MeasurementException;
|
||||||
|
import hep.dataforge.meta.Meta;
|
||||||
import hep.dataforge.storage.api.PointLoader;
|
import hep.dataforge.storage.api.PointLoader;
|
||||||
import hep.dataforge.storage.commons.LoaderFactory;
|
import hep.dataforge.storage.commons.LoaderFactory;
|
||||||
import hep.dataforge.tables.DataPoint;
|
import hep.dataforge.tables.DataPoint;
|
||||||
@ -45,6 +47,16 @@ import java.util.concurrent.TimeUnit;
|
|||||||
public class VacCollectorDevice extends Sensor<DataPoint> {
|
public class VacCollectorDevice extends Sensor<DataPoint> {
|
||||||
|
|
||||||
private Map<String, Sensor<Double>> sensorMap = new LinkedHashMap<>();
|
private Map<String, Sensor<Double>> sensorMap = new LinkedHashMap<>();
|
||||||
|
private int delay = 5000;
|
||||||
|
|
||||||
|
public VacCollectorDevice() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public VacCollectorDevice(Context context, Meta meta) {
|
||||||
|
setContext(context);
|
||||||
|
setMeta(meta);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setSensors(Iterable<Sensor<Double>> sensors) {
|
public void setSensors(Iterable<Sensor<Double>> sensors) {
|
||||||
sensorMap = new LinkedHashMap<>();
|
sensorMap = new LinkedHashMap<>();
|
||||||
@ -84,7 +96,7 @@ public class VacCollectorDevice extends Sensor<DataPoint> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setDelay(int delay) throws MeasurementException {
|
public void setDelay(int delay) throws MeasurementException {
|
||||||
getConfig().setValue("delay", delay);
|
this.delay = 5000;
|
||||||
if (isMeasuring()) {
|
if (isMeasuring()) {
|
||||||
getMeasurement().stop(false);
|
getMeasurement().stop(false);
|
||||||
getMeasurement().start();
|
getMeasurement().start();
|
||||||
@ -119,7 +131,7 @@ public class VacCollectorDevice extends Sensor<DataPoint> {
|
|||||||
sensorMap.values().forEach((sensor) -> {
|
sensorMap.values().forEach((sensor) -> {
|
||||||
try {
|
try {
|
||||||
Object value;
|
Object value;
|
||||||
if(sensor.optBooleanState("disabled").orElse(false)){
|
if (sensor.optBooleanState("disabled").orElse(false)) {
|
||||||
value = null;
|
value = null;
|
||||||
} else {
|
} else {
|
||||||
value = sensor.read();
|
value = sensor.read();
|
||||||
@ -129,7 +141,7 @@ public class VacCollectorDevice extends Sensor<DataPoint> {
|
|||||||
collector.put(sensor.getName(), Value.NULL);
|
collector.put(sensor.getName(), Value.NULL);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, 0, meta().getInt("delay", 5000), TimeUnit.MILLISECONDS);
|
}, 0, delay, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,8 +38,7 @@ public class VacDeviceFactory implements DeviceFactory<VacCollectorDevice> {
|
|||||||
List<Sensor<Double>> sensors = config.getMetaList("sensor").stream()
|
List<Sensor<Double>> sensors = config.getMetaList("sensor").stream()
|
||||||
.map(sensorConfig -> buildSensor(context, sensorConfig)).collect(Collectors.toList());
|
.map(sensorConfig -> buildSensor(context, sensorConfig)).collect(Collectors.toList());
|
||||||
|
|
||||||
VacCollectorDevice collector = new VacCollectorDevice();
|
VacCollectorDevice collector = new VacCollectorDevice(context, config);
|
||||||
collector.configure(config);
|
|
||||||
collector.setSensors(sensors);
|
collector.setSensors(sensors);
|
||||||
return collector;
|
return collector;
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,7 @@ public class NumassDataFactory extends DataFactory<NumassData> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void buildChildren(Context context, DataTree.Builder<NumassData> builder, DataFilter filter, Meta meta) {
|
protected void buildChildren(Context context, DataTree.Builder<NumassData> builder, DataFilter filter, Meta meta) {
|
||||||
NumassStorage storage = NumassStorage.buildNumassRoot(
|
NumassStorage storage = new NumassStorage(context,meta);
|
||||||
meta.getString("path"),
|
|
||||||
meta.getBoolean("readOnly", true),
|
|
||||||
meta.getBoolean("monitor", false)
|
|
||||||
);
|
|
||||||
StorageUtils.loaderStream(storage).forEach(pair -> {
|
StorageUtils.loaderStream(storage).forEach(pair -> {
|
||||||
if (pair.getValue() instanceof NumassData) {
|
if (pair.getValue() instanceof NumassData) {
|
||||||
builder.putStatic(pair.getKey(), (NumassData) pair.getValue());
|
builder.putStatic(pair.getKey(), (NumassData) pair.getValue());
|
||||||
|
@ -15,14 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
package inr.numass.storage;
|
package inr.numass.storage;
|
||||||
|
|
||||||
|
import hep.dataforge.context.Context;
|
||||||
import hep.dataforge.events.BasicEvent;
|
import hep.dataforge.events.BasicEvent;
|
||||||
import hep.dataforge.events.EventBuilder;
|
import hep.dataforge.events.EventBuilder;
|
||||||
import hep.dataforge.exceptions.StorageException;
|
import hep.dataforge.exceptions.StorageException;
|
||||||
import hep.dataforge.meta.Meta;
|
import hep.dataforge.meta.Meta;
|
||||||
import hep.dataforge.meta.MetaBuilder;
|
|
||||||
import hep.dataforge.storage.filestorage.FilePointLoader;
|
import hep.dataforge.storage.filestorage.FilePointLoader;
|
||||||
import hep.dataforge.storage.filestorage.FileStorage;
|
import hep.dataforge.storage.filestorage.FileStorage;
|
||||||
import hep.dataforge.storage.filestorage.VFSUtils;
|
|
||||||
import inr.numass.data.NMFile;
|
import inr.numass.data.NMFile;
|
||||||
import inr.numass.data.NumassData;
|
import inr.numass.data.NumassData;
|
||||||
import org.apache.commons.io.FilenameUtils;
|
import org.apache.commons.io.FilenameUtils;
|
||||||
@ -35,7 +34,6 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.URI;
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -56,87 +54,17 @@ public class NumassStorage extends FileStorage {
|
|||||||
|
|
||||||
public static final String NUMASS_ZIP_EXTENSION = ".nm.zip";
|
public static final String NUMASS_ZIP_EXTENSION = ".nm.zip";
|
||||||
public static final String NUMASS_DATA_LOADER_TYPE = "numassData";
|
public static final String NUMASS_DATA_LOADER_TYPE = "numassData";
|
||||||
public static final String GROUP_META_FILE = "numass_group_meta";
|
|
||||||
|
|
||||||
protected NumassStorage(FileStorage parent, String path, Meta config) throws StorageException {
|
protected NumassStorage(FileStorage parent, String path, Meta config) throws StorageException {
|
||||||
super(parent, path, config);
|
super(parent, path, config);
|
||||||
super.refresh();
|
super.refresh();
|
||||||
//TODO read meta from numass_group_meta to .numass element
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected NumassStorage(FileObject dir, Meta config) throws StorageException {
|
public NumassStorage(Context context, Meta config) throws StorageException {
|
||||||
super(dir, config);
|
super(context, config);
|
||||||
super.refresh();
|
super.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Create root numass storage
|
|
||||||
*
|
|
||||||
* @param dir
|
|
||||||
* @param readOnly
|
|
||||||
* @return
|
|
||||||
* @throws StorageException
|
|
||||||
*/
|
|
||||||
public static NumassStorage buildLocalNumassRoot(File dir, boolean readOnly, boolean monitor) throws StorageException {
|
|
||||||
try {
|
|
||||||
Meta meta = new MetaBuilder("storage")
|
|
||||||
.setValue("type", "file.numass")
|
|
||||||
.setValue("readOnly", readOnly)
|
|
||||||
.setValue("monitor", monitor);
|
|
||||||
return new NumassStorage(VFSUtils.getLocalFile(dir), meta);
|
|
||||||
} catch (FileSystemException ex) {
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static NumassStorage buildLocalNumassRoot(File dir, boolean readOnly) throws StorageException {
|
|
||||||
return buildLocalNumassRoot(dir, readOnly, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static NumassStorage buildRemoteNumassRoot(String ip, int port, String login, String password, String path) throws StorageException {
|
|
||||||
try {
|
|
||||||
Meta meta = new MetaBuilder("storage")
|
|
||||||
.setValue("type", "file.numass")
|
|
||||||
.setValue("readOnly", true)
|
|
||||||
.setValue("monitor", false);
|
|
||||||
return new NumassStorage(VFSUtils.getRemoteFile(ip, port, login, password, path), meta);
|
|
||||||
} catch (FileSystemException ex) {
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static NumassStorage buildNumassStorage(FileStorage parent, String path, boolean readOnly, boolean monitor) throws StorageException {
|
|
||||||
Meta meta = new MetaBuilder("storage")
|
|
||||||
.setValue("type", "file.numass")
|
|
||||||
.setValue("readOnly", readOnly)
|
|
||||||
.setValue("monitor", monitor);
|
|
||||||
return new NumassStorage(parent, path, meta);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static NumassStorage buildNumassRoot(String uri, boolean readOnly, boolean monitor) {
|
|
||||||
try {
|
|
||||||
Meta meta = new MetaBuilder("storage")
|
|
||||||
.setValue("type", "file.numass")
|
|
||||||
.setValue("readOnly", readOnly)
|
|
||||||
.setValue("monitor", monitor);
|
|
||||||
return new NumassStorage(VFSUtils.getFile(uri), meta);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static NumassStorage buildNumassRoot(URI uri, boolean readOnly, boolean monitor) {
|
|
||||||
try {
|
|
||||||
Meta meta = new MetaBuilder("storage")
|
|
||||||
.setValue("type", "file.numass")
|
|
||||||
.setValue("readOnly", readOnly)
|
|
||||||
.setValue("monitor", monitor);
|
|
||||||
return new NumassStorage(VFSUtils.getFile(uri), meta);
|
|
||||||
} catch (Exception ex) {
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateDirectoryLoaders() {
|
protected void updateDirectoryLoaders() {
|
||||||
try {
|
try {
|
||||||
|
@ -0,0 +1,90 @@
|
|||||||
|
package inr.numass.storage;
|
||||||
|
|
||||||
|
import hep.dataforge.context.Context;
|
||||||
|
import hep.dataforge.meta.Meta;
|
||||||
|
import hep.dataforge.storage.api.Storage;
|
||||||
|
import hep.dataforge.storage.api.StorageType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by darksnake on 17-May-17.
|
||||||
|
*/
|
||||||
|
public class NumassStorageFactory implements StorageType {
|
||||||
|
// /**
|
||||||
|
// * Create root numass storage
|
||||||
|
// *
|
||||||
|
// * @param dir
|
||||||
|
// * @param readOnly
|
||||||
|
// * @return
|
||||||
|
// * @throws StorageException
|
||||||
|
// */
|
||||||
|
// public static NumassStorage buildLocalNumassRoot(File dir, boolean readOnly, boolean monitor) throws StorageException {
|
||||||
|
// try {
|
||||||
|
// Meta meta = new MetaBuilder("storage")
|
||||||
|
// .setValue("type", "file.numass")
|
||||||
|
// .setValue("readOnly", readOnly)
|
||||||
|
// .setValue("monitor", monitor);
|
||||||
|
// return new NumassStorage(VFSUtils.getLocalFile(dir), meta);
|
||||||
|
// } catch (FileSystemException ex) {
|
||||||
|
// throw new RuntimeException(ex);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static NumassStorage buildLocalNumassRoot(File dir, boolean readOnly) throws StorageException {
|
||||||
|
// return buildLocalNumassRoot(dir, readOnly, false);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static NumassStorage buildRemoteNumassRoot(String ip, int port, String login, String password, String path) throws StorageException {
|
||||||
|
// try {
|
||||||
|
// Meta meta = new MetaBuilder("storage")
|
||||||
|
// .setValue("type", "file.numass")
|
||||||
|
// .setValue("readOnly", true)
|
||||||
|
// .setValue("monitor", false);
|
||||||
|
// return new NumassStorage(VFSUtils.getRemoteFile(ip, port, login, password, path), meta);
|
||||||
|
// } catch (FileSystemException ex) {
|
||||||
|
// throw new RuntimeException(ex);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static NumassStorage buildNumassStorage(FileStorage parent, String path, boolean readOnly, boolean monitor) throws StorageException {
|
||||||
|
// Meta meta = new MetaBuilder("storage")
|
||||||
|
// .setValue("type", "file.numass")
|
||||||
|
// .setValue("readOnly", readOnly)
|
||||||
|
// .setValue("monitor", monitor);
|
||||||
|
// return new NumassStorage(parent, path, meta);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static NumassStorage buildNumassRoot(String uri, boolean readOnly, boolean monitor) {
|
||||||
|
// try {
|
||||||
|
// Meta meta = new MetaBuilder("storage")
|
||||||
|
// .setValue("type", "file.numass")
|
||||||
|
// .setValue("readOnly", readOnly)
|
||||||
|
// .setValue("monitor", monitor);
|
||||||
|
// return new NumassStorage(VFSUtils.getFile(uri), meta);
|
||||||
|
// } catch (Exception ex) {
|
||||||
|
// throw new RuntimeException(ex);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public static NumassStorage buildNumassRoot(URI uri, boolean readOnly, boolean monitor) {
|
||||||
|
// try {
|
||||||
|
// Meta meta = new MetaBuilder("storage")
|
||||||
|
// .setValue("type", "file.numass")
|
||||||
|
// .setValue("readOnly", readOnly)
|
||||||
|
// .setValue("monitor", monitor);
|
||||||
|
// return new NumassStorage(VFSUtils.getFile(uri), meta);
|
||||||
|
// } catch (Exception ex) {
|
||||||
|
// throw new RuntimeException(ex);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String type() {
|
||||||
|
return "numass";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Storage build(Context context, Meta meta) {
|
||||||
|
return new NumassStorage(context, meta);
|
||||||
|
}
|
||||||
|
}
|
@ -1,22 +0,0 @@
|
|||||||
package inr.numass.actions;
|
|
||||||
|
|
||||||
import hep.dataforge.actions.OneToOneAction;
|
|
||||||
import hep.dataforge.context.Context;
|
|
||||||
import hep.dataforge.description.TypedActionDef;
|
|
||||||
import hep.dataforge.meta.Laminate;
|
|
||||||
import inr.numass.storage.NumassStorage;
|
|
||||||
|
|
||||||
import java.net.URI;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO generalize and move to dataforge-stoage
|
|
||||||
* Create a Storage from given URI object
|
|
||||||
* Created by darksnake on 29-Jan-17.
|
|
||||||
*/
|
|
||||||
@TypedActionDef(name = "buildStorage", inputType = URI.class, outputType = NumassStorage.class)
|
|
||||||
public class BuildStorageAction extends OneToOneAction<URI, NumassStorage> {
|
|
||||||
@Override
|
|
||||||
protected NumassStorage execute(Context context, String name, URI input, Laminate inputMeta) {
|
|
||||||
return NumassStorage.buildNumassRoot(input, inputMeta.getBoolean("readOnly", true), inputMeta.getBoolean("monitor", false));
|
|
||||||
}
|
|
||||||
}
|
|
@ -24,6 +24,7 @@ import hep.dataforge.meta.Meta;
|
|||||||
import hep.dataforge.meta.Metoid;
|
import hep.dataforge.meta.Metoid;
|
||||||
import hep.dataforge.storage.api.ObjectLoader;
|
import hep.dataforge.storage.api.ObjectLoader;
|
||||||
import hep.dataforge.storage.api.StateLoader;
|
import hep.dataforge.storage.api.StateLoader;
|
||||||
|
import hep.dataforge.storage.api.Storage;
|
||||||
import hep.dataforge.storage.commons.LoaderFactory;
|
import hep.dataforge.storage.commons.LoaderFactory;
|
||||||
import hep.dataforge.storage.commons.MessageFactory;
|
import hep.dataforge.storage.commons.MessageFactory;
|
||||||
import hep.dataforge.values.Value;
|
import hep.dataforge.values.Value;
|
||||||
@ -52,7 +53,7 @@ public class NumassRun implements Metoid, Responder {
|
|||||||
/**
|
/**
|
||||||
* The Numass storage for this run (it could be not root)
|
* The Numass storage for this run (it could be not root)
|
||||||
*/
|
*/
|
||||||
private final NumassStorage storage;
|
private final Storage storage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default state loader for this run
|
* Default state loader for this run
|
||||||
@ -68,7 +69,7 @@ public class NumassRun implements Metoid, Responder {
|
|||||||
// * A set with inverted order of elements (last note first)
|
// * A set with inverted order of elements (last note first)
|
||||||
// */
|
// */
|
||||||
// private final Set<NumassNote> notes = new TreeSet<>((NumassNote o1, NumassNote o2) -> -o1.time().compareTo(o2.time()));
|
// private final Set<NumassNote> notes = new TreeSet<>((NumassNote o1, NumassNote o2) -> -o1.time().compareTo(o2.time()));
|
||||||
public NumassRun(String path, NumassStorage workStorage, MessageFactory factory) throws StorageException {
|
public NumassRun(String path, Storage workStorage, MessageFactory factory) throws StorageException {
|
||||||
this.storage = workStorage;
|
this.storage = workStorage;
|
||||||
this.states = LoaderFactory.buildStateLoder(storage, RUN_STATE, null);
|
this.states = LoaderFactory.buildStateLoder(storage, RUN_STATE, null);
|
||||||
this.noteLoader = LoaderFactory.buildObjectLoder(storage, RUN_NOTES, null);
|
this.noteLoader = LoaderFactory.buildObjectLoder(storage, RUN_NOTES, null);
|
||||||
@ -167,7 +168,11 @@ public class NumassRun implements Metoid, Responder {
|
|||||||
String filePath = message.meta().getString("path", "");
|
String filePath = message.meta().getString("path", "");
|
||||||
String fileName = message.meta().getString("name")
|
String fileName = message.meta().getString("name")
|
||||||
.replace(NumassStorage.NUMASS_ZIP_EXTENSION, "");// removing .nm.zip if it is present
|
.replace(NumassStorage.NUMASS_ZIP_EXTENSION, "");// removing .nm.zip if it is present
|
||||||
storage.pushNumassData(filePath, fileName, Binary.readToBuffer(message.getData()));
|
if(storage instanceof NumassStorage) {
|
||||||
|
((NumassStorage) storage).pushNumassData(filePath, fileName, Binary.readToBuffer(message.getData()));
|
||||||
|
} else {
|
||||||
|
throw new StorageException("Storage does not support numass point push");
|
||||||
|
}
|
||||||
//TODO add checksum here
|
//TODO add checksum here
|
||||||
return factory.okResponseBase("numass.data.push.response", false, false).build();
|
return factory.okResponseBase("numass.data.push.response", false, false).build();
|
||||||
} catch (StorageException | IOException ex) {
|
} catch (StorageException | IOException ex) {
|
||||||
@ -181,7 +186,7 @@ public class NumassRun implements Metoid, Responder {
|
|||||||
return storage.meta();
|
return storage.meta();
|
||||||
}
|
}
|
||||||
|
|
||||||
public NumassStorage getStorage() {
|
public Storage getStorage() {
|
||||||
return storage;
|
return storage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,15 +15,17 @@
|
|||||||
*/
|
*/
|
||||||
package inr.numass.server;
|
package inr.numass.server;
|
||||||
|
|
||||||
|
import hep.dataforge.context.Context;
|
||||||
|
import hep.dataforge.context.Encapsulated;
|
||||||
import hep.dataforge.exceptions.StorageException;
|
import hep.dataforge.exceptions.StorageException;
|
||||||
import hep.dataforge.io.envelopes.Envelope;
|
import hep.dataforge.io.envelopes.Envelope;
|
||||||
import hep.dataforge.meta.Meta;
|
import hep.dataforge.meta.Meta;
|
||||||
import hep.dataforge.meta.MetaBuilder;
|
import hep.dataforge.meta.MetaBuilder;
|
||||||
import hep.dataforge.storage.api.StateLoader;
|
import hep.dataforge.storage.api.StateLoader;
|
||||||
|
import hep.dataforge.storage.api.Storage;
|
||||||
import hep.dataforge.storage.commons.AbstractNetworkListener;
|
import hep.dataforge.storage.commons.AbstractNetworkListener;
|
||||||
import hep.dataforge.storage.commons.LoaderFactory;
|
import hep.dataforge.storage.commons.LoaderFactory;
|
||||||
import hep.dataforge.storage.commons.StorageManager;
|
import hep.dataforge.storage.commons.StorageManager;
|
||||||
import hep.dataforge.storage.filestorage.FileStorage;
|
|
||||||
import inr.numass.storage.NumassStorage;
|
import inr.numass.storage.NumassStorage;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -35,17 +37,17 @@ import java.io.IOException;
|
|||||||
*
|
*
|
||||||
* @author darksnake
|
* @author darksnake
|
||||||
*/
|
*/
|
||||||
public class NumassServer extends AbstractNetworkListener {
|
public class NumassServer extends AbstractNetworkListener implements Encapsulated {
|
||||||
|
|
||||||
public static final String DEFAULT_RUN_PATH = "default";
|
public static final String DEFAULT_RUN_PATH = "default";
|
||||||
private final Logger logger = LoggerFactory.getLogger("NUMASS-STORAGE");
|
private final Logger logger = LoggerFactory.getLogger("NUMASS-STORAGE");
|
||||||
|
|
||||||
private RatpackServer ratpack;
|
private RatpackServer ratpack;
|
||||||
private FileStorage root;
|
private NumassStorage root;
|
||||||
private StateLoader rootState;
|
private StateLoader rootState;
|
||||||
private NumassRun run;
|
private NumassRun run;
|
||||||
|
|
||||||
public NumassServer(FileStorage storage, Meta listenerConfig) {
|
public NumassServer(NumassStorage storage, Meta listenerConfig) {
|
||||||
super(listenerConfig);
|
super(listenerConfig);
|
||||||
init(storage);
|
init(storage);
|
||||||
}
|
}
|
||||||
@ -61,7 +63,7 @@ public class NumassServer extends AbstractNetworkListener {
|
|||||||
*
|
*
|
||||||
* @param storage
|
* @param storage
|
||||||
*/
|
*/
|
||||||
private void init(FileStorage storage) {
|
private void init(NumassStorage storage) {
|
||||||
new StorageManager().startGlobal();
|
new StorageManager().startGlobal();
|
||||||
this.root = storage;
|
this.root = storage;
|
||||||
try {
|
try {
|
||||||
@ -90,10 +92,15 @@ public class NumassServer extends AbstractNetworkListener {
|
|||||||
// );
|
// );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startRun(Meta annotation) throws StorageException {
|
@Override
|
||||||
String path = annotation.getString("path", DEFAULT_RUN_PATH);
|
public Context getContext() {
|
||||||
//Meta meta = annotation.getMeta("meta", null);
|
return root.getContext();
|
||||||
run = new NumassRun(path, NumassStorage.buildNumassStorage(root, path, false, true), getResponseFactory());
|
}
|
||||||
|
|
||||||
|
private void startRun(Meta meta) throws StorageException {
|
||||||
|
String path = meta.getString("path", DEFAULT_RUN_PATH);
|
||||||
|
NumassStorage storage = root.buildShelf(path,meta);
|
||||||
|
run = new NumassRun(path, storage, getResponseFactory());
|
||||||
getRootState().setValue("numass.current.run", path);
|
getRootState().setValue("numass.current.run", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,7 +144,8 @@ public class NumassServer extends AbstractNetworkListener {
|
|||||||
*/
|
*/
|
||||||
private void updateRun() throws StorageException {
|
private void updateRun() throws StorageException {
|
||||||
String currentRun = getRootState().getString("numass.current.run", DEFAULT_RUN_PATH);
|
String currentRun = getRootState().getString("numass.current.run", DEFAULT_RUN_PATH);
|
||||||
this.run = new NumassRun(currentRun, NumassStorage.buildNumassStorage(root, currentRun, false, true), getResponseFactory());
|
Storage storage = root.optShelf(currentRun).get();
|
||||||
|
this.run = new NumassRun(currentRun, storage, getResponseFactory());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package inr.numass.server;
|
package inr.numass.server;
|
||||||
|
|
||||||
|
import hep.dataforge.context.Context;
|
||||||
|
import hep.dataforge.context.Global;
|
||||||
import hep.dataforge.io.MetaFileReader;
|
import hep.dataforge.io.MetaFileReader;
|
||||||
import hep.dataforge.meta.Meta;
|
import hep.dataforge.meta.Meta;
|
||||||
import hep.dataforge.meta.SimpleConfigurable;
|
import hep.dataforge.meta.SimpleConfigurable;
|
||||||
import inr.numass.storage.NumassStorage;
|
import inr.numass.storage.NumassStorage;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -18,17 +19,17 @@ public class ServerRunner extends SimpleConfigurable implements AutoCloseable {
|
|||||||
public static final String SERVER_CONFIG_PATH = "numass-server.xml";
|
public static final String SERVER_CONFIG_PATH = "numass-server.xml";
|
||||||
private static final String NUMASS_REPO_ELEMENT = "numass.repository";
|
private static final String NUMASS_REPO_ELEMENT = "numass.repository";
|
||||||
private static final String LISTENER_ELEMENT = "listener";
|
private static final String LISTENER_ELEMENT = "listener";
|
||||||
private static final String NUMASS_REPO_PATH_PROPERTY = "numass.repository.path";
|
// private static final String NUMASS_REPO_PATH_PROPERTY = "numass.repository.path";
|
||||||
private final static Logger logger = LoggerFactory.getLogger("NUMASS-SERVER");
|
|
||||||
NumassStorage root;
|
NumassStorage root;
|
||||||
NumassServer listener;
|
NumassServer listener;
|
||||||
|
Context context = Global.getContext("NUMASS_SERVER");
|
||||||
|
|
||||||
public ServerRunner() throws IOException, ParseException {
|
public ServerRunner() throws IOException, ParseException {
|
||||||
// Global.instance().pluginManager().load(StorageManager.class);
|
// Global.instance().pluginManager().load(StorageManager.class);
|
||||||
|
|
||||||
File configFile = new File(SERVER_CONFIG_PATH);
|
File configFile = new File(SERVER_CONFIG_PATH);
|
||||||
if (configFile.exists()) {
|
if (configFile.exists()) {
|
||||||
logger.info("Trying to read server configuration from {}", SERVER_CONFIG_PATH);
|
context.getLogger().info("Trying to read server configuration from {}", SERVER_CONFIG_PATH);
|
||||||
configure(MetaFileReader.read(configFile));
|
configure(MetaFileReader.read(configFile));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,7 +39,7 @@ public class ServerRunner extends SimpleConfigurable implements AutoCloseable {
|
|||||||
r.start();
|
r.start();
|
||||||
|
|
||||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||||
logger.info("Shutting down");
|
LoggerFactory.getLogger("NUMASS-SERVER").info("Shutting down");
|
||||||
r.close();
|
r.close();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -51,15 +52,13 @@ public class ServerRunner extends SimpleConfigurable implements AutoCloseable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ServerRunner start() throws Exception {
|
public ServerRunner start() throws Exception {
|
||||||
String repoPath = meta().getString(NUMASS_REPO_PATH_PROPERTY, ".");
|
// String repoPath = meta().getString(NUMASS_REPO_PATH_PROPERTY, ".");
|
||||||
// Meta repoConfig = null;
|
|
||||||
// if (meta().hasMeta(NUMASS_REPO_ELEMENT)) {
|
|
||||||
// repoConfig = meta().getMeta(NUMASS_REPO_ELEMENT);
|
|
||||||
// }
|
|
||||||
logger.info("Initializing file storage in {}", repoPath);
|
|
||||||
root = NumassStorage.buildLocalNumassRoot(new File(repoPath), true, true);//in(new File(repoPath), repoConfig);
|
|
||||||
|
|
||||||
logger.info("Starting numass server");
|
Meta storageMeta = meta().getMetaOrEmpty(NUMASS_REPO_ELEMENT);
|
||||||
|
context.getLogger().info("Initializing file storage with meta: {}",storageMeta);
|
||||||
|
root = new NumassStorage(context,storageMeta);
|
||||||
|
|
||||||
|
context.getLogger().info("Starting numass server");
|
||||||
if (root != null) {
|
if (root != null) {
|
||||||
root.open();
|
root.open();
|
||||||
Meta listenerConfig = null;
|
Meta listenerConfig = null;
|
||||||
@ -69,9 +68,9 @@ public class ServerRunner extends SimpleConfigurable implements AutoCloseable {
|
|||||||
|
|
||||||
listener = new NumassServer(root, listenerConfig);
|
listener = new NumassServer(root, listenerConfig);
|
||||||
listener.open();
|
listener.open();
|
||||||
logger.info("Successfully started numass server");
|
context.getLogger().info("Successfully started numass server");
|
||||||
} else {
|
} else {
|
||||||
logger.error("Root storage not initialized");
|
context.getLogger().error("Root storage not initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
@ -79,12 +78,12 @@ public class ServerRunner extends SimpleConfigurable implements AutoCloseable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
logger.info("Stopping numass server");
|
context.getLogger().info("Stopping numass server");
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
try {
|
try {
|
||||||
listener.close();
|
listener.close();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Failed to close listener", e);
|
context.getLogger().error("Failed to close listener", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +91,7 @@ public class ServerRunner extends SimpleConfigurable implements AutoCloseable {
|
|||||||
try {
|
try {
|
||||||
root.close();
|
root.close();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
logger.error("Error while closing storage", ex);
|
context.getLogger().error("Error while closing storage", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,10 @@ import hep.dataforge.context.Context;
|
|||||||
import hep.dataforge.context.Global;
|
import hep.dataforge.context.Global;
|
||||||
import hep.dataforge.server.ServerManager;
|
import hep.dataforge.server.ServerManager;
|
||||||
import hep.dataforge.storage.commons.StorageManager;
|
import hep.dataforge.storage.commons.StorageManager;
|
||||||
|
import hep.dataforge.storage.filestorage.FileStorageFactory;
|
||||||
import inr.numass.storage.NumassStorage;
|
import inr.numass.storage.NumassStorage;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,7 +34,7 @@ public class TestServer {
|
|||||||
String path = "D:/temp/test";
|
String path = "D:/temp/test";
|
||||||
context.getLogger().info("Starting test numass storage servlet in '{}'", path);
|
context.getLogger().info("Starting test numass storage servlet in '{}'", path);
|
||||||
|
|
||||||
NumassStorage storage = NumassStorage.buildLocalNumassRoot(new File(path), true, true);
|
NumassStorage storage = new NumassStorage(context, FileStorageFactory.buildStorageMeta(path, true, true));
|
||||||
serverManager.addObject("numass", storage, NumassStorageHandler::new);
|
serverManager.addObject("numass", storage, NumassStorageHandler::new);
|
||||||
|
|
||||||
serverManager.startSetver();
|
serverManager.startSetver();
|
||||||
|
@ -27,8 +27,10 @@ dependencies {
|
|||||||
|
|
||||||
compile 'org.controlsfx:controlsfx:8.40.12'
|
compile 'org.controlsfx:controlsfx:8.40.12'
|
||||||
|
|
||||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:'1.1.2-2"
|
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:'1.1.2-3"
|
||||||
compile "no.tornado:tornadofx:1.7.4"
|
compile "no.tornado:tornadofx:1.7.4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: 'kotlin'
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import hep.dataforge.meta.Metoid
|
|||||||
import hep.dataforge.names.AlphanumComparator
|
import hep.dataforge.names.AlphanumComparator
|
||||||
import hep.dataforge.names.Named
|
import hep.dataforge.names.Named
|
||||||
import hep.dataforge.storage.api.Storage
|
import hep.dataforge.storage.api.Storage
|
||||||
|
import hep.dataforge.storage.filestorage.FileStorageFactory
|
||||||
import inr.numass.NumassProperties
|
import inr.numass.NumassProperties
|
||||||
import inr.numass.data.NumassData
|
import inr.numass.data.NumassData
|
||||||
import inr.numass.storage.NumassStorage
|
import inr.numass.storage.NumassStorage
|
||||||
@ -134,7 +135,7 @@ class MainView : View() {
|
|||||||
work.progress = -1.0
|
work.progress = -1.0
|
||||||
work.status = "Building numass storage tree..."
|
work.status = "Building numass storage tree..."
|
||||||
try {
|
try {
|
||||||
val root = NumassStorage.buildNumassRoot(path, true, false)
|
val root = NumassStorage(context,FileStorageFactory.buildStorageMeta(path,true, true));
|
||||||
setRootStorage(root)
|
setRootStorage(root)
|
||||||
Platform.runLater { storagePathLabel.text = "Storage: " + path }
|
Platform.runLater { storagePathLabel.text = "Storage: " + path }
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
|
Loading…
Reference in New Issue
Block a user