Skip to content

Commit

Permalink
Now allow custom data folder
Browse files Browse the repository at this point in the history
  • Loading branch information
lmgarret committed Jun 7, 2017
1 parent d6865a0 commit 82d86d8
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 18 deletions.
4 changes: 2 additions & 2 deletions JAR_to_EXE.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<project nameKey="GameRoom.exe">
<target nameKey="Pack for Release">
<project name="GameRoom.exe">
<target name="Pack for Release">
<loadfile property="implementation.version" srcFile="src/META-INF/MANIFEST.MF">
<filterchain>
<!-- following filter tokenize input file and return only
Expand Down
31 changes: 23 additions & 8 deletions src/Launcher.java
Expand Up @@ -16,11 +16,14 @@
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.stage.WindowEvent;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.boris.winrun4j.DDE;
import system.application.Monitor;
import system.application.settings.PredefinedSetting;
import system.device.ControllerButtonListener;
import system.device.GameController;
import system.os.WinReg;
import ui.GeneralToast;
import ui.Main;
import ui.dialog.ConsoleOutputDialog;
Expand All @@ -32,6 +35,7 @@
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.net.URISyntaxException;
import java.sql.SQLException;

Expand All @@ -49,8 +53,22 @@ public class Launcher extends Application {
private static ChangeListener<Boolean> maximizedListener;
private static ChangeListener<Boolean> fullScreenListener;

private static String DATA_PATH;

public static void main(String[] args) throws URISyntaxException {
/*System.setErr(new PrintStream(System.err) {
Main.DEV_MODE = getArg(ARGS_FLAG_DEV, args, false) != null;

if(DEV_MODE){
String appdataFolder = System.getenv("APPDATA");
DATA_PATH = appdataFolder + File.separator + System.getProperty("working.dir");
}else{
DATA_PATH = WinReg.readDataPath();
}

System.setProperty("data.dir",DATA_PATH);
Main.LOGGER = LogManager.getLogger(Main.class);

System.setErr(new PrintStream(System.err) {
public void print(final String string) {
LOGGER.error(string);
if (DEV_MODE || settings().getBoolean(PredefinedSetting.DEBUG_MODE)) {
Expand All @@ -69,7 +87,7 @@ public void print(final String string) {
//System.out.print(string);
LOGGER.debug(string);
}
});*/
});

System.out.println("\n\n==========================================NEW START============================================");

Expand All @@ -78,8 +96,6 @@ public void print(final String string) {
Main.LOGGER.debug("\t\"" + arg + "\"");
}

Main.DEV_MODE = getArg(ARGS_FLAG_DEV, args, false) != null;

if (!DEV_MODE) {
DDE.addActivationListener(s -> {
if (!MAIN_SCENE.getParentStage().isShowing()) {
Expand Down Expand Up @@ -130,10 +146,9 @@ public void print(final String string) {
}

private static void initFiles() {
String appdataFolder = System.getenv("APPDATA");
String gameRoomPath = appdataFolder + File.separator + System.getProperty("working.dir");
System.out.println("afinfwoeifbnw " + gameRoomPath);
File gameRoomFolder = FileUtils.initOrCreateFolder(gameRoomPath);

System.out.println("datapath : " + DATA_PATH);
File gameRoomFolder = FileUtils.initOrCreateFolder(DATA_PATH);

File configProperties = new File("config.properties");
File logFolder = new File("log");
Expand Down
2 changes: 1 addition & 1 deletion src/UI/Main.java
Expand Up @@ -61,7 +61,7 @@ public class Main {
private final static Pattern AUTO_TAG_PATTERN = Pattern.compile("\\"+ AUTO_TAG_CHAR +"(.*)\\"+ AUTO_TAG_CHAR);
private final static String NO_STRING = "\'no_string\'";

public static final Logger LOGGER = LogManager.getLogger(Main.class);
public static Logger LOGGER;

public static final HashMap<String, File> FILES_MAP = new HashMap<>();

Expand Down
16 changes: 12 additions & 4 deletions src/data/io/DataBase.java
Expand Up @@ -3,10 +3,10 @@
import ui.Main;
import ui.dialog.GameRoomAlert;

import java.io.File;
import java.io.IOException;
import java.io.*;
import java.nio.file.Files;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

import static ui.Main.DEV_MODE;
Expand Down Expand Up @@ -73,9 +73,17 @@ private void readAndExecSQLInit() throws IOException {
String url = getDBUrl();

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("sql/init.sql").getFile());
InputStream stream = classLoader.getResourceAsStream("sql/init.sql");
BufferedReader r = new BufferedReader(new InputStreamReader(stream));

List<String> lines = new ArrayList<>();
String line;
while ((line=r.readLine()) != null) {
lines.add(line);
}
r.close();
stream.close();

List<String> lines = Files.readAllLines(file.toPath());
String sql = "";

try (Connection conn = DriverManager.getConnection(url)) {
Expand Down
4 changes: 2 additions & 2 deletions src/res/log4j2.xml
Expand Up @@ -6,8 +6,8 @@
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
</Console>

<RollingFile name="RollingFile" filename="${env:APPDATA}/${sys:working.dir}/log/GameRoom.log"
filepattern="${env:APPDATA}/${sys:working.dir}/log/GameRoom - %d{YYYY-MM-dd}.log">
<RollingFile name="RollingFile" filename="${sys:data.dir}/log/GameRoom.log"
filepattern="${sys:data.dir}/log/GameRoom - %d{YYYY-MM-dd}.log">
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
<Policies>
<SizeBasedTriggeringPolicy size="500 KB" />
Expand Down
7 changes: 6 additions & 1 deletion src/system/os/Terminal.java
Expand Up @@ -46,6 +46,11 @@ public void execute(String[] commands, File log, File parentFile) throws IOExcep
}

public String[] execute(String command, String... args) throws IOException {
StringBuilder cmdLine = new StringBuilder(command);
for(String arg : args){
cmdLine.append(" ").append(arg);
}

ArrayList<String> commands = new ArrayList<String>();

commands.addAll(Arrays.asList("cmd.exe", "/c", "chcp", "65001", "&", "cmd.exe", "/c", command));
Expand All @@ -63,7 +68,7 @@ public String[] execute(String command, String... args) throws IOException {
// read any errors from the attempted command
if (redirectErrorStream) {
while ((s = stdError.readLine()) != null) {
Main.LOGGER.error("[cmd=" + command + "] " + s);
System.err.println("[cmd=\"" + cmdLine.toString() + "\"] " + s);
}
}
String[] result = stdInput.lines().toArray(size -> new String[size]);
Expand Down
44 changes: 44 additions & 0 deletions src/system/os/WinReg.java
@@ -0,0 +1,44 @@
package system.os;

import ui.Main;

import java.io.File;
import java.io.IOException;

/**
* @author LM. Garret (admin@gameroom.me)
* @date 07/06/2017.
*/
public class WinReg {
public final static String HKLM = "HKLM";

public static String readString(String hkey, String key, String valueName) {
Terminal terminal = new Terminal(false);
try {
String[] result = terminal.execute("reg query", hkey + "\\" + key, "/v", valueName);
String lineStart = valueName + " " + "REG_SZ ";
for (String line : result) {
if (line.trim().startsWith(lineStart)) {
return line.trim().substring(lineStart.length());
}
}
} catch (IOException e) {
Main.LOGGER.error("WinReg: could not find reg key");
e.printStackTrace();
}
return null;
}

public static String readDataPath() {
String dataPath32 = readString(HKLM, "Software\\GameRoom", "DataPath");
if (dataPath32 != null) {
return dataPath32;
}
String dataPath64 = readString(HKLM, "Software\\WOW6432NODE\\GameRoom", "DataPath");
if (dataPath64 != null) {
return dataPath64;
}
String appdataFolder = System.getenv("APPDATA");
return appdataFolder + File.separator + "GameRoom";
}
}

0 comments on commit 82d86d8

Please sign in to comment.