Cleanup splitting string into a pair
Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
This commit is contained in:
		@@ -54,10 +54,12 @@
 | 
			
		||||
 | 
			
		||||
package org.prismlauncher;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import org.prismlauncher.exception.ParseException;
 | 
			
		||||
import org.prismlauncher.launcher.Launcher;
 | 
			
		||||
import org.prismlauncher.launcher.LauncherFactory;
 | 
			
		||||
import org.prismlauncher.utils.Parameters;
 | 
			
		||||
import org.prismlauncher.utils.StringUtils;
 | 
			
		||||
 | 
			
		||||
import java.io.BufferedReader;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
@@ -66,58 +68,47 @@ import java.nio.charset.StandardCharsets;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public final class EntryPoint {
 | 
			
		||||
 | 
			
		||||
    private static final Logger LOGGER = Logger.getLogger("EntryPoint");
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        ExitCode exitCode = listen();
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        if (exitCode != ExitCode.NORMAL) {
 | 
			
		||||
            LOGGER.warning("Exiting with " + exitCode);
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            System.exit(exitCode.numericalCode);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static PreLaunchAction parseLine(String inData, Parameters params) throws ParseException {
 | 
			
		||||
        if (inData.isEmpty())
 | 
			
		||||
    
 | 
			
		||||
    private static PreLaunchAction parseLine(String input, Parameters params) throws ParseException {
 | 
			
		||||
        if (input.isEmpty())
 | 
			
		||||
            throw new ParseException("Unexpected empty string!");
 | 
			
		||||
 | 
			
		||||
        String first = inData;
 | 
			
		||||
        String second = null;
 | 
			
		||||
        int splitPoint = inData.indexOf(' ');
 | 
			
		||||
 | 
			
		||||
        if (splitPoint != -1) {
 | 
			
		||||
            first = first.substring(0, splitPoint);
 | 
			
		||||
            second = inData.substring(splitPoint + 1);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        switch (first) {
 | 
			
		||||
            case "launch":
 | 
			
		||||
                return PreLaunchAction.LAUNCH;
 | 
			
		||||
            case "abort":
 | 
			
		||||
                return PreLaunchAction.ABORT;
 | 
			
		||||
            default:
 | 
			
		||||
                if (second == null || second.isEmpty())
 | 
			
		||||
                    throw new ParseException("Error while parsing:" + inData);
 | 
			
		||||
 | 
			
		||||
                params.add(first, second);
 | 
			
		||||
 | 
			
		||||
                return PreLaunchAction.PROCEED;
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        if ("launch".equalsIgnoreCase(input)) {
 | 
			
		||||
            return PreLaunchAction.LAUNCH;
 | 
			
		||||
        } else if ("abort".equalsIgnoreCase(input)) {
 | 
			
		||||
            return PreLaunchAction.ABORT;
 | 
			
		||||
        } else {
 | 
			
		||||
            String[] pair = StringUtils.splitStringPair(' ', input);
 | 
			
		||||
            if (pair == null)
 | 
			
		||||
                throw new ParseException("Error while parsing:" + input);
 | 
			
		||||
            
 | 
			
		||||
            params.add(pair[0], pair[1]);
 | 
			
		||||
            
 | 
			
		||||
            return PreLaunchAction.PROCEED;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    private static ExitCode listen() {
 | 
			
		||||
        Parameters parameters = new Parameters();
 | 
			
		||||
        PreLaunchAction preLaunchAction = PreLaunchAction.PROCEED;
 | 
			
		||||
 | 
			
		||||
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(
 | 
			
		||||
                System.in,
 | 
			
		||||
                StandardCharsets.UTF_8
 | 
			
		||||
        ))) {
 | 
			
		||||
        
 | 
			
		||||
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8))) {
 | 
			
		||||
            String line;
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            while (preLaunchAction == PreLaunchAction.PROCEED) {
 | 
			
		||||
                if ((line = reader.readLine()) != null) {
 | 
			
		||||
                    preLaunchAction = parseLine(line, parameters);
 | 
			
		||||
@@ -127,49 +118,50 @@ public final class EntryPoint {
 | 
			
		||||
            }
 | 
			
		||||
        } catch (IOException | ParseException e) {
 | 
			
		||||
            LOGGER.log(Level.SEVERE, "Launcher abort due to exception:", e);
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            return ExitCode.ERROR;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        // Main loop
 | 
			
		||||
        if (preLaunchAction == PreLaunchAction.ABORT) {
 | 
			
		||||
            LOGGER.info("Launch aborted by the launcher.");
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
            return ExitCode.ERROR;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        try {
 | 
			
		||||
            Launcher launcher = LauncherFactory.createLauncher(parameters);
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            launcher.launch();
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            return ExitCode.NORMAL;
 | 
			
		||||
        } catch (IllegalArgumentException e) {
 | 
			
		||||
            LOGGER.log(Level.SEVERE, "Wrong argument.", e);
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            return ExitCode.ERROR;
 | 
			
		||||
        } catch (Throwable e) {
 | 
			
		||||
            LOGGER.log(Level.SEVERE, "Exception caught from launcher.", e);
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            return ExitCode.ERROR;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    private enum PreLaunchAction {
 | 
			
		||||
        PROCEED,
 | 
			
		||||
        LAUNCH,
 | 
			
		||||
        ABORT
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
    private enum ExitCode {
 | 
			
		||||
        NORMAL(0),
 | 
			
		||||
        ERROR(1);
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        private final int numericalCode;
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        ExitCode(int numericalCode) {
 | 
			
		||||
            this.numericalCode = numericalCode;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -58,6 +58,7 @@ package org.prismlauncher.launcher.impl;
 | 
			
		||||
import org.prismlauncher.exception.ParseException;
 | 
			
		||||
import org.prismlauncher.launcher.Launcher;
 | 
			
		||||
import org.prismlauncher.utils.Parameters;
 | 
			
		||||
import org.prismlauncher.utils.StringUtils;
 | 
			
		||||
 | 
			
		||||
import java.lang.invoke.MethodHandle;
 | 
			
		||||
import java.lang.invoke.MethodHandles;
 | 
			
		||||
@@ -101,13 +102,13 @@ public abstract class AbstractLauncher implements Launcher {
 | 
			
		||||
            height = DEFAULT_WINDOW_HEIGHT;
 | 
			
		||||
        } else {
 | 
			
		||||
            maximize = false;
 | 
			
		||||
 | 
			
		||||
            int byIndex = windowParams.indexOf('x');
 | 
			
		||||
 | 
			
		||||
            if (byIndex != -1) {
 | 
			
		||||
    
 | 
			
		||||
            String[] sizePair = StringUtils.splitStringPair('x', windowParams);
 | 
			
		||||
    
 | 
			
		||||
            if (sizePair != null) {
 | 
			
		||||
                try {
 | 
			
		||||
                    width = Integer.parseInt(windowParams.substring(0, byIndex));
 | 
			
		||||
                    height = Integer.parseInt(windowParams.substring(byIndex + 1));
 | 
			
		||||
                    width = Integer.parseInt(sizePair[0]);
 | 
			
		||||
                    height = Integer.parseInt(sizePair[1]);
 | 
			
		||||
                    return;
 | 
			
		||||
                } catch (NumberFormatException ignored) {
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								libraries/launcher/org/prismlauncher/utils/StringUtils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								libraries/launcher/org/prismlauncher/utils/StringUtils.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
package org.prismlauncher.utils;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public final class StringUtils {
 | 
			
		||||
    private StringUtils() {
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public static String[] splitStringPair(char splitChar, String input) {
 | 
			
		||||
        int splitPoint = input.indexOf(splitChar);
 | 
			
		||||
        if (splitPoint == -1)
 | 
			
		||||
            return null;
 | 
			
		||||
        
 | 
			
		||||
        return new String[]{ input.substring(0, splitPoint), input.substring(splitPoint + 1) };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user