1 package info.mikethomas.fahview.v6project.model;
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.util.Date;
25
26 /**
27 * Interface to represent data stored about a Folding@home work unit.
28 *
29 * @author <a href="mailto:mikepthomas@outlook.com">Michael Thomas</a>
30 * @version 6.00
31 */
32 public interface WorkUnit {
33 // <editor-fold defaultstate="collapsed" desc="position-constants">
34 /**
35 * Position in bytes of the Project Number from the start of
36 * {@code queue.dat}.
37 *
38 * @see #getProj()
39 * @see #PROJ_LENGTH
40 */
41 int PROJ_POS = 0;
42 /**
43 * Position in bytes of the Run Number from the start of
44 * {@code queue.dat}.
45 *
46 * @see #getRun()
47 * @see #RUN_LENGTH
48 */
49 int RUN_POS = 2;
50 /**
51 * Position in bytes of the Clone Number from the start of
52 * {@code queue.dat}.
53 *
54 * @see #getClone()
55 * @see #CLONE_LENGTH
56 */
57 int CLONE_POS = 4;
58 /**
59 * Position in bytes of the Generation Number from the start of
60 * {@code queue.dat}.
61 *
62 * @see #getGen()
63 * @see #GEN_LENGTH
64 */
65 int GEN_POS = 6;
66 /**
67 * Position in bytes of the Issued date from the start of
68 * {@code queue.dat}.
69 *
70 * @see #getIssue()
71 * @see #ISSUE_LENGTH
72 */
73 int ISSUE_POS = 8;
74 // </editor-fold>
75 // <editor-fold defaultstate="collapsed" desc="length-constants">
76 /**
77 * Length in bytes of the Project Number in {@code queue.dat}.
78 *
79 * @see #getProj()
80 * @see #PROJ_POS
81 */
82 int PROJ_LENGTH = 2;
83 /**
84 * Length in bytes of the Run Number in {@code queue.dat}.
85 *
86 * @see #getRun()
87 * @see #RUN_POS
88 */
89 int RUN_LENGTH = 2;
90 /**
91 * Length in bytes of the Clone Number in {@code queue.dat}.
92 *
93 * @see #getClone()
94 * @see #CLONE_POS
95 */
96 int CLONE_LENGTH = 2;
97 /**
98 * Length in bytes of the Generation Number in {@code queue.dat}.
99 *
100 * @see #getGen()
101 * @see #GEN_POS
102 */
103 int GEN_LENGTH = 2;
104 /**
105 * Length in bytes of the Issued date in {@code queue.dat}.
106 *
107 * @see #getIssue()
108 * @see #ISSUE_POS
109 */
110 int ISSUE_LENGTH = 8;
111 // </editor-fold>
112 // <editor-fold desc="accessors">
113 /**
114 * Get the value of the Project Number.
115 *
116 * @return the value of proj
117 */
118 int getProj();
119
120 /**
121 * Get the value of Run.
122 *
123 * @return the value of run
124 */
125 int getRun();
126
127 /**
128 * Get the value of Clone.
129 *
130 * @return the value of clone
131 */
132 int getClone();
133
134 /**
135 * Get the value of Generation.
136 *
137 * @return the value of gen
138 */
139 int getGen();
140
141 /**
142 * Get the value of Issued.
143 *
144 * @return the value of issue
145 */
146 Date getIssue();
147 // </editor-fold>
148
149 /**
150 * Update all values.
151 */
152 void update();
153 }