View Javadoc
1   package info.mikethomas.fahview.v6project.utilities;
2   
3   /*
4    * #%L
5    * This file is part of FAHView-v6project.
6    * %%
7    * Copyright (C) 2011 - 2017 Mike Thomas <mikepthomas@outlook.com>
8    * %%
9    * FAHView is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as published by
11   * the Free Software Foundation, either version 3 of the License, or
12   * (at your option) any later version.
13   * %
14   * FAHView is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * %
19   * You should have received a copy of the GNU General Public License
20   * along with FAHView.  If not, see <http://www.gnu.org/licenses/>.
21   * #L%
22   */
23  
24  import java.io.File;
25  import java.io.FileNotFoundException;
26  import java.util.Scanner;
27  import java.util.logging.Level;
28  import java.util.logging.Logger;
29  
30  /**
31   * Class to extract data from Folding@home client log files.
32   *
33   * @author <a href="mailto:mikepthomas@outlook.com">Michael Thomas</a>
34   * @version $Id: $Id
35   */
36  public class LogReader {
37      private File FAHlogTxt;
38      private final String COMPLETED_REGEX = "\\[(\\d{2,2}):(\\d{2,2}):(\\d{2,2})\\] Completed (\\d{1,}) out of (\\d{1,}) steps  ?\\((\\d{1,2})\\%?\\)";
39      private int logPosition = 0;
40      
41      /**
42       * <p>Constructor for LogReader.</p>
43       *
44       * @param location a {@link java.lang.String} object.
45       */
46      public LogReader(String location) {
47              FAHlogTxt = new File(location + "/FAHLog-Prev.txt");
48  
49  
50                  // Static Messages
51  //                if (line.contains("Edition")) client.setEdition(line);
52  //                if (line.contains("Folding@home Client Version")) client.setVersion(line);
53  //                if (line.contains("Launch directory: ")) client.setLaunchDirectory(line);
54  //                if (line.contains("Service: ") | line.contains("Executable: ")) client.setExecutable(line);
55  //                if (line.contains("Arguments: ")) client.setArguments(line);
56  //
57  //                // Client Data
58  //                if (line.contains("User name: ")) client.setUserName(line);
59  //                if (line.contains("User ID: ")) client.setUserID(line);
60  //                if (line.contains("Machine ID: ")) client.setMachineID(line);
61  
62                  // Queue Data
63                  //if (line.contains("Working on queue slot")) setLogPosition(line);
64  
65                  // Work Unit Data
66                  //if (line.contains("Project: ")) client.queue.getQueueIndex(logPosition).wuid.setProject(line);
67                  //if (line.contains("Protein: ")) client.queue.getQueueIndex(logPosition).wuid.setProtein(line);
68                  // [??:??:??] Completed ????? out of ????? steps  (??%)
69  //                if (Pattern.matches(COMPLETED_REGEX, line)) client.queue.getQueueIndex(logPosition).wuid.setCompleted(line);
70              
71  
72              // Client
73  //            System.out.println(client.getEdition());
74  //            System.out.println(client.getVersion());
75  //            System.out.println(client.getLaunchDirectory());
76  //            System.out.println(client.getExecutable());
77  //            System.out.println(client.getArguments());
78  //            System.out.println(client.getUserName());
79  //            System.out.println(client.getTeamNo());
80  //            System.out.println(client.getUserID());
81  //            System.out.println(client.getMachineID());
82  
83      }
84  
85      /**
86       * <p>Setter for the field <code>logPosition</code>.</p>
87       *
88       * @param line a {@link java.lang.String} object.
89       */
90      private void setLogPosition(String line) {
91          String values[] = line.split(" ");
92          this.logPosition = Integer.parseInt(values[5]);
93          System.out.println(logPosition);
94      }
95      
96      /** {@inheritDoc} */
97      @Override
98      public String toString() {
99          String contents = "";
100         try {
101             Scanner scan = new Scanner(FAHlogTxt);
102             while (scan.hasNext()) {
103                 String line = scan.nextLine();
104                 contents += (line + "\n");
105             }
106         }
107         catch (FileNotFoundException ex) {
108             Logger.getLogger(LogReader.class.getName()).log(Level.SEVERE, null, ex);
109         }
110         return contents;
111     }
112 }