1 /* Open Log Viewer
2 *
3 * Copyright 2011
4 *
5 * This file is part of the OpenLogViewer project.
6 *
7 * OpenLogViewer software is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * OpenLogViewer software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with any OpenLogViewer software. If not, see http://www.gnu.org/licenses/
19 *
20 * I ask that if you make any changes to this file you fork the code on github.com!
21 *
22 */
23
24 package org.diyefi.openlogviewer.decoder;
25
26 import java.io.File;
27 import org.diyefi.openlogviewer.genericlog.GenericLog;
28
29 /**
30 * Typical constructor for this class would look like this <br>
31 * <code>
32 * public CSVTypeLog(File f) {<br>
33 this.setLogFile(f);<br>
34 this.setDecodedLog(new GenericLog());<br>
35 this.setT(new Thread(this, "CSV Type Log Loading"));<br>
36 this.getT().setPriority(Thread.MAX_PRIORITY);<br>
37 this.getT().start();<br>
38
39 }</code>
40 * @author Bryan Harris
41 */
42 public abstract class AbstractDecoder implements Runnable {
43
44 /**
45 * logFile is the <code>File</code> object that points to the file you are
46 * attempting to open.
47 */
48 private File logFile;
49
50 /**
51 * decodedLog is the outcome of parsing the log file, this will be injected into the program
52 * through property change listeners and this object will be come null when finished or fail.
53 */
54 private GenericLog decodedLog;
55
56 /**
57 * this object is threaded so that the gui does not freeze while parsing
58 */
59 private Thread t;
60
61 /**
62 * Overriden Run from the Runnable Interface to do the work for us in a threaded fashion.
63 */
64 // @Override
65 // public final void run() {
66 // try {
67 // this.getDecodedLog().setLogStatus(GenericLog.LOG_LOADING);
68 // decodeLog();
69 // this.getDecodedLog().setLogStatus(GenericLog.LOG_LOADED);
70 // } catch (IOException IOE) {
71 // this.getDecodedLog().setLogStatus(GenericLog.LOG_NOT_LOADED);
72 // System.out.println("Error Loading Log: " + IOE.getMessage());
73 // }
74 // }
75
76 // /**
77 // * BaseDecoder.decodeLog() is an abstract method. Override this method write your parsing code within it, when creating an object that
78 // * extends BaseDecoder the rest will be taken care of automatically
79 // * @throws IOException
80 // */
81 // abstract void decodeLog() throws IOException;
82
83 /**
84 * used for getting the decided log for injection to the main pieces of the program that will use it
85 * @return GenericLog
86 */
87 public final GenericLog getDecodedLog() {
88 return decodedLog;
89 }
90
91 /**
92 * sets the GenericLog
93 * @param decodedLog
94 */
95 public final void setDecodedLog(final GenericLog decodedLog) {
96 this.decodedLog = decodedLog;
97 }
98
99 /**
100 * get the log File
101 * @return File
102 */
103 public final File getLogFile() {
104 return logFile;
105 }
106
107 /**
108 * set the log File
109 * @param logFile
110 */
111 public final void setLogFile(final File logFile) {
112 this.logFile = logFile;
113 }
114
115 /**
116 * get the thread, use this if you would like to give the thread a name such as "TYPEOFLOG Thread"<br>
117 * can also be used to set the thread priority
118 * after initialization of all variables required by the extended class you <b>MUST</b> call:<br>
119 * this.getT().start();
120 * @return the thread that this decoder is running in.
121 */
122 public final Thread getT() {
123 return t;
124 }
125
126 /**
127 * set the Thread
128 * @param t
129 */
130 public final void setT(final Thread t) {
131 this.t = t;
132 }
133 }