mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-09-30 00:56:56 +13:00
Refactor
This commit is contained in:
parent
6f912798af
commit
7be90d0666
15 changed files with 81 additions and 42 deletions
|
@ -20,7 +20,6 @@ public class StoreAddExchange implements MessageExchange {
|
||||||
@Builder
|
@Builder
|
||||||
@Value
|
@Value
|
||||||
public static class Request implements RequestMessage {
|
public static class Request implements RequestMessage {
|
||||||
String input;
|
|
||||||
DataStore storeInput;
|
DataStore storeInput;
|
||||||
|
|
||||||
String type;
|
String type;
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class FileStore extends JacksonizedValue implements FilenameStore, Stream
|
||||||
@Override
|
@Override
|
||||||
public void checkComplete() throws Exception {
|
public void checkComplete() throws Exception {
|
||||||
if (fileSystem == null) {
|
if (fileSystem == null) {
|
||||||
throw new IllegalStateException("Machine is missing");
|
throw new IllegalStateException("File system is missing");
|
||||||
}
|
}
|
||||||
if (file == null) {
|
if (file == null) {
|
||||||
throw new IllegalStateException("File is missing");
|
throw new IllegalStateException("File is missing");
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
package io.xpipe.core.impl;
|
||||||
|
|
||||||
|
import io.xpipe.core.charsetter.StreamCharset;
|
||||||
|
import io.xpipe.core.data.node.DataStructureNodeAcceptor;
|
||||||
|
import io.xpipe.core.data.node.TupleNode;
|
||||||
|
import io.xpipe.core.data.type.TupleType;
|
||||||
|
import io.xpipe.core.source.TableReadConnection;
|
||||||
|
import io.xpipe.core.store.StreamDataStore;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
public abstract class PeekTableStreamReadConnection extends StreamReadConnection implements TableReadConnection {
|
||||||
|
|
||||||
|
private TupleNode first;
|
||||||
|
private TupleType type;
|
||||||
|
|
||||||
|
public PeekTableStreamReadConnection(StreamDataStore store, StreamCharset charset) {
|
||||||
|
super(store, charset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() throws Exception {
|
||||||
|
super.init();
|
||||||
|
AtomicReference<TupleNode> read = new AtomicReference<>();
|
||||||
|
withRowsInternal(node -> {
|
||||||
|
read.set(node);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
if (read.get() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
first = read.get().asTuple();
|
||||||
|
type = convertType(first);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected TupleType convertType(TupleNode n) {
|
||||||
|
return n.determineDataType().asTuple();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() throws Exception {
|
||||||
|
if (inputStream == null) {
|
||||||
|
throw new IllegalStateException("Not initialized");
|
||||||
|
}
|
||||||
|
|
||||||
|
inputStream.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TupleType getDataType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void withRows(DataStructureNodeAcceptor<TupleNode> lineAcceptor) throws Exception {
|
||||||
|
if (first != null) {
|
||||||
|
lineAcceptor.accept(first);
|
||||||
|
first = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
withRowsInternal(lineAcceptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void withRowsInternal(DataStructureNodeAcceptor<TupleNode> lineAcceptor) throws Exception;
|
||||||
|
}
|
|
@ -1,7 +1,8 @@
|
||||||
package io.xpipe.core.source;
|
package io.xpipe.core.impl;
|
||||||
|
|
||||||
import io.xpipe.core.charsetter.Charsetter;
|
import io.xpipe.core.charsetter.Charsetter;
|
||||||
import io.xpipe.core.charsetter.StreamCharset;
|
import io.xpipe.core.charsetter.StreamCharset;
|
||||||
|
import io.xpipe.core.source.DataSourceReadConnection;
|
||||||
import io.xpipe.core.store.StreamDataStore;
|
import io.xpipe.core.store.StreamDataStore;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
|
@ -1,6 +1,7 @@
|
||||||
package io.xpipe.core.source;
|
package io.xpipe.core.impl;
|
||||||
|
|
||||||
import io.xpipe.core.charsetter.StreamCharset;
|
import io.xpipe.core.charsetter.StreamCharset;
|
||||||
|
import io.xpipe.core.source.DataSourceConnection;
|
||||||
import io.xpipe.core.store.StreamDataStore;
|
import io.xpipe.core.store.StreamDataStore;
|
||||||
|
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
|
@ -1,7 +1,5 @@
|
||||||
package io.xpipe.core.impl;
|
package io.xpipe.core.impl;
|
||||||
|
|
||||||
import io.xpipe.core.source.StreamReadConnection;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package io.xpipe.core.impl;
|
package io.xpipe.core.impl;
|
||||||
|
|
||||||
import io.xpipe.core.source.StreamWriteConnection;
|
|
||||||
|
|
||||||
public class TextWriteConnection extends StreamWriteConnection implements io.xpipe.core.source.TextWriteConnection {
|
public class TextWriteConnection extends StreamWriteConnection implements io.xpipe.core.source.TextWriteConnection {
|
||||||
|
|
||||||
private final TextSource source;
|
private final TextSource source;
|
||||||
|
|
|
@ -2,7 +2,6 @@ package io.xpipe.core.impl;
|
||||||
|
|
||||||
import io.xpipe.core.data.generic.GenericDataStreamParser;
|
import io.xpipe.core.data.generic.GenericDataStreamParser;
|
||||||
import io.xpipe.core.data.node.DataStructureNode;
|
import io.xpipe.core.data.node.DataStructureNode;
|
||||||
import io.xpipe.core.source.StreamReadConnection;
|
|
||||||
import io.xpipe.core.source.StructureReadConnection;
|
import io.xpipe.core.source.StructureReadConnection;
|
||||||
|
|
||||||
public class XpbsReadConnection extends StreamReadConnection implements StructureReadConnection {
|
public class XpbsReadConnection extends StreamReadConnection implements StructureReadConnection {
|
||||||
|
|
|
@ -2,7 +2,6 @@ package io.xpipe.core.impl;
|
||||||
|
|
||||||
import io.xpipe.core.data.generic.GenericDataStreamWriter;
|
import io.xpipe.core.data.generic.GenericDataStreamWriter;
|
||||||
import io.xpipe.core.data.node.DataStructureNode;
|
import io.xpipe.core.data.node.DataStructureNode;
|
||||||
import io.xpipe.core.source.StreamWriteConnection;
|
|
||||||
import io.xpipe.core.source.StructureWriteConnection;
|
import io.xpipe.core.source.StructureWriteConnection;
|
||||||
|
|
||||||
public class XpbsWriteConnection extends StreamWriteConnection implements StructureWriteConnection {
|
public class XpbsWriteConnection extends StreamWriteConnection implements StructureWriteConnection {
|
||||||
|
|
|
@ -7,7 +7,6 @@ import io.xpipe.core.data.node.TupleNode;
|
||||||
import io.xpipe.core.data.type.TupleType;
|
import io.xpipe.core.data.type.TupleType;
|
||||||
import io.xpipe.core.data.typed.TypedDataStreamParser;
|
import io.xpipe.core.data.typed.TypedDataStreamParser;
|
||||||
import io.xpipe.core.data.typed.TypedDataStructureNodeReader;
|
import io.xpipe.core.data.typed.TypedDataStructureNodeReader;
|
||||||
import io.xpipe.core.source.StreamReadConnection;
|
|
||||||
import io.xpipe.core.source.TableReadConnection;
|
import io.xpipe.core.source.TableReadConnection;
|
||||||
import io.xpipe.core.store.StreamDataStore;
|
import io.xpipe.core.store.StreamDataStore;
|
||||||
import io.xpipe.core.util.JacksonMapper;
|
import io.xpipe.core.util.JacksonMapper;
|
||||||
|
|
|
@ -7,7 +7,6 @@ import io.xpipe.core.data.node.DataStructureNodeAcceptor;
|
||||||
import io.xpipe.core.data.node.TupleNode;
|
import io.xpipe.core.data.node.TupleNode;
|
||||||
import io.xpipe.core.data.type.TupleType;
|
import io.xpipe.core.data.type.TupleType;
|
||||||
import io.xpipe.core.data.typed.TypedDataStreamWriter;
|
import io.xpipe.core.data.typed.TypedDataStreamWriter;
|
||||||
import io.xpipe.core.source.StreamWriteConnection;
|
|
||||||
import io.xpipe.core.source.TableMapping;
|
import io.xpipe.core.source.TableMapping;
|
||||||
import io.xpipe.core.util.JacksonMapper;
|
import io.xpipe.core.util.JacksonMapper;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
|
@ -76,8 +76,6 @@ public interface DataStoreProvider {
|
||||||
return getModuleName() + ":" + getId() + "_icon.png";
|
return getModuleName() + ":" + getId() + "_icon.png";
|
||||||
}
|
}
|
||||||
|
|
||||||
DataStore storeForString(String s);
|
|
||||||
|
|
||||||
default Dialog dialogForStore(DataStore store) {
|
default Dialog dialogForStore(DataStore store) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package io.xpipe.extension;
|
package io.xpipe.extension;
|
||||||
|
|
||||||
import io.xpipe.core.dialog.Dialog;
|
|
||||||
import io.xpipe.core.store.DataStore;
|
import io.xpipe.core.store.DataStore;
|
||||||
import io.xpipe.extension.event.ErrorEvent;
|
import io.xpipe.extension.event.ErrorEvent;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.ServiceLoader;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class DataStoreProviders {
|
public class DataStoreProviders {
|
||||||
|
@ -53,24 +55,6 @@ public class DataStoreProviders {
|
||||||
.collect(Collectors.joining()));
|
.collect(Collectors.joining()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Optional<Dialog> byString(String s) {
|
|
||||||
if (ALL == null) {
|
|
||||||
throw new IllegalStateException("Not initialized");
|
|
||||||
}
|
|
||||||
|
|
||||||
return ALL.stream()
|
|
||||||
.map(d -> {
|
|
||||||
var store = d.storeForString(s);
|
|
||||||
if (store != null) {
|
|
||||||
return d.dialogForStore(store);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.findAny();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static <T extends DataStoreProvider> T byStore(DataStore store) {
|
public static <T extends DataStoreProvider> T byStore(DataStore store) {
|
||||||
return (T) byStoreClass(store.getClass()).orElseThrow();
|
return (T) byStoreClass(store.getClass()).orElseThrow();
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package io.xpipe.extension.fxcomps.impl;
|
package io.xpipe.extension.fxcomps.impl;
|
||||||
|
|
||||||
import io.xpipe.core.impl.LocalStore;
|
|
||||||
import io.xpipe.core.store.ShellStore;
|
import io.xpipe.core.store.ShellStore;
|
||||||
import io.xpipe.extension.DataStoreProviders;
|
import io.xpipe.extension.DataStoreProviders;
|
||||||
import io.xpipe.extension.I18n;
|
import io.xpipe.extension.I18n;
|
||||||
|
@ -17,7 +16,6 @@ import javafx.scene.layout.Region;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO: Integrate store validation more into this comp.
|
TODO: Integrate store validation more into this comp.
|
||||||
|
@ -39,7 +37,7 @@ public class ShellStoreChoiceComp<T extends ShellStore> extends SimpleComp {
|
||||||
.filter(e -> e.equals(s))
|
.filter(e -> e.equals(s))
|
||||||
.findAny()
|
.findAny()
|
||||||
.flatMap(store -> XPipeDaemon.getInstance().getStoreName(store))
|
.flatMap(store -> XPipeDaemon.getInstance().getStoreName(store))
|
||||||
.orElse(I18n.get("localMachine"));
|
.orElse("?");
|
||||||
|
|
||||||
return new Label(name, imgView);
|
return new Label(name, imgView);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +55,7 @@ public class ShellStoreChoiceComp<T extends ShellStore> extends SimpleComp {
|
||||||
.filter(e -> e.equals(n))
|
.filter(e -> e.equals(n))
|
||||||
.findAny()
|
.findAny()
|
||||||
.flatMap(store -> XPipeDaemon.getInstance().getStoreName(store))
|
.flatMap(store -> XPipeDaemon.getInstance().getStoreName(store))
|
||||||
.orElse(I18n.get("localMachine"));
|
.orElse("?");
|
||||||
ErrorEvent.fromMessage(I18n.get("extension.namedHostNotActive", name))
|
ErrorEvent.fromMessage(I18n.get("extension.namedHostNotActive", name))
|
||||||
.reportable(false)
|
.reportable(false)
|
||||||
.handle();
|
.handle();
|
||||||
|
@ -77,12 +75,10 @@ public class ShellStoreChoiceComp<T extends ShellStore> extends SimpleComp {
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
var available = Stream.concat(
|
var available = XPipeDaemon.getInstance().getNamedStores().stream()
|
||||||
Stream.of(new LocalStore()),
|
|
||||||
XPipeDaemon.getInstance().getNamedStores().stream()
|
|
||||||
.filter(s -> s != self)
|
.filter(s -> s != self)
|
||||||
.filter(s -> storeClass.isAssignableFrom(s.getClass()) && applicableCheck.test((T) s))
|
.filter(s -> storeClass.isAssignableFrom(s.getClass()) && applicableCheck.test((T) s))
|
||||||
.map(s -> (ShellStore) s))
|
.map(s -> (ShellStore) s)
|
||||||
.toList();
|
.toList();
|
||||||
available.forEach(s -> comboBox.add((T) s));
|
available.forEach(s -> comboBox.add((T) s));
|
||||||
ComboBox<Node> cb = comboBox.build();
|
ComboBox<Node> cb = comboBox.build();
|
||||||
|
|
|
@ -5,6 +5,8 @@ tasks.withType(JavaCompile).configureEach {
|
||||||
options.encoding = 'UTF-8'
|
options.encoding = 'UTF-8'
|
||||||
options.compilerArgs << "-Xlint:unchecked"
|
options.compilerArgs << "-Xlint:unchecked"
|
||||||
options.compilerArgs << "--enable-preview"
|
options.compilerArgs << "--enable-preview"
|
||||||
|
|
||||||
|
// These settings are explicitly specified as they can cause problems with annotation processors
|
||||||
options.compilerArgs << "-implicit:none"
|
options.compilerArgs << "-implicit:none"
|
||||||
options.incremental = false
|
options.incremental = false
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue