Skip to content
Snippets Groups Projects
Commit 68d97120 authored by aichinos's avatar aichinos
Browse files

nyt toString toimii

parent 89be5a5a
No related branches found
No related tags found
No related merge requests found
package mmkurssit;
import java.io.OutputStream;
import apumetodit.RandomNumero;
//import java.io.OutputStream;
//import apumetodit.RandomNumero;
import fi.jyu.mit.ohj2.Mjonot;
import java.io.PrintStream;
/**
......@@ -31,12 +33,14 @@ public class Kurssi {
/**
* TODO myöhemmin: ota käyttöön!
*
* Tulostetaan kurssin tiedot
* @param os teitovirta johon tulostetaan
*/
public void tulosta(OutputStream os) {
//tulsota(new PrintStream(os));
}
//public void tulosta(OutputStream os) {
// //tulsota(new PrintStream(os));
//}
/**
......@@ -52,7 +56,7 @@ public class Kurssi {
/**
* Palauttaa kurssin tunnusnumeron.
* Palauttaa kurssin ID
* @return kurssin tunnusnumero
*/
public int getID() {
......@@ -60,22 +64,6 @@ public class Kurssi {
}
/**
* @return kurssin nimi
*/
public String getNimi() {
return this.nimi;
}
/**
* @return kurssin opettajan sukunimi + etunimi
*/
public String openNimet() {
return this.opeSukunimi + " " + this.opeEtunimi;
}
/**
* Antaa kurssille seuraavan tunnusnumeron
* @example
......@@ -87,13 +75,40 @@ public class Kurssi {
* ohjelmointi.rekisteroi();
* int n1 = saksa.getID();
* int n2 = ohjelmointi.getID();
* n1 === 1;
* n2 === 2;
* n2 === n1+1;
* </pre>
*/
public void rekisteroi() {
this.kurssiID = nextID;
nextID++;
//this.kurssiID = nextID;
//nextID++;
this.setID(nextID);
}
/**
* Asettaa kurssin ID ja samalla varmista, että
* seuraava numero on aina suurempi kuin tähän mennessä suurin.
* @param nro asetettava kurssi ID
*/
public void setID(int nro) { // TODO: ristiriita rekisteroi()-metodin kanssa??????
this.kurssiID = nro;
if (this.kurssiID >= nextID) nextID = this.kurssiID+1;
}
/**
* @return kurssin nimi
*/
public String getNimi() {
return this.nimi;
}
/**
* @return kurssin opettajan sukunimi + etunimi
*/
public String openNimet() {
return this.opeSukunimi + " " + this.opeEtunimi;
}
......@@ -102,13 +117,59 @@ public class Kurssi {
* TODO: POISTA, kun kaikki toimii!!
*
*/
void tayta() {
this.nimi = "Esimerkkikurssi: " + RandomNumero.rand(1,100);
public void tayta() {
this.nimi = "Esimerkkikurssi"; //+ RandomNumero.rand(1,100);
this.opeEtunimi = "Vesa";
this.opeSukunimi = "Kokko";
}
/**
* Tilanne: 11.3. yritin luennon videon kanssa yritin tehdä
* tiedoston tallentaminen, lukeminen, Kurssi.toString() metodi, parse(), setID()
* --ei toimi. Ennen sitä testi oli ok.
*
* !!HUOM
* Tämä metodi tarvitsee parantaa, nyt ei ole hyvin käyttökelpoinen.
* toString-metodin testaamista varten tehty
* syötetään kurssi-oiliolle tiedot
* @param rivi tiedot string-muotona
*/
public void parse(String rivi) {
StringBuilder tiedot = new StringBuilder(rivi);
setID(Mjonot.erota(tiedot, '|', getID()));
nimi = Mjonot.erota(tiedot, '|', nimi);
opeSukunimi = Mjonot.erota(tiedot, '|', opeSukunimi);
opeEtunimi = Mjonot.erota(tiedot, '|', opeEtunimi);
}
/**
* TODO ??? Testi ei mene läpi, Kurssi-olion alustaminen ei onnistu ????
*
* Palauttaa kurssin tiedot Stringina, jonka voi tallentaa tiedostoon
* @return kurssin tiedot String-muotona
* @example
* <pre name="test">
* Kurssi hollanti = new Kurssi();
* hollanti.parse("1|Esimerkkikurssi|Kokko |Vesa");
* hollanti.toString() === "1|Esimerkkikurssi|Kokko Vesa";
* </pre>
*/
@Override
public String toString() {
return ""+
this.getID()+"|"+
this.nimi+"|"+
this.openNimet();
//TODO myöhemmin mieti: voisi olla suku + etu, kumpi olisi parempi muoto tallentaa jatkossa
}
//MAIN========================================================
/**
......
package mmkurssit;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.PrintStream;
import java.util.Scanner;
/**
* Kopioi CRC-kortin tietoa tähän
* @author aichinos
......@@ -10,15 +17,16 @@ public class Kurssit {
private Kurssi[] kurssit;
private int kpl = 0;
private static String tiedostonNimi = "";
private static final int maxKpl = 5;//montako kurssia yhdelle taulukolle
private static final int MAX_KPL = 5;//montako kurssia yhdelle taulukolle
/**
* Alustetaan kurssit, johon säilytetään rekisteroiityjen kurssien viitteet
*/
public Kurssit() {
this.kurssit = new Kurssi[maxKpl];
this.kurssit = new Kurssi[MAX_KPL];
}
......@@ -58,6 +66,54 @@ public class Kurssit {
}
/**
* HUOM!! Tee loppuun asti!!! 12.3.
* Lukee kurssi-lista tiedostosta.
* @param hakemisto tiedoston hakemisto
* @throws SailoException jos lukeminen ei onnistu
*/
public void lueTiedostosta(String hakemisto) throws SailoException {
tiedostonNimi = hakemisto + "/kurssit.dat";
File ftied = new File(tiedostonNimi);
try (Scanner fileIn = new Scanner(new FileInputStream(ftied))){
while ( fileIn.hasNext() ) {
String s = fileIn.nextLine();
if( s == null || "".equals(s) || s.charAt(0) == ';') {
continue;
}
Kurssi kurssi = new Kurssi();
kurssi.parse(s);//parse pitää muokata!!
lisaa(kurssi);
}
} catch (FileNotFoundException e) {
throw new SailoException("Ei saa luettua tiedostoa" + tiedostonNimi);
}
}
/**
* Tallentaa kurssi-data tiedostoon.
* @param hakemisto mihin tallennetaan
* @throws SailoException jos tallennus ei onnistu
*/
public void tallenna(String hakemisto) throws SailoException{
//TODO: hakemiston luominen tähän
File ftied = new File(hakemisto + "/kurssit.dat");
try (PrintStream fileOut = new PrintStream(new FileOutputStream(ftied, true))){
// true = uusi text appendoidaan vanhan tekstin perälle
for(int i=0; i<this.getKpl(); i++) {
Kurssi kurssi = this.anna(i);
fileOut.println(kurssi.toString());
}
} catch (FileNotFoundException e) {
throw new SailoException("Tiedosto " + ftied.getAbsolutePath());
}
}
/**
* Palauttaa rekisteroityjen kurssien kpl
* @return kurssien lukuäärä
......
......@@ -7,7 +7,7 @@ import mmkurssit.*;
/**
* Test class made by ComTest
* @version 2025.02.25 20:00:59 // Generated by ComTest
* @version 2025.03.12 10:15:28 // Generated by ComTest
*
*/
@SuppressWarnings("all")
......@@ -16,17 +16,26 @@ public class KurssiTest {
// Generated by ComTest BEGIN
/** testRekisteroi67 */
/** testRekisteroi97 */
@Test
public void testRekisteroi67() { // Kurssi: 67
public void testRekisteroi97() { // Kurssi: 97
Kurssi saksa = new Kurssi();
assertEquals("From: Kurssi line: 69", 0, saksa.getID());
assertEquals("From: Kurssi line: 99", 0, saksa.getID());
saksa.rekisteroi();
Kurssi ohjelmointi = new Kurssi();
ohjelmointi.rekisteroi();
int n1 = saksa.getID();
int n2 = ohjelmointi.getID();
assertEquals("From: Kurssi line: 75", 1, n1);
assertEquals("From: Kurssi line: 76", 2, n2);
assertEquals("From: Kurssi line: 105", n1+1, n2);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testToString156 */
@Test
public void testToString156() { // Kurssi: 156
Kurssi hollanti = new Kurssi();
hollanti.parse("1|Esimerkkikurssi|Kokko |Vesa");
assertEquals("From: Kurssi line: 159", "1|Esimerkkikurssi|Kokko Vesa", hollanti.toString());
} // Generated by ComTest END
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment