| Harjoitus.java |
1 package kalenteri;
2
3 import java.io.OutputStream;
4 import java.io.PrintStream;
5 import fi.jyu.mit.ohj2.*;
6
7 /**
8 * Yksittäinen harjoitus.
9 * @author Timo Koski
10 * @version 1.0 / 25.2.2012
11 */
12
13 public class Harjoitus {
14
15 private int id;
16 private String pvm = "";
17 private int pv = 1;
18 private int kk = 1;
19 private int vv = 2012;
20 private String paikka = "";
21 private String alkuaika = "";
22 private String loppuaika = "";
23 private String seura = "";
24 private String opettaja = "";
25 private String lisatieto = "";
26 private boolean onkoRoda = false;
27
28 private static int next_id = 0;
29
30 /* MUODOSTAJAT JA REKISTERÖINTI */
31 /**
32 * Oletusmuodostaja.
33 * @version Kutsuu toista muodostajaa satunnaismerkkijonolla
34 */
35 public Harjoitus() {
36 this("01.01.2012");
37 }
38 /**
39 * Muodostaja, johon parametrina päivämäärä-String.
40 * Luo automaattisesti uuden prototyyppiharjoituksen
41 * ja rekisteroi sen.
42 * @param pvm
43 */
44 public Harjoitus(String pvm) {
45 StringBuffer sb = new StringBuffer(pvm);
46 try {
47 this.pvm = pvm;
48 this.pv = Integer.parseInt(Mjonot.erota(sb,'.'));
49 this.kk = Integer.parseInt(Mjonot.erota(sb,'.'));
50 this.vv = Integer.parseInt(sb.toString());
51 } catch (NumberFormatException ex) {
52 System.err.println("Virhe luettaessa päivämäärää tiedostosta.\nAsetetaan päivämääräksi oletukset.");
53 }
54 uusiHarj();
55 rekisteroi();
56 }
57 /**
58 * Esimerkkiharjoitustyöstä lainattu rekisteröimismetodi.
59 * @return id
60 */
61 public int rekisteroi() {
62 id = next_id;
63 next_id++;
64 return id;
65 }
66
67 /* APUMETODEJA: UUSIHARJOITUS VAKIOARVOILLA JA RANDOM PVM */
68 /**
69 * Apumetodi, jolla luodaan uusi harjoitus arvotulla päivämäärällä
70 * ja muilla vakioarvoilla.
71 * @version ht5
72 */
73 public void uusiHarj() {
74 this.alkuaika = "20:00";
75 this.loppuaika = "22:00";
76 this.seura = "Forca Natural";
77 this.onkoRoda = true;
78 }
79 /**
80 * Metodi, joka arpoo päivämäärä-Stringin.
81 * @version ht5
82 * @return pvm, arvottu
83 */
84 public static String getRndPvm() {
85 String pvm = "" + Math.random()*28 + "." + Math.random()*12 + ".2011";
86 return pvm;
87 }
88
89 /* SETTERIT JA GETTERIT */
90 /**
91 * @param id
92 */
93 public void setId(int id) {
94 this.id = id;
95 }
96 /**
97 * Asetetaan päivämäärä randomina.
98 * @version ht5
99 */
100 public void setPvm() {
101 this.pv = (int) (Math.random()*28);
102 this.kk = (int) (Math.random()*12);
103 this.vv = (int) (2010 + (Math.random()*2));
104 }
105 /**
106 * Palauttaa harjoituksen yksilöivän id:n.
107 * @return id
108 */
109 public int getId() {
110 return id;
111 }
112 /**
113 * Päivämäärän syöttämismetodi.
114 * @param pvmSyote
115 */
116 public void setPvm(String pvmSyote) {
117 String tempSyote;
118 if (!pvmSyote.equals("")) {
119 StringBuffer sb = new StringBuffer(pvmSyote);
120 this.pvm = pvmSyote;
121 tempSyote = Mjonot.erota(sb,'.');
122 this.pv = Integer.parseInt(tempSyote);
123 tempSyote = Mjonot.erota(sb,'.');
124 this.kk = Integer.parseInt(tempSyote);
125 tempSyote = Mjonot.erota(sb,'.');
126 this.vv = Integer.parseInt(tempSyote);
127 }
128 }
129 /**
130 * Haetaan String-muotoinen päivämäärä.
131 * @version ht5
132 * @return pvm
133 */
134 public String getHarjPvm() {
135 return pvm;
136 }
137 /**
138 * Haetaan harjoituksen päivän arvo.
139 * @return pv
140 */
141 public int getHarjPv() {
142 return pv;
143 }
144 /**
145 * Haetaan harjoituksen kuukauden arvo.
146 * @return kk
147 */
148 public int getHarjKk() {
149 return kk;
150 }
151 /**
152 * Haetaan harjoituksen vuoden arvo.
153 * @return vv
154 */
155 public int getHarjVv() {
156 return vv;
157 }
158 /**
159 * Haetaan aloitusaika merkkijonona.
160 * @return alkuaika
161 */
162 public String getAloitusAika() {
163 return alkuaika;
164 }
165 /**
166 * Haetaan lopetusaika merkkijonona.
167 * @return loppuaika
168 */
169 public String getLopetusAika() {
170 return loppuaika;
171 }
172 /**
173 * Asetetaan aloitus- ja lopetusaika.
174 * @param aloitusAika
175 */
176 public void setAloitusaika(String aloitusAika){
177 this.alkuaika = aloitusAika;
178 }
179 /**
180 * @param lopetusAika
181 */
182 public void setLopetusaika(String lopetusAika) {
183 this.loppuaika = lopetusAika;
184 }
185 /**
186 * Haetaan harjoituksen paikka merkkijonona.
187 * @return paikka
188 */
189 public String getPaikka() {
190 return paikka;
191 }
192 /**
193 * Asetetaan paikka merkkijonona.
194 * @param paikka
195 */
196 public void setPaikka(String paikka) {
197 this.paikka = paikka;
198 }
199 /**
200 * Haetaan harjoituksen seura.
201 * @return seura
202 */
203 public String getSeura() {
204 return seura;
205 }
206 /**
207 * Asetetaan harjoituksen seura.
208 * @param seura
209 */
210 public void setSeura(String seura) {
211 this.seura = seura;
212 }
213 /**
214 * @return opettaja
215 */
216 public String getOpettaja() {
217 return opettaja;
218 }
219 /**
220 * @param ope
221 */
222 public void setOpettaja(String ope) {
223 this.opettaja = ope;
224 }
225 /**
226 * Haetaan lisätiedot.
227 * @return lisätieto
228 */
229 public String getLisatieto() {
230 return lisatieto;
231 }
232 /**
233 * Asetetaan lisätiedot.
234 * @param lisatieto
235 */
236 public void setLisatieto(String lisatieto) {
237 this.lisatieto = lisatieto;
238 }
239 /**
240 * Haetaan onkoRoda:n arvo
241 * @return onkoRoda
242 */
243 public boolean getRoda() {
244 return onkoRoda;
245 }
246 /**
247 * Asetetaan arvo onkoRoda.
248 * @param roda
249 */
250 public void setRoda(boolean roda) {
251 this.onkoRoda = roda;
252 }
253
254 /* TULOSTA-METODIT JA TOSTRING */
255 /**
256 * Tulostus-metodi johon parametrina PrintStream.
257 * @version ht5, otetaan myös returnina sama merkkijono.
258 * @param out
259 * @return temp, @version ht5
260 */
261 public String tulosta(PrintStream out) {
262 String temp = ((String.format("%03d", id, 3))+" "+pv+"."+kk+"."+vv+"\n"+
263 alkuaika+" "+loppuaika+" "+paikka+"\n"+seura+"\n"+"==="+"\n");
264 out.println((String.format("%03d", id, 3))+" "+pv+"."+kk+"."+vv);
265 out.println(alkuaika+" "+loppuaika+" "+paikka);
266 out.println(seura);
267 out.println("===");
268 return temp;
269 }
270 /**
271 * Tulosta-metodi, johon parametrina OutputStream.
272 * Metodi-kutsuu toista tulosta-metodia PrintStream-parametrilla.
273 * @param os
274 */
275 public void tulosta(OutputStream os) {
276 tulosta(new PrintStream(os));
277 }
278 /**
279 * toString-metodi, joka on käytännössä kopio tulosta()-metodista.
280 * Poislukien parametri.
281 * toString tulostaa System.outtiin.
282 */
283 @Override
284 public String toString() {
285 String temp = (pv+"."+kk+"."+vv+"\n"+alkuaika+" "+loppuaika+" "
286 +paikka+"\n"+seura+"\n"+"==="+"\n");
287 /*
288 String temp = ((String.format("%03d", id, 3))+" "+pv+"."+kk+"."+vv+"\n"+
289 alkuaika+" "+loppuaika+" "+paikka+"\n"+seura+"\n"+"==="+"\n");
290 */
291 /*
292 System.out.println((String.format("%03d", id, 3))+" "+pv+"."+kk+"."+vv);
293 System.out.println(alkuaika+" "+loppuaika+" "+paikka);
294 System.out.println(seura);
295 System.out.println("===");
296 */
297 return temp;
298 }
299
300 /* PÄÄOHJELMA */
301 /**
302 * Pääohjelma luokan testaamista varten
303 * @param args ei käytössä
304 * @example
305 * <pre name="test">
306 * Harjoitus s = new Harjoitus();
307 * s.uusiHarj();
308 * String tulos = "000 "+s.getHarjPv()+"."+s.getHarjKk()+"."+s.getHarjVv()+"\n"+
309 * "20:00 22:00 \n"+
310 * "Boa Vontade\n"+
311 * "===\n";
312 * s.setSeura("Boa Vontade");
313 * s.tulosta(System.out) === tulos;
314 * </pre>
315 */
316 public static void main(String[] args) {
317 Harjoitus a = new Harjoitus();
318 Harjoitus b = new Harjoitus();
319 Harjoitus c = new Harjoitus();
320 c.tulosta(System.out);
321 c.setPaikka("Helsinki");
322 c.setSeura("Capoeira Capital");
323 c.tulosta(System.out);
324 a.tulosta(System.out);
325 b.tulosta(System.out);
326 }
327 }
328