From c4f577a70120ed2dd54a3ed06ccc6fb0b430bf4c Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Sat, 10 Aug 2024 16:34:43 +0200 Subject: [PATCH] Added storage classes - work in progress IV --- build.gradle | 2 +- core/build.gradle | 3 +- .../filesystem/command}/BaseCommandLine.java | 2 +- .../command/CommandLineScanner.java | 29 ++++++++++++ .../filesystem/command}/StorageCommand.java | 2 +- .../command}/StorageCommandLine.java | 18 +++++--- .../command}/StorageCommandLineScanner.java | 14 +----- .../command}/StorageCommandResult.java | 2 +- .../openeggbert/storage/map/MapStorage.java | 4 +- .../storage/DesktopCommandLineScanner.java | 43 +++++++++++++++++ .../DesktopStorageCommandLineScanner.java | 46 +++++++++++++++++++ 11 files changed, 139 insertions(+), 26 deletions(-) rename {lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage => core/src/main/java/com/openeggbert/storage/filesystem/command}/BaseCommandLine.java (97%) create mode 100644 core/src/main/java/com/openeggbert/storage/filesystem/command/CommandLineScanner.java rename {lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage => core/src/main/java/com/openeggbert/storage/filesystem/command}/StorageCommand.java (96%) rename {lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage => core/src/main/java/com/openeggbert/storage/filesystem/command}/StorageCommandLine.java (92%) rename {lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage => core/src/main/java/com/openeggbert/storage/filesystem/command}/StorageCommandLineScanner.java (79%) rename {lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage => core/src/main/java/com/openeggbert/storage/filesystem/command}/StorageCommandResult.java (97%) create mode 100644 lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java create mode 100644 lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java diff --git a/build.gradle b/build.gradle index 6a0fd1d..ccc52cb 100644 --- a/build.gradle +++ b/build.gradle @@ -56,7 +56,7 @@ configure(subprojects - project(':android')) { } subprojects { - version = '1.0.0' + version = '0.0.0-SNAPSHOT' ext.appName = 'open-eggbert' repositories { mavenCentral() diff --git a/core/build.gradle b/core/build.gradle index 26d2eec..9794de2 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -17,6 +17,7 @@ dependencies { api "com.github.tommyettinger:libgdx-utils:$utilsVersion" api "de.golfgl.gdxcontrollerutils:gdx-controllerutils-mapping:$controllerMappingVersion" api "games.rednblack.miniaudio:miniaudio:$miniaudioVersion" + api "com.openeggbert.gdx:gdx-storage:0.0.0-SNAPSHOT" annotationProcessor "org.projectlombok:lombok:$lombokVersion" compileOnly "org.projectlombok:lombok:$lombokVersion" testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.3" @@ -26,4 +27,4 @@ dependencies { test { useJUnitPlatform { } -} \ No newline at end of file +} diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/BaseCommandLine.java b/core/src/main/java/com/openeggbert/storage/filesystem/command/BaseCommandLine.java similarity index 97% rename from lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/BaseCommandLine.java rename to core/src/main/java/com/openeggbert/storage/filesystem/command/BaseCommandLine.java index 5f7222e..a133201 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/BaseCommandLine.java +++ b/core/src/main/java/com/openeggbert/storage/filesystem/command/BaseCommandLine.java @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.lwjgl3.debugging.storage; +package com.openeggbert.storage.filesystem.command; import java.util.function.Function; diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/command/CommandLineScanner.java b/core/src/main/java/com/openeggbert/storage/filesystem/command/CommandLineScanner.java new file mode 100644 index 0000000..13b75c5 --- /dev/null +++ b/core/src/main/java/com/openeggbert/storage/filesystem/command/CommandLineScanner.java @@ -0,0 +1,29 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Copyright (C) 2024 the original author or authors. +// +// This program is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation, either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// or write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +/////////////////////////////////////////////////////////////////////////////////////////////// +package com.openeggbert.storage.filesystem.command; + +/** + * + * @author robertvokac + */ +public interface CommandLineScanner { + String nextLine(); + +} diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommand.java b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommand.java similarity index 96% rename from lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommand.java rename to core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommand.java index b955364..afaa84e 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommand.java +++ b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommand.java @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.lwjgl3.debugging.storage; +package com.openeggbert.storage.filesystem.command; /** * diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandLine.java b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLine.java similarity index 92% rename from lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandLine.java rename to core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLine.java index f94e8d0..fc4b6c0 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandLine.java +++ b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLine.java @@ -17,13 +17,12 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.lwjgl3.debugging.storage; +package com.openeggbert.storage.filesystem.command; import com.openeggbert.storage.Storage; -import java.time.LocalDateTime; import java.util.Arrays; +import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Optional; import java.util.function.Consumer; @@ -49,11 +48,14 @@ public class StorageCommandLine { } private String extractArgument(String arguments, int argumentIndex) { + if(arguments.isEmpty()) { + return arguments; + } String[] array = arguments.split(" "); - if (argumentIndex > (array.length - 1)) { + if (argumentIndex > (array.length)) { return ""; } - return array[argumentIndex]; + return array[argumentIndex + 1]; } public StorageCommandLine(String userIn, String hostnameIn, Storage storageIn) { @@ -62,21 +64,23 @@ public class StorageCommandLine { this.hostname = hostnameIn; this.storage = storageIn; + addCommand("date", arguments -> provideOutput(result -> result.setOutput(new Date().toString()))); addCommand("whoami", arguments -> provideOutput(result -> result.setOutput(user))); addCommand("uptime", arguments -> provideOutput(result -> result.setOutput( - LocalDateTime.now().toString().replace("T", " ").substring(10, 19) + " up " + new Date().toString().substring(11, 19) + " up " + (System.nanoTime() - startNanoTime) / 1000000000l / 60l + " minutes" + ", 1 user" ))); addCommand("hostname", arguments -> provideOutput(result -> result.setOutput(hostname))); + addCommand("test", arguments-> provideOutput(result-> result.setOutput((extractArgument(arguments, 0))))); addCommand("uname", arguments -> provideOutput(result -> result.setOutput( "LinuxBashCommandLinePartialEmulation" + ((extractArgument(arguments, 0).equals("-a")) ? (hostname + " 0.0.0 (" - + LocalDateTime.now().toString().replace("T", " ").substring(0, 10) + ")") + + new Date().toString() + ")") : "") ))); diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandLineScanner.java b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLineScanner.java similarity index 79% rename from lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandLineScanner.java rename to core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLineScanner.java index de93c51..422b273 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandLineScanner.java +++ b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLineScanner.java @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.lwjgl3.debugging.storage; +package com.openeggbert.storage.filesystem.command; import com.openeggbert.storage.map.MemoryStorage; import java.util.Scanner; @@ -28,17 +28,7 @@ import java.util.Scanner; */ public class StorageCommandLineScanner { - private StorageCommandLineScanner() { - //Not meant to be instantiated. - } - - public static void main(String[] args) { - MemoryStorage memoryStorage = new MemoryStorage(); - final String user = "player"; - final String hostname = "openegggbert"; - - StorageCommandLine storageCommandLine = new StorageCommandLine(user, hostname, memoryStorage); - Scanner scanner = new Scanner(System.in); + public StorageCommandLineScanner(StorageCommandLine storageCommandLine, CommandLineScanner scanner) { while (true) { System.out.print(storageCommandLine.getCommandLineStart()); diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandResult.java b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandResult.java similarity index 97% rename from lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandResult.java rename to core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandResult.java index eb81a9a..829b41b 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/StorageCommandResult.java +++ b/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandResult.java @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.lwjgl3.debugging.storage; +package com.openeggbert.storage.filesystem.command; /** * diff --git a/core/src/main/java/com/openeggbert/storage/map/MapStorage.java b/core/src/main/java/com/openeggbert/storage/map/MapStorage.java index adfe71a..92ebe81 100644 --- a/core/src/main/java/com/openeggbert/storage/map/MapStorage.java +++ b/core/src/main/java/com/openeggbert/storage/map/MapStorage.java @@ -65,7 +65,7 @@ public class MapStorage implements Storage { @Override public String cd(String path) { - System.out.println("path="+path); +// System.out.println("path="+path); String absolutePath = path.equals(TWO_DOTS) ? getParentPath(workingDirectory) : convertToAbsolutePathIfNeeded(path); if (!exists(absolutePath)) { @@ -122,7 +122,7 @@ public class MapStorage implements Storage { private static final String EIGHT_COLONS = "::::::::"; private static String getParentPath(String path) { - System.out.println("getParentPath()"); +// System.out.println("getParentPath()"); if (path == null) { throw new OpenEggbertException("Path is null"); } diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java new file mode 100644 index 0000000..a213889 --- /dev/null +++ b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java @@ -0,0 +1,43 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Copyright (C) 2024 the original author or authors. +// +// This program is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation, either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// or write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +/////////////////////////////////////////////////////////////////////////////////////////////// +package com.openeggbert.lwjgl3.debugging.storage; + +import com.openeggbert.storage.filesystem.command.CommandLineScanner; +import java.util.Scanner; + +/** + * + * @author robertvokac + */ +public class DesktopCommandLineScanner implements CommandLineScanner { + + private final Scanner scanner; + + public DesktopCommandLineScanner() { + this.scanner = new Scanner(System.in); + + } + + @Override + public String nextLine() { + return scanner.nextLine(); + } + +} diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java new file mode 100644 index 0000000..311a543 --- /dev/null +++ b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java @@ -0,0 +1,46 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Copyright (C) 2024 the original author or authors. +// +// This program is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation, either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// or write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +/////////////////////////////////////////////////////////////////////////////////////////////// +package com.openeggbert.lwjgl3.debugging.storage; + +import com.openeggbert.storage.filesystem.command.StorageCommandLine; +import com.openeggbert.storage.filesystem.command.StorageCommandLineScanner; +import com.openeggbert.storage.map.MemoryStorage; + +/** + * + * @author robertvokac + */ +public class DesktopStorageCommandLineScanner { + + private DesktopStorageCommandLineScanner() { + //Not meant to be instantiated. + } + + public static void main(String[] args) { + MemoryStorage memoryStorage = new MemoryStorage(); + final String user = "player"; + final String hostname = "openegggbert"; + StorageCommandLine storageCommandLine = new StorageCommandLine(user, hostname, memoryStorage); + StorageCommandLineScanner storageCommandLineScanner = new StorageCommandLineScanner( + storageCommandLine, new DesktopCommandLineScanner()); + + } + +}