link filename to extension files

This commit is contained in:
sirjonasxx 2018-09-25 22:13:11 +02:00
parent fdd75c142f
commit 260ebc5a4b
6 changed files with 53 additions and 35 deletions

View File

@ -1,6 +1,7 @@
package main; package main;
import javafx.application.Application; import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
@ -32,6 +33,7 @@ public class Main extends Application {
primaryStage.setOnCloseRequest( event -> { primaryStage.setOnCloseRequest( event -> {
companion.abort(); companion.abort();
Platform.exit();
}); });
} }

View File

@ -5,12 +5,11 @@ import main.protocol.HPacket;
import main.ui.extensions.Extensions; import main.ui.extensions.Extensions;
import java.io.*; import java.io.*;
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.AnnotatedType;
import java.net.Socket; import java.net.Socket;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* Created by Jonas on 23/06/18. * Created by Jonas on 23/06/18.
@ -26,12 +25,23 @@ public abstract class Extension {
private static final String[] PORT_FLAG = {"--port", "-p"}; private static final String[] PORT_FLAG = {"--port", "-p"};
private static final String[] FILE_FLAG = {"--filename", "-f"};
private OutputStream out = null; private OutputStream out = null;
private final Map<Integer, List<MessageListener>> incomingMessageListeners = new HashMap<>(); private final Map<Integer, List<MessageListener>> incomingMessageListeners = new HashMap<>();
private final Map<Integer, List<MessageListener>> outgoingMessageListeners = new HashMap<>(); private final Map<Integer, List<MessageListener>> outgoingMessageListeners = new HashMap<>();
private FlagsCheckListener flagRequestCallback = null; private FlagsCheckListener flagRequestCallback = null;
private String getArgument(String[] args, String... arg) {
for (int i = 0; i < args.length - 1; i++) {
for (String str : arg) {
if (args[i].toLowerCase().equals(str.toLowerCase())) {
return args[i+1];
}
}
}
return null;
}
/** /**
* Makes the connection with G-Earth, pass the arguments given in the Main method "super(args)" * Makes the connection with G-Earth, pass the arguments given in the Main method "super(args)"
@ -52,17 +62,8 @@ public abstract class Extension {
return; return;
} }
int port = 0; int port = Integer.parseInt(getArgument(args, PORT_FLAG));
String file = getArgument(args, FILE_FLAG);
outerloop:
for (int i = 0; i < args.length - 1; i++) {
for (String str : PORT_FLAG) {
if (args[i].equals(str)) {
port = Integer.parseInt(args[i+1]);
break outerloop;
}
}
}
Socket gEarthExtensionServer = null; Socket gEarthExtensionServer = null;
try { try {
@ -102,7 +103,9 @@ public abstract class Extension {
.appendString(info.Author()) .appendString(info.Author())
.appendString(info.Version()) .appendString(info.Version())
.appendString(info.Description()) .appendString(info.Description())
.appendBoolean(isOnClickMethodUsed()); .appendBoolean(isOnClickMethodUsed())
.appendBoolean(file == null)
.appendString(file == null ? "": file);
writeToStream(response.toBytes()); writeToStream(response.toBytes());
} }
else if (packet.headerId() == Extensions.OUTGOING_MESSAGES_IDS.CONNECTIONSTART) { else if (packet.headerId() == Extensions.OUTGOING_MESSAGES_IDS.CONNECTIONSTART) {
@ -142,7 +145,7 @@ public abstract class Extension {
incomingMessageListeners : incomingMessageListeners :
outgoingMessageListeners; outgoingMessageListeners;
Set<MessageListener> correctListeners = new HashSet<>(); List<MessageListener> correctListeners = new ArrayList<>();
synchronized (incomingMessageListeners) { synchronized (incomingMessageListeners) {
synchronized (outgoingMessageListeners) { synchronized (outgoingMessageListeners) {

View File

@ -2,16 +2,9 @@ package main.extensions;
import javafx.application.Application; import javafx.application.Application;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import main.protocol.HMessage; import main.protocol.HMessage;
import main.protocol.HPacket; import main.protocol.HPacket;
import main.ui.GEarthController;
import java.net.URL;
/** /**
* Created by Jonas on 22/09/18. * Created by Jonas on 22/09/18.

View File

@ -1,16 +1,12 @@
package main.ui.extensions; package main.ui.extensions;
import javafx.beans.InvalidationListener; import javafx.beans.InvalidationListener;
import main.protocol.HMessage;
import main.protocol.HPacket; import main.protocol.HPacket;
import main.protocol.packethandler.PayloadBuffer;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.EOFException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.Socket; import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -25,6 +21,9 @@ public class GEarthExtension {
private String description; private String description;
private boolean fireEventButtonVisible; private boolean fireEventButtonVisible;
private boolean isInstalledExtension; // <- extension is in the extensions directory
private String fileName;
private Socket connection; private Socket connection;
//calls callback when the extension is creatd //calls callback when the extension is creatd
@ -59,6 +58,8 @@ public class GEarthExtension {
packet.readString(), packet.readString(),
packet.readString(), packet.readString(),
packet.readBoolean(), packet.readBoolean(),
packet.readBoolean(),
packet.readString(),
connection, connection,
onDisconnectedCallback onDisconnectedCallback
); );
@ -72,12 +73,16 @@ public class GEarthExtension {
} }
private GEarthExtension(String title, String author, String version, String description, boolean fireEventButtonVisible, Socket connection, OnDisconnectedCallback onDisconnectedCallback) { private GEarthExtension(String title, String author, String version, String description, boolean fireEventButtonVisible, boolean isInstalledExtension, String fileName, Socket connection, OnDisconnectedCallback onDisconnectedCallback) {
this.title = title; this.title = title;
this.author = author; this.author = author;
this.version = version; this.version = version;
this.description = description; this.description = description;
this.fireEventButtonVisible = fireEventButtonVisible; this.fireEventButtonVisible = fireEventButtonVisible;
this.isInstalledExtension = isInstalledExtension;
this.fileName = fileName;
this.connection = connection; this.connection = connection;
GEarthExtension selff = this; GEarthExtension selff = this;
@ -146,7 +151,13 @@ public class GEarthExtension {
return fireEventButtonVisible; return fireEventButtonVisible;
} }
public String getFileName() {
return fileName;
}
public boolean isInstalledExtension() {
return isInstalledExtension;
}
public boolean closeConnection() { public boolean closeConnection() {
try { try {

View File

@ -16,11 +16,18 @@ public class ExecutionInfo {
static { static {
extensionTypeToExecutionCommand = new HashMap<>(); extensionTypeToExecutionCommand = new HashMap<>();
extensionTypeToExecutionCommand.put("*.jar","java -jar {path} -p {port}"); extensionTypeToExecutionCommand.put("*.jar","java -jar {path}");
extensionTypeToExecutionCommand.put("*.py","python {path} -p {port}"); extensionTypeToExecutionCommand.put("*.py","python {path}");
extensionTypeToExecutionCommand.put("*.py3","python3 {path} -p {port}"); extensionTypeToExecutionCommand.put("*.py3","python3 {path}");
extensionTypeToExecutionCommand.put("*.sh","{path} -p {port}"); extensionTypeToExecutionCommand.put("*.sh","{path}");
extensionTypeToExecutionCommand.put("*.exe","{path} -p {port}"); extensionTypeToExecutionCommand.put("*.exe","{path}");
for(String type : extensionTypeToExecutionCommand.keySet()) {
extensionTypeToExecutionCommand.put(
type,
extensionTypeToExecutionCommand.get(type) + " -p {port} -f {filename}"
);
}
ALLOWEDEXTENSIONTYPES = new ArrayList<>(extensionTypeToExecutionCommand.keySet()); ALLOWEDEXTENSIONTYPES = new ArrayList<>(extensionTypeToExecutionCommand.keySet());
} }

View File

@ -71,6 +71,7 @@ public class NormalExtensionRunner implements ExtensionRunner {
ExecutionInfo.getExecutionCommand(getFileExtension(path)) ExecutionInfo.getExecutionCommand(getFileExtension(path))
.replace("{path}", path) .replace("{path}", path)
.replace("{port}", port+"") .replace("{port}", port+"")
.replace("{filename}", Paths.get(path).getFileName().toString())
); );
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -86,6 +87,7 @@ public class NormalExtensionRunner implements ExtensionRunner {
String[] split = name.split("\\."); String[] split = name.split("\\.");
return "*." + split[split.length - 1]; return "*." + split[split.length - 1];
} }
private boolean dirExists(String dir) { private boolean dirExists(String dir) {
return Files.isDirectory(Paths.get(FileSystems.getDefault().getPath(".").toString(), dir)); return Files.isDirectory(Paths.get(FileSystems.getDefault().getPath(".").toString(), dir));
} }