Advertisement
Crowley2012

Check.java

Oct 19th, 2014
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.24 KB | None | 0 0
  1. package crowleysean;
  2.  
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileWriter;
  7. import java.io.IOException;
  8. import java.io.PrintWriter;
  9. import java.io.UnsupportedEncodingException;
  10. import java.text.DateFormat;
  11. import java.text.SimpleDateFormat;
  12. import java.util.ArrayList;
  13. import java.util.Date;
  14. import java.util.Scanner;
  15. import javax.swing.JFileChooser;
  16. import javax.swing.JOptionPane;
  17. import javax.swing.JTextField;
  18.  
  19. /**************************************************
  20.  * This class contains all the main methods
  21.  *
  22.  * @author Sean Crowley
  23.  **************************************************/
  24. public class Check extends Thread {
  25.  
  26.     /** version **/
  27.     private String VERSION = "1.3";
  28.  
  29.     /** Strings **/
  30.     private String user;
  31.     private String profile;
  32.     private String serverName;
  33.     private String serverIP;
  34.     private String launchParams;
  35.  
  36.     /** Date **/
  37.     private Date date;
  38.     private DateFormat dateFormat;
  39.  
  40.     /** Directories **/
  41.     private JFileChooser chooser = new JFileChooser();
  42.     private File profileDir;
  43.     private File steamDir;
  44.  
  45.     /** State of program **/
  46.     private boolean running;
  47.  
  48.     /** GUI object **/
  49.     private static GUI g;
  50.  
  51.     /**************************************************
  52.      * Getter / Setter methods
  53.      **************************************************/
  54.     public String getUser() {
  55.         return user;
  56.     }
  57.  
  58.     public String getProfile() {
  59.         return profile;
  60.     }
  61.  
  62.     public String getServerName() {
  63.         return serverName;
  64.     }
  65.  
  66.     public String getServerIP() {
  67.         return serverIP;
  68.     }
  69.  
  70.     public boolean getRunning() {
  71.         return running;
  72.     }
  73.  
  74.     public File getProfileDir() {
  75.         return profileDir;
  76.     }
  77.  
  78.     public File getSteamDir() {
  79.         return steamDir;
  80.     }
  81.  
  82.     public void setUser() {
  83.         user = System.getProperty("user.name");
  84.     }
  85.  
  86.     public void setServerName(String s) {
  87.         serverName = s;
  88.     }
  89.  
  90.     public void setServerIP(String s) {
  91.         serverIP = s;
  92.     }
  93.  
  94.     public void setRunning(boolean b) {
  95.         running = b;
  96.     }
  97.  
  98.     public void setDate() {
  99.         dateFormat = new SimpleDateFormat("hh:mm   MM/dd/yyyy");
  100.         date = new Date();
  101.         profileDir = new File("C:/Users/" + user + "/Documents/DayZ/" + user + ".DayZProfile");
  102.         steamDir = new File("C:\\Program Files (x86)\\Steam\\");
  103.         launchParams = "";
  104.     }
  105.  
  106.     /**************************************************
  107.      * Starts the program
  108.      **************************************************/
  109.     public void run() {
  110.         running = true;
  111.         profile = user;
  112.  
  113.         checkFiles();
  114.         checkStart();
  115.     }
  116.  
  117.     /**************************************************
  118.      * Loads saved servers
  119.      **************************************************/
  120.     public void readConfig() {
  121.  
  122.         if (!profileDir.exists()) {
  123.             g.setResults("Can not locate DayZ Profile. Please browse to its location.");
  124.             browseProfile();
  125.             g.setResults("");
  126.             running = false;
  127.         }
  128.  
  129.         if (!steamDir.exists()) {
  130.             g.setResults("Can not locate Steam Directory. Please browse to its location.");
  131.             browseSteam();
  132.             g.setResults("");
  133.             running = false;
  134.         }
  135.  
  136.         if (profileDir.exists()) {
  137.             try {
  138.                 Scanner sc = new Scanner(profileDir);
  139.  
  140.                 while (sc.hasNext()) {
  141.                     String s = sc.nextLine();
  142.  
  143.                     if (s.length() > 12 && s.substring(0, 13).equals("lastMPServer=")) {
  144.                         serverIP = s.substring(14, s.length() - 2);
  145.                     }
  146.  
  147.                     if (s.length() > 17 && s.substring(0, 17).equals("lastMPServerName=")) {
  148.                         serverName = s.substring(18, s.length() - 2);
  149.                     }
  150.                 }
  151.  
  152.                 sc.close();
  153.             } catch (IOException e) {
  154.                 System.out.println("Failed to read profile.");
  155.             }
  156.         }
  157.     }
  158.  
  159.     /**************************************************
  160.      * Save server to file
  161.      **************************************************/
  162.     public void saveCurrent() {
  163.         File f = new File("servers.txt");
  164.  
  165.         if (f.exists() && !f.isDirectory()) {
  166.  
  167.             try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("servers.txt", true)))) {
  168.  
  169.                 String server = serverIP + " | " + serverName + " | " + dateFormat.format(date);
  170.                 String serverFormat = serverName + "\n" + serverIP + "\n" + dateFormat.format(date) + "\n";
  171.  
  172.                 if (!checkRepeat(serverIP)) {
  173.                     out.println(server);
  174.                 }
  175.                 g.appendResults("\n" + serverFormat);
  176.  
  177.             } catch (IOException e1) {
  178.                 g.appendResults("Error writing to file.");
  179.             }
  180.  
  181.         } else {
  182.             g.appendResults("File does not exisit.");
  183.         }
  184.  
  185.     }
  186.  
  187.     /**************************************************
  188.      * Checks for a repeated server
  189.      **************************************************/
  190.     public boolean checkRepeat(String servIP) {
  191.         boolean repeat = false;
  192.         String info[] = new String[3];
  193.         ArrayList<String> servers = new ArrayList<String>();
  194.  
  195.         try {
  196.             File f = new File("servers.txt");
  197.             Scanner sc = new Scanner(f);
  198.  
  199.             while (sc.hasNext()) {
  200.                 servers.add(sc.nextLine());
  201.             }
  202.  
  203.             if (!servers.isEmpty()) {
  204.                 info = servers.get(servers.size() - 1).split("\\|");
  205.  
  206.                 if (info[0].trim().equals(servIP.trim())) {
  207.                     repeat = true;
  208.                 }
  209.             }
  210.  
  211.             sc.close();
  212.         }
  213.  
  214.         catch (IOException e) {
  215.             g.setResults("Failed to read: Servers.txt");
  216.         }
  217.  
  218.         return repeat;
  219.  
  220.     }
  221.  
  222.     /**************************************************
  223.      * Checks if servers.txt exists if not it creates it
  224.      **************************************************/
  225.     public void checkFiles() {
  226.  
  227.         File f = new File("servers.txt");
  228.  
  229.         if (!f.exists() || f.isDirectory()) {
  230.             PrintWriter writer = null;
  231.             try {
  232.                 writer = new PrintWriter("servers.txt", "UTF-8");
  233.             } catch (FileNotFoundException e1) {
  234.                 e1.printStackTrace();
  235.             } catch (UnsupportedEncodingException e1) {
  236.                 e1.printStackTrace();
  237.             }
  238.             writer.close();
  239.         }
  240.     }
  241.  
  242.     /**************************************************
  243.      * Checks for new server
  244.      **************************************************/
  245.     public void checkStart() {
  246.         while (true) {
  247.             while (running) {
  248.                 if (g.getLines() > 16) {
  249.                     g.setResults("Current Server\n");
  250.                 }
  251.                 readConfig();
  252.                 saveCurrent();
  253.                 try {
  254.                     Thread.sleep(150000);
  255.                 } catch (InterruptedException e) {
  256.                     e.printStackTrace();
  257.                 }
  258.             }
  259.  
  260.             try {
  261.                 Thread.sleep(1000);
  262.             } catch (InterruptedException e) {
  263.                 e.printStackTrace();
  264.             }
  265.         }
  266.     }
  267.  
  268.     /**************************************************
  269.      * Displays saved servers
  270.      **************************************************/
  271.     public void display() {
  272.         try {
  273.             File f = new File("servers.txt");
  274.             Scanner sc = new Scanner(f);
  275.             int i = 1;
  276.  
  277.             g.setResults("Server History\n\n");
  278.  
  279.             while (sc.hasNext()) {
  280.                 String s = sc.nextLine();
  281.                 String info[] = new String[3];
  282.                 info = s.split("\\|");
  283.  
  284.                 g.appendResults("Server:    " + i + "\nName:    " + info[1].trim() + "\nIP:            " + info[0].trim() + "\nDate:       " + info[2].trim() + "\n\n");
  285.  
  286.                 i++;
  287.             }
  288.  
  289.             sc.close();
  290.         }
  291.  
  292.         catch (IOException e) {
  293.             g.setResults("Failed to read: Servers.txt");
  294.         }
  295.     }
  296.  
  297.     /**************************************************
  298.      * Resets servers.txt
  299.      **************************************************/
  300.     public void resetSave() {
  301.         PrintWriter writer = null;
  302.  
  303.         try {
  304.             writer = new PrintWriter("servers.txt", "UTF-8");
  305.         } catch (FileNotFoundException | UnsupportedEncodingException e1) {
  306.             e1.printStackTrace();
  307.         }
  308.  
  309.         writer.close();
  310.         g.setResults("Servers.txt has been reset.");
  311.     }
  312.  
  313.     /**************************************************
  314.      * Launches DayZ
  315.      **************************************************/
  316.     public void launch() {
  317.         int index = 0;
  318.         ArrayList<String> servers = new ArrayList<String>();
  319.         String info[] = new String[3];
  320.         String IP[] = new String[2];
  321.  
  322.         try {
  323.             index = Integer.parseInt(JOptionPane.showInputDialog("Type in the Server Number that you\n would like to connect to!"));
  324.         } catch (Exception e) {
  325.             JOptionPane.showMessageDialog(null, "Incorrect. Please type in the server number.\n (Server > Display)", profile, index);
  326.             return;
  327.         }
  328.  
  329.         try {
  330.             File f = new File("servers.txt");
  331.             Scanner sc = new Scanner(f);
  332.  
  333.             while (sc.hasNext()) {
  334.                 servers.add(sc.nextLine());
  335.             }
  336.  
  337.             String s = servers.get(index - 1);
  338.             info = s.split("\\|");
  339.             IP = info[0].split("\\:");
  340.             sc.close();
  341.         } catch (IOException e) {
  342.             g.setResults("Failed to read: Servers.txt");
  343.         } catch (IndexOutOfBoundsException e) {
  344.             g.setResults("Incorrect server selection");
  345.         }
  346.         if (index >= 1 && index <= servers.size()) {
  347.             try {
  348.                 Runtime.getRuntime().exec(steamDir + "\\Steam.exe -applaunch 221100 -connect=" + IP[0] + " -port=" + IP[1] + " " + launchParams.toString());
  349.             } catch (IOException e) {
  350.                 e.printStackTrace();
  351.             }
  352.         }
  353.     }
  354.  
  355.     /**************************************************
  356.      * Add custom server
  357.      **************************************************/
  358.     public void addServer() {
  359.         File f = new File("servers.txt");
  360.         JTextField field1 = new JTextField();
  361.         JTextField field2 = new JTextField();
  362.         String value1 = "";
  363.         String value2 = "";
  364.  
  365.         Object[] message = { "Server IP", field1, "Server Name", field2, };
  366.  
  367.         int option = JOptionPane.showConfirmDialog(null, message, "Enter all your values", JOptionPane.OK_CANCEL_OPTION);
  368.  
  369.         if (option == JOptionPane.OK_OPTION) {
  370.             value1 = field1.getText();
  371.             value2 = field2.getText();
  372.         }
  373.  
  374.         if (f.exists() && !f.isDirectory()) {
  375.  
  376.             try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("servers.txt", true)))) {
  377.                 out.println(value1 + " | " + value2 + " | " + dateFormat.format(date));
  378.  
  379.             } catch (IOException e) {
  380.                 e.printStackTrace();
  381.             }
  382.         }
  383.  
  384.         display();
  385.  
  386.     }
  387.  
  388.     /**************************************************
  389.      * Remove server form list
  390.      **************************************************/
  391.     public void removeServer() {
  392.         ArrayList<String> servers = new ArrayList<String>();
  393.         int index = 0;
  394.         String info[] = new String[3];
  395.  
  396.         try {
  397.             index = Integer.parseInt(JOptionPane.showInputDialog("Type in the Server Number that you\n would like to remove."));
  398.         } catch (Exception e) {
  399.             JOptionPane.showMessageDialog(null, "Incorrect. Please type in the server number.\n (Server > Display)", profile, index);
  400.             return;
  401.         }
  402.  
  403.         try {
  404.             File f = new File("servers.txt");
  405.             Scanner sc = new Scanner(f);
  406.  
  407.             while (sc.hasNext()) {
  408.                 servers.add(sc.nextLine());
  409.             }
  410.             sc.close();
  411.  
  412.             servers.remove(index - 1);
  413.             resetSave();
  414.  
  415.             for (String s : servers) {
  416.                 info = s.split("\\|");
  417.                 try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("servers.txt", true)))) {
  418.                     out.println(info[0] + " | " + info[1] + " | " + info[2]);
  419.  
  420.                 } catch (IOException e) {
  421.                     e.printStackTrace();
  422.                 }
  423.             }
  424.         }
  425.  
  426.         catch (IOException e) {
  427.             g.setResults("Failed to read: Servers.txt");
  428.         }
  429.         display();
  430.     }
  431.  
  432.     /**************************************************
  433.      * Set DayZ profile location
  434.      **************************************************/
  435.     public void browseProfile() {
  436.         chooser.setCurrentDirectory(new java.io.File("."));
  437.         chooser.setDialogTitle("Browse to DayZ Profiles (Ex. /Documents/Dayz or /Dayz Other Profiles)");
  438.         chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  439.         chooser.setAcceptAllFileFilterUsed(false);
  440.  
  441.         if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
  442.             String s = chooser.getSelectedFile().toString() + "\\" + user + ".DayZProfile";
  443.             profileDir = new File(s);
  444.         } else {
  445.             System.out.println("No Selection");
  446.         }
  447.     }
  448.  
  449.     /**************************************************
  450.      * Set Steam location
  451.      **************************************************/
  452.     public void browseSteam() {
  453.         chooser.setCurrentDirectory(new java.io.File("."));
  454.         chooser.setDialogTitle("Browse to Steam Directory (Ex. C:/Program Files (x86)/Steam)");
  455.         chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  456.         chooser.setAcceptAllFileFilterUsed(false);
  457.  
  458.         if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
  459.             String s = chooser.getSelectedFile().toString();
  460.             steamDir = new File(s);
  461.         } else {
  462.             System.out.println("No Selection");
  463.         }
  464.  
  465.     }
  466.  
  467.     /**************************************************
  468.      * Set launch parameters
  469.      **************************************************/
  470.     public void launchParameters() {
  471.         launchParams = JOptionPane.showInputDialog("Type in DayZ launch params (Ex. -cpuCount=4 -maxMem=2048)");
  472.     }
  473.  
  474.     /**************************************************
  475.      * About
  476.      **************************************************/
  477.     public void about() {
  478.         g.setResults("-About-\n\n");
  479.         g.appendResults("Version\n");
  480.         g.appendResults("   " + VERSION + "\n\n");
  481.         g.appendResults("Created by\n");
  482.         g.appendResults("   Sean Crowley\n");
  483.         g.appendResults("   /u/Crowley2012\n\n");
  484.         g.appendResults("Contact\n");
  485.         g.appendResults("   Contact with bugs/new features\n");
  486.         g.appendResults("   Crowley.P.Sean@gmail.com");
  487.     }
  488.  
  489.     /**************************************************
  490.      * Help
  491.      **************************************************/
  492.     public void howTo() {
  493.         g.setResults("-How To Use-\n\n");
  494.         g.appendResults("Description\n");
  495.         g.appendResults("   This program will keep a list of all the servers you have joined.\n");
  496.         g.appendResults("   The program must be running when you are playing DayZ.\n\n");
  497.         g.appendResults("Features\n");
  498.         g.appendResults("   Clear Saved: \tWill clear server list.\n");
  499.         g.appendResults("   Start: \tWill start updating server list.\n");
  500.         g.appendResults("   Stop: \tWill stop updating server list.\n");
  501.         g.appendResults("   Add: \tWill add custom server to server list.\n");
  502.         g.appendResults("   Remove: \tWill remove server from server list.\n");
  503.         g.appendResults("   Display: \tWill display server list.\n");
  504.         g.appendResults("   Launch: \tWill launch DayZ and join selected server.\n");
  505.         g.appendResults("   Parameters: \tSet parameters to launch DayZ with.\n");
  506.         g.appendResults("   Profile Browse: Browse to the location of your DayZ Profiles.\n");
  507.         g.appendResults("   Steam Browse: Browse to the location of your Steam Directory.\n\n");
  508.         g.appendResults("How To Run\n");
  509.         g.appendResults("   Click Servers > Start and then start playing DayZ!\n");
  510.  
  511.     }
  512.  
  513.     /**************************************************
  514.      * Main method
  515.      **************************************************/
  516.     public static void main(String[] args) {
  517.         g = new GUI();
  518.         g.start();
  519.  
  520.     }
  521. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement