Skip to content
Commits on Source (1)
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/FXGui"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry combineaccessrules="false" kind="src" path="/FXGui"/>
<classpathentry combineaccessrules="false" kind="src" path="/ali"/>
<classpathentry kind="output" path="bin"/>
</classpath>
......@@ -10,14 +10,8 @@
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
......@@ -13,6 +13,7 @@
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="${dir.jarfile}/bin"/>
<fileset dir="E:/kurssit/ohj2/ali/bin"/>
<fileset dir="E:/kurssit/ohj2/FXExamples/FXGui/bin"/>
</jar>
</target>
......
1|1|Pitsin nypläys|1950|19
2|1|Pitsin nypläys|1929|8
3|1|Pitsin nypläys|1972|23
4|1|Pitsin nypläys|1975|48
5|2|Pitsin nypläys|1900|27
6|2|Pitsin nypläys|1943|18
7|3|Pitsin nypläys|1990|8
8|3|Pitsin nypläys|1902|56
9|4|Pitsin nypläys|1973|34
10|4|Pitsin nypläys|1920|52
11|4|Pitsin nypläys|1976|31
12|4|Pitsin nypläys|1999|25
13|4|Pitsin nypläys|1931|40
5
1|Ankka Aku 8810|241122-6278|Paratiisitie 13|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
2|Ankka Aku 9979|150380-576A|Paratiisitie 13|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
3|Ankka Aku 9186|211219-1820|Paratiisitie 13|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
4|Ankka Aku 1559|110801-2905|Paratiisitie 13|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
No preview for this file type
......@@ -6,7 +6,8 @@ import java.io.PrintStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;
import java.util.Collection;
import java.util.List;
import java.util.ResourceBundle;
import fi.jyu.mit.fxgui.ComboBoxChooser;
......@@ -22,9 +23,9 @@ import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.text.Font;
import kerho.Harrastus;
import kerho.Jasen;
import kerho.Kerho;
import kerho.Harrastus;
import kerho.SailoException;
/**
......@@ -33,8 +34,8 @@ import kerho.SailoException;
* @author vesal
* @version 31.12.2015
* @version 5.1.2015
* @version 5.2.2017 - lisätty jäsenien käsittely
* @version 5.2.2017 - lisätty harrastusten käsittely
* @version 5.2.2017 - lisätty jäsenien käsittely
* @version 5.2.2017 - lisätty harrastusten käsittely
*/
public class KerhoGUIController implements Initializable {
......@@ -43,9 +44,7 @@ public class KerhoGUIController implements Initializable {
@FXML private Label labelVirhe;
@FXML private ScrollPane panelJasen;
@FXML private ListChooser<Jasen> chooserJasenet;
private String kerhonnimi = "kelmit";
@Override
public void initialize(URL url, ResourceBundle bundle) {
......@@ -54,12 +53,8 @@ public class KerhoGUIController implements Initializable {
@FXML private void handleHakuehto() {
String hakukentta = cbKentat.getSelectedText();
String ehto = hakuehto.getText();
if ( ehto.isEmpty() )
naytaVirhe(null);
else
naytaVirhe("Ei osata vielä hakea " + hakukentta + ": " + ehto);
if ( jasenKohdalla != null )
hae(jasenKohdalla.getTunnusNro());
}
......@@ -101,7 +96,7 @@ public class KerhoGUIController implements Initializable {
@FXML private void handleUusiHarrastus() {
uusiHarrastus();
uusiHarrastus();
}
......@@ -129,6 +124,7 @@ public class KerhoGUIController implements Initializable {
//===========================================================================================
// Tästä eteenpäin ei käyttöliittymään suoraan liittyvää koodia
private String kerhonnimi = "kelmit";
private Kerho kerho;
private Jasen jasenKohdalla;
private TextArea areaJasen = new TextArea();
......@@ -168,14 +164,22 @@ public class KerhoGUIController implements Initializable {
/**
* Alustaa kerhon lukemalla sen valitun nimisestä tiedostosta
* @param nimi tiedosto josta kerhon tiedot luetaan
* @return null jos onnistuu, muuten virhe tekstinä
*/
protected void lueTiedosto(String nimi) {
protected String lueTiedosto(String nimi) {
kerhonnimi = nimi;
setTitle("Kerho - " + kerhonnimi);
String virhe = "Ei osata lukea vielä"; // TODO: tähän oikea tiedoston lukeminen
// if (virhe != null)
Dialogs.showMessageDialog(virhe);
}
try {
kerho.lueTiedostosta(nimi);
hae(0);
return null;
} catch (SailoException e) {
hae(0);
String virhe = e.getMessage();
if ( virhe != null ) Dialogs.showMessageDialog(virhe);
return virhe;
}
}
/**
......@@ -192,9 +196,16 @@ public class KerhoGUIController implements Initializable {
/**
* Tietojen tallennus
* @return null jos onnistuu, muuten virhe tekstinä
*/
private void tallenna() {
Dialogs.showMessageDialog("Tallennetetaan! Mutta ei toimi vielä");
private String tallenna() {
try {
kerho.tallenna();
return null;
} catch (SailoException ex) {
Dialogs.showMessageDialog("Tallennuksessa ongelmia! " + ex.getMessage());
return ex.getMessage();
}
}
......@@ -214,11 +225,14 @@ public class KerhoGUIController implements Initializable {
protected void naytaJasen() {
jasenKohdalla = chooserJasenet.getSelectedObject();
if (jasenKohdalla == null) return;
if (jasenKohdalla == null) {
areaJasen.clear();
return;
}
areaJasen.setText("");
try (PrintStream os = TextAreaOutputStream.getTextPrintStream(areaJasen)) {
tulosta(os,jasenKohdalla);
tulosta(os,jasenKohdalla);
}
}
......@@ -228,13 +242,27 @@ public class KerhoGUIController implements Initializable {
* @param jnro jäsenen numero, joka aktivoidaan haun jälkeen
*/
protected void hae(int jnro) {
int k = cbKentat.getSelectionModel().getSelectedIndex();
String ehto = hakuehto.getText();
if (k > 0 || ehto.length() > 0)
naytaVirhe(String.format("Ei osata hakea (kenttä: %d, ehto: %s)", k, ehto));
else
naytaVirhe(null);
chooserJasenet.clear();
int index = 0;
for (int i = 0; i < kerho.getJasenia(); i++) {
Jasen jasen = kerho.annaJasen(i);
if (jasen.getTunnusNro() == jnro) index = i;
chooserJasenet.add(jasen.getNimi(), jasen);
Collection<Jasen> jasenet;
try {
jasenet = kerho.etsi(ehto, k);
int i = 0;
for (Jasen jasen:jasenet) {
if (jasen.getTunnusNro() == jnro) index = i;
chooserJasenet.add(jasen.getNimi(), jasen);
i++;
}
} catch (SailoException ex) {
Dialogs.showMessageDialog("Jäsenen hakemisessa ongelmia! " + ex.getMessage());
}
chooserJasenet.setSelectedIndex(index); // tästä tulee muutosviesti joka näyttää jäsenen
}
......@@ -257,18 +285,22 @@ public class KerhoGUIController implements Initializable {
}
/**
* Tekee uuden tyhjän harrastuksen editointia varten
*/
public void uusiHarrastus() {
if ( jasenKohdalla == null ) return;
Harrastus har = new Harrastus();
har.rekisteroi();
har.vastaaPitsinNyplays(jasenKohdalla.getTunnusNro());
kerho.lisaa(har);
hae(jasenKohdalla.getTunnusNro());
}
/**
* Tekee uuden tyhjän harrastuksen editointia varten
*/
public void uusiHarrastus() {
if ( jasenKohdalla == null ) return;
Harrastus har = new Harrastus();
har.rekisteroi();
har.vastaaPitsinNyplays(jasenKohdalla.getTunnusNro());
try {
kerho.lisaa(har);
} catch (SailoException e) {
Dialogs.showMessageDialog("Ongelmia lisäämisessä! " + e.getMessage());
}
hae(jasenKohdalla.getTunnusNro());
}
/**
* @param kerho Kerho jota käytetään tässä käyttöliittymässä
......@@ -304,9 +336,13 @@ public class KerhoGUIController implements Initializable {
os.println("----------------------------------------------");
jasen.tulosta(os);
os.println("----------------------------------------------");
List<Harrastus> harrastukset = kerho.annaHarrastukset(jasen);
for (Harrastus har:harrastukset)
har.tulosta(os);
try {
List<Harrastus> harrastukset = kerho.annaHarrastukset(jasen);
for (Harrastus har:harrastukset)
har.tulosta(os);
} catch (SailoException ex) {
Dialogs.showMessageDialog("Harrastusten hakemisessa ongelmia! " + ex.getMessage());
}
}
......@@ -317,11 +353,13 @@ public class KerhoGUIController implements Initializable {
public void tulostaValitut(TextArea text) {
try (PrintStream os = TextAreaOutputStream.getTextPrintStream(text)) {
os.println("Tulostetaan kaikki jäsenet");
for (int i = 0; i < kerho.getJasenia(); i++) {
Jasen jasen = kerho.annaJasen(i);
Collection<Jasen> jasenet = kerho.etsi("", -1);
for (Jasen jasen:jasenet) {
tulosta(os, jasen);
os.println("\n\n");
}
} catch (SailoException ex) {
Dialogs.showMessageDialog("Jäsenen hakemisessa ongelmia! " + ex.getMessage());
}
}
}
......@@ -37,7 +37,13 @@ public class KerhoMain extends Application {
kerhoCtrl.setKerho(kerho);
primaryStage.show();
if ( !kerhoCtrl.avaa() ) Platform.exit();
Application.Parameters params = getParameters();
if ( params.getRaw().size() > 0 )
kerhoCtrl.lueTiedosto(params.getRaw().get(0));
else
if ( !kerhoCtrl.avaa() ) Platform.exit();
} catch(Exception e) {
e.printStackTrace();
}
......
package kanta.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import static kanta.HetuTarkistus.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2019.01.06 23:46:58 // Generated by ComTest
*
*/
public class HetuTarkistusTest {
// Generated by ComTest BEGIN
/** testHetunTarkistusMerkki23 */
@Test
public void testHetunTarkistusMerkki23() { // HetuTarkistus: 23
assertEquals("From: HetuTarkistus line: 24", 'N', hetunTarkistusMerkki("121212-222"));
assertEquals("From: HetuTarkistus line: 25", 'N', hetunTarkistusMerkki("121212-222S"));
assertEquals("From: HetuTarkistus line: 26", 'N', hetunTarkistusMerkki("121212-222N"));
assertEquals("From: HetuTarkistus line: 27", 'Y', hetunTarkistusMerkki("121212-231Y"));
assertEquals("From: HetuTarkistus line: 28", '7', hetunTarkistusMerkki("311212-2317"));
assertEquals("From: HetuTarkistus line: 29", '7', hetunTarkistusMerkki("311212-2317XY")); // vaikka on liikaa merkkejä
assertEquals("From: HetuTarkistus line: 30", 'F', hetunTarkistusMerkki("999999-9999XY")); // vaikka on pvm väärin
try {
assertEquals("From: HetuTarkistus line: 31", 'N', hetunTarkistusMerkki("12121A-222S"));
fail("HetuTarkistus: 31 Did not throw NumberFormatException");
} catch(NumberFormatException _e_){ _e_.getMessage(); }
try {
assertEquals("From: HetuTarkistus line: 32", 'N', hetunTarkistusMerkki("12121A-22"));
fail("HetuTarkistus: 32 Did not throw StringIndexOutOfBoundsException");
} catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); }
try {
assertEquals("From: HetuTarkistus line: 33", 'N', hetunTarkistusMerkki("121"));
fail("HetuTarkistus: 33 Did not throw StringIndexOutOfBoundsException");
} catch(StringIndexOutOfBoundsException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
}
\ No newline at end of file
package kerho;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
/**
......@@ -10,10 +17,11 @@ import java.util.*;
*/
public class Harrastukset implements Iterable<Harrastus> {
private String tiedostonNimi = "";
private boolean muutettu = false;
private String tiedostonPerusNimi = "";
/** Taulukko harrastuksista */
private final Collection<Harrastus> alkiot = new ArrayList<Harrastus>();
private final Collection<Harrastus> alkiot = new ArrayList<Harrastus>();
/**
......@@ -30,28 +38,105 @@ public class Harrastukset implements Iterable<Harrastus> {
*/
public void lisaa(Harrastus har) {
alkiot.add(har);
muutettu = true;
}
/**
* Lukee jäsenistön tiedostosta.
* TODO Kesken.
* @param hakemisto tiedoston hakemisto
* Lukee harrastukset tiedostosta.
* @param tied tiedoston nimen alkuosa
* @throws SailoException jos lukeminen epäonnistuu
*
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.io.File;
* Harrastukset harrasteet = new Harrastukset();
* Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(2);
* Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(1);
* Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(2);
* Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(1);
* Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(2);
* String tiedNimi = "testikelmit";
* File ftied = new File(tiedNimi+".dat");
* ftied.delete();
* harrasteet.lueTiedostosta(tiedNimi); #THROWS SailoException
* harrasteet.lisaa(pitsi21);
* harrasteet.lisaa(pitsi11);
* harrasteet.lisaa(pitsi22);
* harrasteet.lisaa(pitsi12);
* harrasteet.lisaa(pitsi23);
* harrasteet.tallenna();
* harrasteet = new Harrastukset();
* harrasteet.lueTiedostosta(tiedNimi);
* Iterator<Harrastus> i = harrasteet.iterator();
* i.next().toString() === pitsi21.toString();
* i.next().toString() === pitsi11.toString();
* i.next().toString() === pitsi22.toString();
* i.next().toString() === pitsi12.toString();
* i.next().toString() === pitsi23.toString();
* i.hasNext() === false;
* harrasteet.lisaa(pitsi23);
* harrasteet.tallenna();
* ftied.delete() === true;
* File fbak = new File(tiedNimi+".bak");
* fbak.delete() === true;
* </pre>
*/
public void lueTiedostosta(String hakemisto) throws SailoException {
tiedostonNimi = hakemisto + ".har";
throw new SailoException("Ei osata vielä lukea tiedostoa " + tiedostonNimi);
}
public void lueTiedostosta(String tied) throws SailoException {
setTiedostonPerusNimi(tied);
try ( BufferedReader fi = new BufferedReader(new FileReader(getTiedostonNimi())) ) {
String rivi;
while ( (rivi = fi.readLine()) != null ) {
rivi = rivi.trim();
if ( "".equals(rivi) || rivi.charAt(0) == ';' ) continue;
Harrastus har = new Harrastus();
har.parse(rivi); // voisi olla virhekäsittely
lisaa(har);
}
muutettu = false;
} catch ( FileNotFoundException e ) {
throw new SailoException("Tiedosto " + getTiedostonNimi() + " ei aukea");
} catch ( IOException e ) {
throw new SailoException("Ongelmia tiedoston kanssa: " + e.getMessage());
}
}
/**
* Tallentaa jäsenistön tiedostoon.
* TODO Kesken.
* Luetaan aikaisemmin annetun nimisestä tiedostosta
* @throws SailoException jos tulee poikkeus
*/
public void lueTiedostosta() throws SailoException {
lueTiedostosta(getTiedostonPerusNimi());
}
/**
* Tallentaa harrastukset tiedostoon.
* @throws SailoException jos talletus epäonnistuu
*/
public void talleta() throws SailoException {
throw new SailoException("Ei osata vielä tallettaa tiedostoa " + tiedostonNimi);
public void tallenna() throws SailoException {
if ( !muutettu ) return;
File fbak = new File(getBakNimi());
File ftied = new File(getTiedostonNimi());
fbak.delete(); // if ... System.err.println("Ei voi tuhota");
ftied.renameTo(fbak); // if ... System.err.println("Ei voi nimetä");
try ( PrintWriter fo = new PrintWriter(new FileWriter(ftied.getCanonicalPath())) ) {
for (Harrastus har : this) {
fo.println(har.toString());
}
} catch ( FileNotFoundException ex ) {
throw new SailoException("Tiedosto " + ftied.getName() + " ei aukea");
} catch ( IOException ex ) {
throw new SailoException("Tiedoston " + ftied.getName() + " kirjoittamisessa ongelmia");
}
muutettu = false;
}
......@@ -64,6 +149,42 @@ public class Harrastukset implements Iterable<Harrastus> {
}
/**
* Asettaa tiedoston perusnimen ilan tarkenninta
* @param tied tallennustiedoston perusnimi
*/
public void setTiedostonPerusNimi(String tied) {
tiedostonPerusNimi = tied;
}
/**
* Palauttaa tiedoston nimen, jota käytetään tallennukseen
* @return tallennustiedoston nimi
*/
public String getTiedostonPerusNimi() {
return tiedostonPerusNimi;
}
/**
* Palauttaa tiedoston nimen, jota käytetään tallennukseen
* @return tallennustiedoston nimi
*/
public String getTiedostonNimi() {
return tiedostonPerusNimi + ".dat";
}
/**
* Palauttaa varakopiotiedoston nimen
* @return varakopiotiedoston nimi
*/
public String getBakNimi() {
return tiedostonPerusNimi + ".bak";
}
/**
* Iteraattori kaikkien harrastusten läpikäymiseen
* @return harrastusiteraattori
......@@ -136,7 +257,7 @@ public class Harrastukset implements Iterable<Harrastus> {
public List<Harrastus> annaHarrastukset(int tunnusnro) {
List<Harrastus> loydetyt = new ArrayList<Harrastus>();
for (Harrastus har : alkiot)
if (har.getJasenNro() == tunnusnro) loydetyt.add(har);
if ( har.getJasenNro() == tunnusnro ) loydetyt.add(har);
return loydetyt;
}
......
package kerho;
import java.io.*;
import fi.jyu.mit.ohj2.Mjonot;
import static kanta.HetuTarkistus.rand;
/**
......@@ -109,9 +111,78 @@ public class Harrastus {
/**
* Testiohjelma Harrastukselle.
* @param args ei käytössä
* Asettaa tunnusnumeron ja samalla varmistaa että
* seuraava numero on aina suurempi kuin tähän mennessä suurin.
* @param nr asetettava tunnusnumero
*/
private void setTunnusNro(int nr) {
tunnusNro = nr;
if ( tunnusNro >= seuraavaNro ) seuraavaNro = tunnusNro + 1;
}
/**
* Palauttaa harrastuksen tiedot merkkijonona jonka voi tallentaa tiedostoon.
* @return harrastus tolppaeroteltuna merkkijonona
* @example
* <pre name="test">
* Harrastus harrastus = new Harrastus();
* harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
* harrastus.toString() === "2|10|Kalastus|1949|22";
* </pre>
*/
@Override
public String toString() {
return "" + getTunnusNro() + "|" + jasenNro + "|" + ala + "|" + aloitusvuosi + "|" + tuntiaViikossa;
}
/**
* Selvitää harrastuksen tiedot | erotellusta merkkijonosta.
* Pitää huolen että seuraavaNro on suurempi kuin tuleva tunnusnro.
* @param rivi josta harrastuksen tiedot otetaan
* @example
* <pre name="test">
* Harrastus harrastus = new Harrastus();
* harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
* harrastus.getJasenNro() === 10;
* harrastus.toString() === "2|10|Kalastus|1949|22";
*
* harrastus.rekisteroi();
* int n = harrastus.getTunnusNro();
* harrastus.parse(""+(n+20));
* harrastus.rekisteroi();
* harrastus.getTunnusNro() === n+20+1;
* harrastus.toString() === "" + (n+20+1) + "|10|Kalastus|1949|22";
* </pre>
*/
public void parse(String rivi) {
StringBuffer sb = new StringBuffer(rivi);
setTunnusNro(Mjonot.erota(sb, '|', getTunnusNro()));
jasenNro = Mjonot.erota(sb, '|', jasenNro);
ala = Mjonot.erota(sb, '|', ala);
aloitusvuosi = Mjonot.erota(sb, '|', aloitusvuosi);
tuntiaViikossa = Mjonot.erota(sb, '|', tuntiaViikossa);
}
@Override
public boolean equals(Object obj) {
if ( obj == null ) return false;
return this.toString().equals(obj.toString());
}
@Override
public int hashCode() {
return tunnusNro;
}
/**
* Testiohjelma Harrastukselle.
* @param args ei käytössä
*/
public static void main(String[] args) {
Harrastus har = new Harrastus();
har.vastaaPitsinNyplays(2);
......
......@@ -2,6 +2,7 @@ package kerho;
import java.io.*;
import fi.jyu.mit.ohj2.Mjonot;
import static kanta.HetuTarkistus.*;
/**
......@@ -131,6 +132,97 @@ public class Jasen {
}
/**
* Asettaa tunnusnumeron ja samalla varmistaa että
* seuraava numero on aina suurempi kuin tähän mennessä suurin.
* @param nr asetettava tunnusnumero
*/
private void setTunnusNro(int nr) {
tunnusNro = nr;
if (tunnusNro >= seuraavaNro) seuraavaNro = tunnusNro + 1;
}
/**
* Palauttaa jäsenen tiedot merkkijonona jonka voi tallentaa tiedostoon.
* @return jäsen tolppaeroteltuna merkkijonona
* @example
* <pre name="test">
* Jasen jasen = new Jasen();
* jasen.parse(" 3 | Ankka Aku | 030201-111C");
* jasen.toString().startsWith("3|Ankka Aku|030201-111C|") === true; // on enemmäkin kuin 3 kenttää, siksi loppu |
* </pre>
*/
@Override
public String toString() {
return "" +
getTunnusNro() + "|" +
nimi + "|" +
hetu + "|" +
katuosoite + "|" +
postinumero + "|" +
postiosoite + "|" +
kotipuhelin + "|" +
tyopuhelin + "|" +
autopuhelin + "|" +
liittymisvuosi + "|" +
jmaksu + "|" +
maksu + "|" +
lisatietoja;
}
/**
* Selvitää jäsenen tiedot | erotellusta merkkijonosta
* Pitää huolen että seuraavaNro on suurempi kuin tuleva tunnusNro.
* @param rivi josta jäsenen tiedot otetaan
*
* @example
* <pre name="test">
* Jasen jasen = new Jasen();
* jasen.parse(" 3 | Ankka Aku | 030201-111C");
* jasen.getTunnusNro() === 3;
* jasen.toString().startsWith("3|Ankka Aku|030201-111C|") === true; // on enemmäkin kuin 3 kenttää, siksi loppu |
*
* jasen.rekisteroi();
* int n = jasen.getTunnusNro();
* jasen.parse(""+(n+20)); // Otetaan merkkijonosta vain tunnusnumero
* jasen.rekisteroi(); // ja tarkistetaan että seuraavalla kertaa tulee yhtä isompi
* jasen.getTunnusNro() === n+20+1;
*
* </pre>
*/
public void parse(String rivi) {
StringBuffer sb = new StringBuffer(rivi);
setTunnusNro(Mjonot.erota(sb, '|', getTunnusNro()));
nimi = Mjonot.erota(sb, '|', nimi);
hetu = Mjonot.erota(sb, '|', hetu);
katuosoite = Mjonot.erota(sb, '|', katuosoite);
postinumero = Mjonot.erota(sb, '|', postinumero);
postiosoite = Mjonot.erota(sb, '|', postiosoite);
kotipuhelin = Mjonot.erota(sb, '|', kotipuhelin);
tyopuhelin = Mjonot.erota(sb, '|', tyopuhelin);
autopuhelin = Mjonot.erota(sb, '|', autopuhelin);
liittymisvuosi = Mjonot.erota(sb, '|', liittymisvuosi);
jmaksu = Mjonot.erota(sb, '|', jmaksu);
maksu = Mjonot.erota(sb, '|', maksu);
lisatietoja = Mjonot.erota(sb, '|', lisatietoja);
}
@Override
public boolean equals(Object jasen) {
if ( jasen == null ) return false;
return this.toString().equals(jasen.toString());
}
@Override
public int hashCode() {
return tunnusNro;
}
/**
* Testiohjelma jäsenelle.
* @param args ei käytössä
......
package kerho;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* Kerhon jäsenistö joka osaa mm. lisätä uuden jäsenen
*
* @author Vesa Lappalainen
* @version 1.0, 22.02.2003
* @version 1.1, 19.02.2012
* @version 1.2, 23.02.2014 - tiedostot hakemistossa
*/
public class Jasenet {
private static final int MAX_JASENIA = 5;
private int lkm = 0;
private String tiedostonNimi = "";
private Jasen alkiot[] = new Jasen[MAX_JASENIA];
public class Jasenet implements Iterable<Jasen> {
private static final int MAX_JASENIA = 5;
private boolean muutettu = false;
private int lkm = 0;
private String kokoNimi = "";
private String tiedostonPerusNimi = "nimet";
private Jasen alkiot[] = new Jasen[MAX_JASENIA];
/**
......@@ -47,9 +63,10 @@ public class Jasenet {
* </pre>
*/
public void lisaa(Jasen jasen) throws SailoException {
if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita");
if ( lkm >= alkiot.length ) throw new SailoException("Liikaa alkioita");
alkiot[lkm] = jasen;
lkm++;
muutettu = true;
}
......@@ -60,29 +77,127 @@ public class Jasenet {
* @throws IndexOutOfBoundsException jos i ei ole sallitulla alueella
*/
public Jasen anna(int i) throws IndexOutOfBoundsException {
if (i < 0 || lkm <= i)
throw new IndexOutOfBoundsException("Laiton indeksi: " + i);
if ( i < 0 || lkm <= i ) throw new IndexOutOfBoundsException("Laiton indeksi: " + i);
return alkiot[i];
}
/**
* Lukee jäsenistön tiedostosta. Kesken.
* @param hakemisto tiedoston hakemisto
* Lukee jäsenistön tiedostosta.
* @param tied tiedoston perusnimi
* @throws SailoException jos lukeminen epäonnistuu
*
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.io.File;
*
* Jasenet jasenet = new Jasenet();
* Jasen aku1 = new Jasen(), aku2 = new Jasen();
* aku1.vastaaAkuAnkka();
* aku2.vastaaAkuAnkka();
* String hakemisto = "testikelmit";
* String tiedNimi = hakemisto+"/nimet";
* File ftied = new File(tiedNimi+".dat");
* File dir = new File(hakemisto);
* dir.mkdir();
* ftied.delete();
* jasenet.lueTiedostosta(tiedNimi); #THROWS SailoException
* jasenet.lisaa(aku1);
* jasenet.lisaa(aku2);
* jasenet.tallenna();
* jasenet = new Jasenet(); // Poistetaan vanhat luomalla uusi
* jasenet.lueTiedostosta(tiedNimi); // johon ladataan tiedot tiedostosta.
* Iterator<Jasen> i = jasenet.iterator();
* i.next() === aku1;
* i.next() === aku2;
* i.hasNext() === false;
* jasenet.lisaa(aku2);
* jasenet.tallenna();
* ftied.delete() === true;
* File fbak = new File(tiedNimi+".bak");
* fbak.delete() === true;
* dir.delete() === true;
* </pre>
*/
public void lueTiedostosta(String hakemisto) throws SailoException {
tiedostonNimi = hakemisto + "/nimet.dat";
throw new SailoException("Ei osata vielä lukea tiedostoa " + tiedostonNimi);
public void lueTiedostosta(String tied) throws SailoException {
setTiedostonPerusNimi(tied);
try ( BufferedReader fi = new BufferedReader(new FileReader(getTiedostonNimi())) ) {
kokoNimi = fi.readLine();
if ( kokoNimi == null ) throw new SailoException("Kerhon nimi puuttuu");
String rivi = fi.readLine();
if ( rivi == null ) throw new SailoException("Maksimikoko puuttuu");
// int maxKoko = Mjonot.erotaInt(rivi,10); // tehdään jotakin
while ( (rivi = fi.readLine()) != null ) {
rivi = rivi.trim();
if ( "".equals(rivi) || rivi.charAt(0) == ';' ) continue;
Jasen jasen = new Jasen();
jasen.parse(rivi); // voisi olla virhekäsittely
lisaa(jasen);
}
muutettu = false;
} catch ( FileNotFoundException e ) {
throw new SailoException("Tiedosto " + getTiedostonNimi() + " ei aukea");
} catch ( IOException e ) {
throw new SailoException("Ongelmia tiedoston kanssa: " + e.getMessage());
}
}
/**
* Tallentaa jäsenistön tiedostoon. Kesken.
* Luetaan aikaisemmin annetun nimisestä tiedostosta
* @throws SailoException jos tulee poikkeus
*/
public void lueTiedostosta() throws SailoException {
lueTiedostosta(getTiedostonPerusNimi());
}
/**
* Tallentaa jäsenistön tiedostoon.
* Tiedoston muoto:
* <pre>
* Kelmien kerho
* 20
* ; kommenttirivi
* 2|Ankka Aku|121103-706Y|Paratiisitie 13|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
* 3|Ankka Tupu|121153-706Y|Paratiisitie 13|12345|ANKKALINNA|12-1234|||1996|50.0|30.0|Velkaa Roopelle
* </pre>
* @throws SailoException jos talletus epäonnistuu
*/
public void talleta() throws SailoException {
throw new SailoException("Ei osata vielä tallettaa tiedostoa " + tiedostonNimi);
public void tallenna() throws SailoException {
if ( !muutettu ) return;
File fbak = new File(getBakNimi());
File ftied = new File(getTiedostonNimi());
fbak.delete(); // if .. System.err.println("Ei voi tuhota");
ftied.renameTo(fbak); // if .. System.err.println("Ei voi nimetä");
try ( PrintWriter fo = new PrintWriter(new FileWriter(ftied.getCanonicalPath())) ) {
fo.println(getKokoNimi());
fo.println(alkiot.length);
for (Jasen jasen : this) {
fo.println(jasen.toString());
}
//} catch ( IOException e ) { // ei heitä poikkeusta
// throw new SailoException("Tallettamisessa ongelmia: " + e.getMessage());
} catch ( FileNotFoundException ex ) {
throw new SailoException("Tiedosto " + ftied.getName() + " ei aukea");
} catch ( IOException ex ) {
throw new SailoException("Tiedoston " + ftied.getName() + " kirjoittamisessa ongelmia");
}
muutettu = false;
}
/**
* Palauttaa Kerhon koko nimen
* @return Kerhon koko nimi merkkijononna
*/
public String getKokoNimi() {
return kokoNimi;
}
......@@ -95,6 +210,161 @@ public class Jasenet {
}
/**
* Palauttaa tiedoston nimen, jota käytetään tallennukseen
* @return tallennustiedoston nimi
*/
public String getTiedostonPerusNimi() {
return tiedostonPerusNimi;
}
/**
* Asettaa tiedoston perusnimen ilan tarkenninta
* @param nimi tallennustiedoston perusnimi
*/
public void setTiedostonPerusNimi(String nimi) {
tiedostonPerusNimi = nimi;
}
/**
* Palauttaa tiedoston nimen, jota käytetään tallennukseen
* @return tallennustiedoston nimi
*/
public String getTiedostonNimi() {
return getTiedostonPerusNimi() + ".dat";
}
/**
* Palauttaa varakopiotiedoston nimen
* @return varakopiotiedoston nimi
*/
public String getBakNimi() {
return tiedostonPerusNimi + ".bak";
}
/**
* Luokka jäsenten iteroimiseksi.
* @example
* <pre name="test">
* #THROWS SailoException
* #PACKAGEIMPORT
* #import java.util.*;
*
* Jasenet jasenet = new Jasenet();
* Jasen aku1 = new Jasen(), aku2 = new Jasen();
* aku1.rekisteroi(); aku2.rekisteroi();
*
* jasenet.lisaa(aku1);
* jasenet.lisaa(aku2);
* jasenet.lisaa(aku1);
*
* StringBuffer ids = new StringBuffer(30);
* for (Jasen jasen:jasenet) // Kokeillaan for-silmukan toimintaa
* ids.append(" "+jasen.getTunnusNro());
*
* String tulos = " " + aku1.getTunnusNro() + " " + aku2.getTunnusNro() + " " + aku1.getTunnusNro();
*
* ids.toString() === tulos;
*
* ids = new StringBuffer(30);
* for (Iterator<Jasen> i=jasenet.iterator(); i.hasNext(); ) { // ja iteraattorin toimintaa
* Jasen jasen = i.next();
* ids.append(" "+jasen.getTunnusNro());
* }
*
* ids.toString() === tulos;
*
* Iterator<Jasen> i=jasenet.iterator();
* i.next() == aku1 === true;
* i.next() == aku2 === true;
* i.next() == aku1 === true;
*
* i.next(); #THROWS NoSuchElementException
*
* </pre>
*/
public class JasenetIterator implements Iterator<Jasen> {
private int kohdalla = 0;
/**
* Onko olemassa vielä seuraavaa jäsentä
* @see java.util.Iterator#hasNext()
* @return true jos on vielä jäseniä
*/
@Override
public boolean hasNext() {
return kohdalla < getLkm();
}
/**
* Annetaan seuraava jäsen
* @return seuraava jäsen
* @throws NoSuchElementException jos seuraava alkiota ei enää ole
* @see java.util.Iterator#next()
*/
@Override
public Jasen next() throws NoSuchElementException {
if ( !hasNext() ) throw new NoSuchElementException("Ei oo");
return anna(kohdalla++);
}
/**
* Tuhoamista ei ole toteutettu
* @throws UnsupportedOperationException aina
* @see java.util.Iterator#remove()
*/
@Override
public void remove() throws UnsupportedOperationException {
throw new UnsupportedOperationException("Me ei poisteta");
}
}
/**
* Palautetaan iteraattori jäsenistään.
* @return jäsen iteraattori
*/
@Override
public Iterator<Jasen> iterator() {
return new JasenetIterator();
}
/**
* Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet
* @param hakuehto hakuehto
* @param k etsittävän kentän indeksi
* @return tietorakenteen löytyneistä jäsenistä
* @example
* <pre name="test">
* #THROWS SailoException
* Jasenet jasenet = new Jasenet();
* Jasen jasen1 = new Jasen(); jasen1.parse("1|Ankka Aku|030201-115H|Paratiisitie 13|");
* Jasen jasen2 = new Jasen(); jasen2.parse("2|Ankka Tupu||030552-123B|");
* Jasen jasen3 = new Jasen(); jasen3.parse("3|Susi Sepe|121237-121V||131313|Perämetsä");
* Jasen jasen4 = new Jasen(); jasen4.parse("4|Ankka Iines|030245-115V|Ankkakuja 9");
* Jasen jasen5 = new Jasen(); jasen5.parse("5|Ankka Roope|091007-408U|Ankkakuja 12");
* jasenet.lisaa(jasen1); jasenet.lisaa(jasen2); jasenet.lisaa(jasen3); jasenet.lisaa(jasen4); jasenet.lisaa(jasen5);
* // TODO: toistaiseksi palauttaa kaikki jäsenet
* </pre>
*/
@SuppressWarnings("unused")
public Collection<Jasen> etsi(String hakuehto, int k) {
Collection<Jasen> loytyneet = new ArrayList<Jasen>();
for (Jasen jasen : this) {
loytyneet.add(jasen);
}
return loytyneet;
}
/**
* Testiohjelma jäsenistölle
* @param args ei käytössä
......@@ -120,7 +390,7 @@ public class Jasenet {
jasen.tulosta(System.out);
}
} catch (SailoException ex) {
} catch ( SailoException ex ) {
System.out.println(ex.getMessage());
}
}
......
package kerho;
import java.io.File;
import java.util.Collection;
import java.util.List;
/**
......@@ -12,18 +14,9 @@ import java.util.List;
* @version 1.2, 07.01.2008 / testit
* @version 1.3, 03.03.2013 / Harrastukset
*/
public class Kerho {
private final Jasenet jasenet = new Jasenet();
private final Harrastukset harrastukset = new Harrastukset();
/**
* Palautaa kerhon jäsenmäärän
* @return jäsenmäärä
*/
public int getJasenia() {
return jasenet.getLkm();
}
public class Kerho {
private Jasenet jasenet = new Jasenet();
private Harrastukset harrastukset = new Harrastukset();
/**
......@@ -45,19 +38,14 @@ public class Kerho {
* #THROWS SailoException
* Kerho kerho = new Kerho();
* Jasen aku1 = new Jasen(), aku2 = new Jasen();
* aku1.rekisteroi(); aku2.rekisteroi();
* kerho.getJasenia() === 0;
* kerho.lisaa(aku1); kerho.getJasenia() === 1;
* kerho.lisaa(aku2); kerho.getJasenia() === 2;
* kerho.lisaa(aku1); kerho.getJasenia() === 3;
* kerho.getJasenia() === 3;
* kerho.annaJasen(0) === aku1;
* kerho.annaJasen(1) === aku2;
* kerho.annaJasen(2) === aku1;
* kerho.annaJasen(3) === aku1; #THROWS IndexOutOfBoundsException
* kerho.lisaa(aku1); kerho.getJasenia() === 4;
* kerho.lisaa(aku1); kerho.getJasenia() === 5;
* kerho.lisaa(aku1); #THROWS SailoException
* kerho.lisaa(aku1);
* kerho.lisaa(aku2);
* kerho.lisaa(aku1);
* Collection<Jasen> loytyneet = kerho.etsi("",-1);
* Iterator<Jasen> it = loytyneet.iterator();
* it.next() === aku1;
* it.next() === aku2;
* it.next() === aku1;
* </pre>
*/
public void lisaa(Jasen jasen) throws SailoException {
......@@ -68,29 +56,33 @@ public class Kerho {
/**
* Listään uusi harrastus kerhoon
* @param har lisättävä harrastus
* @throws SailoException jos tulee ongelmia
*/
public void lisaa(Harrastus har) {
public void lisaa(Harrastus har) throws SailoException {
harrastukset.lisaa(har);
}
/**
* Palauttaa i:n jäsenen
* @param i monesko jäsen palautetaan
* @return viite i:teen jäseneen
* @throws IndexOutOfBoundsException jos i väärin
*/
public Jasen annaJasen(int i) throws IndexOutOfBoundsException {
return jasenet.anna(i);
}
/**
* Palauttaa "taulukossa" hakuehtoon vastaavien jäsenten viitteet
* @param hakuehto hakuehto
* @param k etsittävän kentän indeksi
* @return tietorakenteen löytyneistä jäsenistä
* @throws SailoException Jos jotakin menee väärin
*/
public Collection<Jasen> etsi(String hakuehto, int k) throws SailoException {
return jasenet.etsi(hakuehto, k);
}
/**
* Haetaan kaikki jäsen harrastukset
* @param jasen jäsen jolle harrastuksia haetaan
* @return tietorakenne jossa viiteet löydetteyihin harrastuksiin
* @throws SailoException jos tulee ongelmia
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.util.*;
*
* Kerho kerho = new Kerho();
......@@ -116,30 +108,123 @@ public class Kerho {
* loytyneet.get(0) == pitsi21 === true;
* </pre>
*/
public List<Harrastus> annaHarrastukset(Jasen jasen) {
public List<Harrastus> annaHarrastukset(Jasen jasen) throws SailoException {
return harrastukset.annaHarrastukset(jasen.getTunnusNro());
}
/**
* Asettaa tiedostojen perusnimet
* @param nimi uusi nimi
*/
public void setTiedosto(String nimi) {
File dir = new File(nimi);
dir.mkdirs();
String hakemistonNimi = "";
if ( !nimi.isEmpty() ) hakemistonNimi = nimi +"/";
jasenet.setTiedostonPerusNimi(hakemistonNimi + "nimet");
harrastukset.setTiedostonPerusNimi(hakemistonNimi + "harrastukset");
}
/**
* Lukee kerhon tiedot tiedostosta
* @param nimi jota käyteään lukemisessa
* @throws SailoException jos lukeminen epäonnistuu
*
* @example
* <pre name="test">
* #THROWS SailoException
* #import java.io.*;
* #import java.util.*;
*
* Kerho kerho = new Kerho();
*
* Jasen aku1 = new Jasen(); aku1.vastaaAkuAnkka(); aku1.rekisteroi();
* Jasen aku2 = new Jasen(); aku2.vastaaAkuAnkka(); aku2.rekisteroi();
* Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(aku2.getTunnusNro());
* Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(aku1.getTunnusNro());
* Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(aku2.getTunnusNro());
* Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(aku1.getTunnusNro());
* Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(aku2.getTunnusNro());
*
* String hakemisto = "testikelmit";
* File dir = new File(hakemisto);
* File ftied = new File(hakemisto+"/nimet.dat");
* File fhtied = new File(hakemisto+"/harrastukset.dat");
* dir.mkdir();
* ftied.delete();
* fhtied.delete();
* kerho.lueTiedostosta(hakemisto); #THROWS SailoException
* kerho.lisaa(aku1);
* kerho.lisaa(aku2);
* kerho.lisaa(pitsi21);
* kerho.lisaa(pitsi11);
* kerho.lisaa(pitsi22);
* kerho.lisaa(pitsi12);
* kerho.lisaa(pitsi23);
* kerho.tallenna();
* kerho = new Kerho();
* kerho.lueTiedostosta(hakemisto);
* Collection<Jasen> kaikki = kerho.etsi("",-1);
* Iterator<Jasen> it = kaikki.iterator();
* it.next() === aku1;
* it.next() === aku2;
* it.hasNext() === false;
* List<Harrastus> loytyneet = kerho.annaHarrastukset(aku1);
* Iterator<Harrastus> ih = loytyneet.iterator();
* ih.next() === pitsi11;
* ih.next() === pitsi12;
* ih.hasNext() === false;
* loytyneet = kerho.annaHarrastukset(aku2);
* ih = loytyneet.iterator();
* ih.next() === pitsi21;
* ih.next() === pitsi22;
* ih.next() === pitsi23;
* ih.hasNext() === false;
* kerho.lisaa(aku2);
* kerho.lisaa(pitsi23);
* kerho.tallenna();
* ftied.delete() === true;
* fhtied.delete() === true;
* File fbak = new File(hakemisto+"/nimet.bak");
* File fhbak = new File(hakemisto+"/harrastukset.bak");
* fbak.delete() === true;
* fhbak.delete() === true;
* dir.delete() === true;
* </pre>
*/
public void lueTiedostosta(String nimi) throws SailoException {
jasenet.lueTiedostosta(nimi);
harrastukset.lueTiedostosta(nimi);
jasenet = new Jasenet(); // jos luetaan olemassa olevaan niin helpoin tyhjentää näin
harrastukset = new Harrastukset();
setTiedosto(nimi);
jasenet.lueTiedostosta();
harrastukset.lueTiedostosta();
}
/**
* Tallettaa kerhon tiedot tiedostoon
* Tallenttaa kerhon tiedot tiedostoon.
* Vaikka jäsenten tallettamien epäonistuisi, niin yritetään silti tallettaa
* harrastuksia ennen poikkeuksen heittämistä.
* @throws SailoException jos tallettamisessa ongelmia
*/
public void talleta() throws SailoException {
jasenet.talleta();
harrastukset.talleta();
// TODO: yritä tallettaa toinen vaikka toinen epäonnistuisi
public void tallenna() throws SailoException {
String virhe = "";
try {
jasenet.tallenna();
} catch ( SailoException ex ) {
virhe = ex.getMessage();
}
try {
harrastukset.tallenna();
} catch ( SailoException ex ) {
virhe += ex.getMessage();
}
if ( !"".equals(virhe) ) throw new SailoException(virhe);
}
......@@ -163,24 +248,35 @@ public class Kerho {
kerho.lisaa(aku2);
int id1 = aku1.getTunnusNro();
int id2 = aku2.getTunnusNro();
Harrastus pitsi11 = new Harrastus(id1); pitsi11.vastaaPitsinNyplays(id1); kerho.lisaa(pitsi11);
Harrastus pitsi12 = new Harrastus(id1); pitsi12.vastaaPitsinNyplays(id1); kerho.lisaa(pitsi12);
Harrastus pitsi21 = new Harrastus(id2); pitsi21.vastaaPitsinNyplays(id2); kerho.lisaa(pitsi21);
Harrastus pitsi22 = new Harrastus(id2); pitsi22.vastaaPitsinNyplays(id2); kerho.lisaa(pitsi22);
Harrastus pitsi23 = new Harrastus(id2); pitsi23.vastaaPitsinNyplays(id2); kerho.lisaa(pitsi23);
Harrastus pitsi11 = new Harrastus(id1);
pitsi11.vastaaPitsinNyplays(id1);
kerho.lisaa(pitsi11);
Harrastus pitsi12 = new Harrastus(id1);
pitsi12.vastaaPitsinNyplays(id1);
kerho.lisaa(pitsi12);
Harrastus pitsi21 = new Harrastus(id2);
pitsi21.vastaaPitsinNyplays(id2);
kerho.lisaa(pitsi21);
Harrastus pitsi22 = new Harrastus(id2);
pitsi22.vastaaPitsinNyplays(id2);
kerho.lisaa(pitsi22);
Harrastus pitsi23 = new Harrastus(id2);
pitsi23.vastaaPitsinNyplays(id2);
kerho.lisaa(pitsi23);
System.out.println("============= Kerhon testi =================");
for (int i = 0; i < kerho.getJasenia(); i++) {
Jasen jasen = kerho.annaJasen(i);
Collection<Jasen> jasenet = kerho.etsi("", -1);
int i = 0;
for (Jasen jasen: jasenet) {
System.out.println("Jäsen paikassa: " + i);
jasen.tulosta(System.out);
List<Harrastus> loytyneet = kerho.annaHarrastukset(jasen);
for (Harrastus harrastus : loytyneet)
harrastus.tulosta(System.out);
i++;
}
} catch (SailoException ex) {
} catch ( SailoException ex ) {
System.out.println(ex.getMessage());
}
}
......
package kerho.test;
// Generated by ComTest BEGIN
import java.io.File;
import kerho.*;
import java.util.*;
import static org.junit.Assert.*;
import org.junit.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2019.01.06 23:47:13 // Generated by ComTest
*
*/
public class HarrastuksetTest {
// Generated by ComTest BEGIN
/**
* testLueTiedostosta51
* @throws SailoException when error
*/
@Test
public void testLueTiedostosta51() throws SailoException { // Harrastukset: 51
Harrastukset harrasteet = new Harrastukset();
Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(2);
Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(1);
Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(2);
Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(1);
Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(2);
String tiedNimi = "testikelmit";
File ftied = new File(tiedNimi+".dat");
ftied.delete();
try {
harrasteet.lueTiedostosta(tiedNimi);
fail("Harrastukset: 63 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
harrasteet.lisaa(pitsi21);
harrasteet.lisaa(pitsi11);
harrasteet.lisaa(pitsi22);
harrasteet.lisaa(pitsi12);
harrasteet.lisaa(pitsi23);
harrasteet.tallenna();
harrasteet = new Harrastukset();
harrasteet.lueTiedostosta(tiedNimi);
Iterator<Harrastus> i = harrasteet.iterator();
assertEquals("From: Harrastukset line: 73", pitsi21.toString(), i.next().toString());
assertEquals("From: Harrastukset line: 74", pitsi11.toString(), i.next().toString());
assertEquals("From: Harrastukset line: 75", pitsi22.toString(), i.next().toString());
assertEquals("From: Harrastukset line: 76", pitsi12.toString(), i.next().toString());
assertEquals("From: Harrastukset line: 77", pitsi23.toString(), i.next().toString());
assertEquals("From: Harrastukset line: 78", false, i.hasNext());
harrasteet.lisaa(pitsi23);
harrasteet.tallenna();
assertEquals("From: Harrastukset line: 81", true, ftied.delete());
File fbak = new File(tiedNimi+".bak");
assertEquals("From: Harrastukset line: 83", true, fbak.delete());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testIterator193 */
@Test
public void testIterator193() { // Harrastukset: 193
Harrastukset harrasteet = new Harrastukset();
Harrastus pitsi21 = new Harrastus(2); harrasteet.lisaa(pitsi21);
Harrastus pitsi11 = new Harrastus(1); harrasteet.lisaa(pitsi11);
Harrastus pitsi22 = new Harrastus(2); harrasteet.lisaa(pitsi22);
Harrastus pitsi12 = new Harrastus(1); harrasteet.lisaa(pitsi12);
Harrastus pitsi23 = new Harrastus(2); harrasteet.lisaa(pitsi23);
Iterator<Harrastus> i2=harrasteet.iterator();
assertEquals("From: Harrastukset line: 205", pitsi21, i2.next());
assertEquals("From: Harrastukset line: 206", pitsi11, i2.next());
assertEquals("From: Harrastukset line: 207", pitsi22, i2.next());
assertEquals("From: Harrastukset line: 208", pitsi12, i2.next());
assertEquals("From: Harrastukset line: 209", pitsi23, i2.next());
try {
assertEquals("From: Harrastukset line: 210", pitsi12, i2.next());
fail("Harrastukset: 210 Did not throw NoSuchElementException");
} catch(NoSuchElementException _e_){ _e_.getMessage(); }
int n = 0;
int jnrot[] = { 2,1,2,1,2} ;
for ( Harrastus har:harrasteet ) {
assertEquals("From: Harrastukset line: 216", jnrot[n], har.getJasenNro()); n++;
}
assertEquals("From: Harrastukset line: 219", 5, n);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testAnnaHarrastukset234 */
@Test
public void testAnnaHarrastukset234() { // Harrastukset: 234
Harrastukset harrasteet = new Harrastukset();
Harrastus pitsi21 = new Harrastus(2); harrasteet.lisaa(pitsi21);
Harrastus pitsi11 = new Harrastus(1); harrasteet.lisaa(pitsi11);
Harrastus pitsi22 = new Harrastus(2); harrasteet.lisaa(pitsi22);
Harrastus pitsi12 = new Harrastus(1); harrasteet.lisaa(pitsi12);
Harrastus pitsi23 = new Harrastus(2); harrasteet.lisaa(pitsi23);
Harrastus pitsi51 = new Harrastus(5); harrasteet.lisaa(pitsi51);
List<Harrastus> loytyneet;
loytyneet = harrasteet.annaHarrastukset(3);
assertEquals("From: Harrastukset line: 247", 0, loytyneet.size());
loytyneet = harrasteet.annaHarrastukset(1);
assertEquals("From: Harrastukset line: 249", 2, loytyneet.size());
assertEquals("From: Harrastukset line: 250", true, loytyneet.get(0) == pitsi11);
assertEquals("From: Harrastukset line: 251", true, loytyneet.get(1) == pitsi12);
loytyneet = harrasteet.annaHarrastukset(5);
assertEquals("From: Harrastukset line: 253", 1, loytyneet.size());
assertEquals("From: Harrastukset line: 254", true, loytyneet.get(0) == pitsi51);
} // Generated by ComTest END
}
\ No newline at end of file
package kerho.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import kerho.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2019.01.06 23:47:13 // Generated by ComTest
*
*/
public class HarrastusTest {
// Generated by ComTest BEGIN
/** testRekisteroi77 */
@Test
public void testRekisteroi77() { // Harrastus: 77
Harrastus pitsi1 = new Harrastus();
assertEquals("From: Harrastus line: 79", 0, pitsi1.getTunnusNro());
pitsi1.rekisteroi();
Harrastus pitsi2 = new Harrastus();
pitsi2.rekisteroi();
int n1 = pitsi1.getTunnusNro();
int n2 = pitsi2.getTunnusNro();
assertEquals("From: Harrastus line: 85", n2-1, n1);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testToString128 */
@Test
public void testToString128() { // Harrastus: 128
Harrastus harrastus = new Harrastus();
harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
assertEquals("From: Harrastus line: 131", "2|10|Kalastus|1949|22", harrastus.toString());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testParse145 */
@Test
public void testParse145() { // Harrastus: 145
Harrastus harrastus = new Harrastus();
harrastus.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
assertEquals("From: Harrastus line: 148", 10, harrastus.getJasenNro());
assertEquals("From: Harrastus line: 149", "2|10|Kalastus|1949|22", harrastus.toString());
harrastus.rekisteroi();
int n = harrastus.getTunnusNro();
harrastus.parse(""+(n+20));
harrastus.rekisteroi();
assertEquals("From: Harrastus line: 155", n+20+1, harrastus.getTunnusNro());
assertEquals("From: Harrastus line: 156", "" + (n+20+1) + "|10|Kalastus|1949|22", harrastus.toString());
} // Generated by ComTest END
}
\ No newline at end of file
package kerho.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import kerho.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2019.01.06 23:47:13 // Generated by ComTest
*
*/
public class JasenTest {
// Generated by ComTest BEGIN
/** testGetNimi35 */
@Test
public void testGetNimi35() { // Jasen: 35
Jasen aku = new Jasen();
aku.vastaaAkuAnkka();
{ String _l_=aku.getNimi(),_r_="Ankka Aku .*"; if ( !_l_.matches(_r_) ) fail("From: Jasen line: 38" + " does not match: ["+ _l_ + "] != [" + _r_ + "]");};
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testRekisteroi108 */
@Test
public void testRekisteroi108() { // Jasen: 108
Jasen aku1 = new Jasen();
assertEquals("From: Jasen line: 110", 0, aku1.getTunnusNro());
aku1.rekisteroi();
Jasen aku2 = new Jasen();
aku2.rekisteroi();
int n1 = aku1.getTunnusNro();
int n2 = aku2.getTunnusNro();
assertEquals("From: Jasen line: 116", n2-1, n1);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testToString150 */
@Test
public void testToString150() { // Jasen: 150
Jasen jasen = new Jasen();
jasen.parse(" 3 | Ankka Aku | 030201-111C");
assertEquals("From: Jasen line: 153", true, jasen.toString().startsWith("3|Ankka Aku|030201-111C|")); // on enemmäkin kuin 3 kenttää, siksi loppu |
} // Generated by ComTest END
// Generated by ComTest BEGIN
/** testParse181 */
@Test
public void testParse181() { // Jasen: 181
Jasen jasen = new Jasen();
jasen.parse(" 3 | Ankka Aku | 030201-111C");
assertEquals("From: Jasen line: 184", 3, jasen.getTunnusNro());
assertEquals("From: Jasen line: 185", true, jasen.toString().startsWith("3|Ankka Aku|030201-111C|")); // on enemmäkin kuin 3 kenttää, siksi loppu |
jasen.rekisteroi();
int n = jasen.getTunnusNro();
jasen.parse(""+(n+20)); // Otetaan merkkijonosta vain tunnusnumero
jasen.rekisteroi(); // ja tarkistetaan että seuraavalla kertaa tulee yhtä isompi
assertEquals("From: Jasen line: 191", n+20+1, jasen.getTunnusNro());
} // Generated by ComTest END
}
\ No newline at end of file
package kerho.test;
// Generated by ComTest BEGIN
import java.io.File;
import kerho.*;
import java.util.*;
import static org.junit.Assert.*;
import org.junit.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2019.01.06 23:47:13 // Generated by ComTest
*
*/
public class JasenetTest {
// Generated by ComTest BEGIN
/**
* testLisaa46
* @throws SailoException when error
*/
@Test
public void testLisaa46() throws SailoException { // Jasenet: 46
Jasenet jasenet = new Jasenet();
Jasen aku1 = new Jasen(), aku2 = new Jasen();
assertEquals("From: Jasenet line: 50", 0, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 51", 1, jasenet.getLkm());
jasenet.lisaa(aku2); assertEquals("From: Jasenet line: 52", 2, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 53", 3, jasenet.getLkm());
assertEquals("From: Jasenet line: 54", aku1, jasenet.anna(0));
assertEquals("From: Jasenet line: 55", aku2, jasenet.anna(1));
assertEquals("From: Jasenet line: 56", aku1, jasenet.anna(2));
assertEquals("From: Jasenet line: 57", false, jasenet.anna(1) == aku1);
assertEquals("From: Jasenet line: 58", true, jasenet.anna(1) == aku2);
try {
assertEquals("From: Jasenet line: 59", aku1, jasenet.anna(3));
fail("Jasenet: 59 Did not throw IndexOutOfBoundsException");
} catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); }
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 60", 4, jasenet.getLkm());
jasenet.lisaa(aku1); assertEquals("From: Jasenet line: 61", 5, jasenet.getLkm());
try {
jasenet.lisaa(aku1);
fail("Jasenet: 62 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testLueTiedostosta91
* @throws SailoException when error
*/
@Test
public void testLueTiedostosta91() throws SailoException { // Jasenet: 91
Jasenet jasenet = new Jasenet();
Jasen aku1 = new Jasen(), aku2 = new Jasen();
aku1.vastaaAkuAnkka();
aku2.vastaaAkuAnkka();
String hakemisto = "testikelmit";
String tiedNimi = hakemisto+"/nimet";
File ftied = new File(tiedNimi+".dat");
File dir = new File(hakemisto);
dir.mkdir();
ftied.delete();
try {
jasenet.lueTiedostosta(tiedNimi);
fail("Jasenet: 105 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
jasenet.lisaa(aku1);
jasenet.lisaa(aku2);
jasenet.tallenna();
jasenet = new Jasenet(); // Poistetaan vanhat luomalla uusi
jasenet.lueTiedostosta(tiedNimi); // johon ladataan tiedot tiedostosta.
Iterator<Jasen> i = jasenet.iterator();
assertEquals("From: Jasenet line: 112", aku1, i.next());
assertEquals("From: Jasenet line: 113", aku2, i.next());
assertEquals("From: Jasenet line: 114", false, i.hasNext());
jasenet.lisaa(aku2);
jasenet.tallenna();
assertEquals("From: Jasenet line: 117", true, ftied.delete());
File fbak = new File(tiedNimi+".bak");
assertEquals("From: Jasenet line: 119", true, fbak.delete());
assertEquals("From: Jasenet line: 120", true, dir.delete());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testJasenetIterator252
* @throws SailoException when error
*/
@Test
public void testJasenetIterator252() throws SailoException { // Jasenet: 252
Jasenet jasenet = new Jasenet();
Jasen aku1 = new Jasen(), aku2 = new Jasen();
aku1.rekisteroi(); aku2.rekisteroi();
jasenet.lisaa(aku1);
jasenet.lisaa(aku2);
jasenet.lisaa(aku1);
StringBuffer ids = new StringBuffer(30);
for (Jasen jasen:jasenet) // Kokeillaan for-silmukan toimintaa
ids.append(" "+jasen.getTunnusNro());
String tulos = " " + aku1.getTunnusNro() + " " + aku2.getTunnusNro() + " " + aku1.getTunnusNro();
assertEquals("From: Jasenet line: 271", tulos, ids.toString());
ids = new StringBuffer(30);
for (Iterator<Jasen> i=jasenet.iterator(); i.hasNext(); ) { // ja iteraattorin toimintaa
Jasen jasen = i.next();
ids.append(" "+jasen.getTunnusNro());
}
assertEquals("From: Jasenet line: 279", tulos, ids.toString());
Iterator<Jasen> i=jasenet.iterator();
assertEquals("From: Jasenet line: 282", true, i.next() == aku1);
assertEquals("From: Jasenet line: 283", true, i.next() == aku2);
assertEquals("From: Jasenet line: 284", true, i.next() == aku1);
try {
i.next();
fail("Jasenet: 286 Did not throw NoSuchElementException");
} catch(NoSuchElementException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testEtsi346
* @throws SailoException when error
*/
@Test
public void testEtsi346() throws SailoException { // Jasenet: 346
Jasenet jasenet = new Jasenet();
Jasen jasen1 = new Jasen(); jasen1.parse("1|Ankka Aku|030201-115H|Paratiisitie 13|");
Jasen jasen2 = new Jasen(); jasen2.parse("2|Ankka Tupu||030552-123B|");
Jasen jasen3 = new Jasen(); jasen3.parse("3|Susi Sepe|121237-121V||131313|Perämetsä");
Jasen jasen4 = new Jasen(); jasen4.parse("4|Ankka Iines|030245-115V|Ankkakuja 9");
Jasen jasen5 = new Jasen(); jasen5.parse("5|Ankka Roope|091007-408U|Ankkakuja 12");
jasenet.lisaa(jasen1); jasenet.lisaa(jasen2); jasenet.lisaa(jasen3); jasenet.lisaa(jasen4); jasenet.lisaa(jasen5);
} // Generated by ComTest END
}
\ No newline at end of file
package kerho.test;
// Generated by ComTest BEGIN
import java.util.*;
import java.io.*;
import static org.junit.Assert.*;
import org.junit.*;
import kerho.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2019.01.06 23:47:13 // Generated by ComTest
*
*/
public class KerhoTest {
// Generated by ComTest BEGIN
/**
* testLisaa37
* @throws SailoException when error
*/
@Test
public void testLisaa37() throws SailoException { // Kerho: 37
Kerho kerho = new Kerho();
Jasen aku1 = new Jasen(), aku2 = new Jasen();
kerho.lisaa(aku1);
kerho.lisaa(aku2);
kerho.lisaa(aku1);
Collection<Jasen> loytyneet = kerho.etsi("",-1);
Iterator<Jasen> it = loytyneet.iterator();
assertEquals("From: Kerho line: 46", aku1, it.next());
assertEquals("From: Kerho line: 47", aku2, it.next());
assertEquals("From: Kerho line: 48", aku1, it.next());
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testAnnaHarrastukset84
* @throws SailoException when error
*/
@Test
public void testAnnaHarrastukset84() throws SailoException { // Kerho: 84
Kerho kerho = new Kerho();
Jasen aku1 = new Jasen(), aku2 = new Jasen(), aku3 = new Jasen();
aku1.rekisteroi(); aku2.rekisteroi(); aku3.rekisteroi();
int id1 = aku1.getTunnusNro();
int id2 = aku2.getTunnusNro();
Harrastus pitsi11 = new Harrastus(id1); kerho.lisaa(pitsi11);
Harrastus pitsi12 = new Harrastus(id1); kerho.lisaa(pitsi12);
Harrastus pitsi21 = new Harrastus(id2); kerho.lisaa(pitsi21);
Harrastus pitsi22 = new Harrastus(id2); kerho.lisaa(pitsi22);
Harrastus pitsi23 = new Harrastus(id2); kerho.lisaa(pitsi23);
List<Harrastus> loytyneet;
loytyneet = kerho.annaHarrastukset(aku3);
assertEquals("From: Kerho line: 101", 0, loytyneet.size());
loytyneet = kerho.annaHarrastukset(aku1);
assertEquals("From: Kerho line: 103", 2, loytyneet.size());
assertEquals("From: Kerho line: 104", true, loytyneet.get(0) == pitsi11);
assertEquals("From: Kerho line: 105", true, loytyneet.get(1) == pitsi12);
loytyneet = kerho.annaHarrastukset(aku2);
assertEquals("From: Kerho line: 107", 3, loytyneet.size());
assertEquals("From: Kerho line: 108", true, loytyneet.get(0) == pitsi21);
} // Generated by ComTest END
// Generated by ComTest BEGIN
/**
* testLueTiedostosta137
* @throws SailoException when error
*/
@Test
public void testLueTiedostosta137() throws SailoException { // Kerho: 137
Kerho kerho = new Kerho();
Jasen aku1 = new Jasen(); aku1.vastaaAkuAnkka(); aku1.rekisteroi();
Jasen aku2 = new Jasen(); aku2.vastaaAkuAnkka(); aku2.rekisteroi();
Harrastus pitsi21 = new Harrastus(); pitsi21.vastaaPitsinNyplays(aku2.getTunnusNro());
Harrastus pitsi11 = new Harrastus(); pitsi11.vastaaPitsinNyplays(aku1.getTunnusNro());
Harrastus pitsi22 = new Harrastus(); pitsi22.vastaaPitsinNyplays(aku2.getTunnusNro());
Harrastus pitsi12 = new Harrastus(); pitsi12.vastaaPitsinNyplays(aku1.getTunnusNro());
Harrastus pitsi23 = new Harrastus(); pitsi23.vastaaPitsinNyplays(aku2.getTunnusNro());
String hakemisto = "testikelmit";
File dir = new File(hakemisto);
File ftied = new File(hakemisto+"/nimet.dat");
File fhtied = new File(hakemisto+"/harrastukset.dat");
dir.mkdir();
ftied.delete();
fhtied.delete();
try {
kerho.lueTiedostosta(hakemisto);
fail("Kerho: 159 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
kerho.lisaa(aku1);
kerho.lisaa(aku2);
kerho.lisaa(pitsi21);
kerho.lisaa(pitsi11);
kerho.lisaa(pitsi22);
kerho.lisaa(pitsi12);
kerho.lisaa(pitsi23);
kerho.tallenna();
kerho = new Kerho();
kerho.lueTiedostosta(hakemisto);
Collection<Jasen> kaikki = kerho.etsi("",-1);
Iterator<Jasen> it = kaikki.iterator();
assertEquals("From: Kerho line: 172", aku1, it.next());
assertEquals("From: Kerho line: 173", aku2, it.next());
assertEquals("From: Kerho line: 174", false, it.hasNext());
List<Harrastus> loytyneet = kerho.annaHarrastukset(aku1);
Iterator<Harrastus> ih = loytyneet.iterator();
assertEquals("From: Kerho line: 177", pitsi11, ih.next());
assertEquals("From: Kerho line: 178", pitsi12, ih.next());
assertEquals("From: Kerho line: 179", false, ih.hasNext());
loytyneet = kerho.annaHarrastukset(aku2);
ih = loytyneet.iterator();
assertEquals("From: Kerho line: 182", pitsi21, ih.next());
assertEquals("From: Kerho line: 183", pitsi22, ih.next());
assertEquals("From: Kerho line: 184", pitsi23, ih.next());
assertEquals("From: Kerho line: 185", false, ih.hasNext());
kerho.lisaa(aku2);
kerho.lisaa(pitsi23);
kerho.tallenna();
assertEquals("From: Kerho line: 189", true, ftied.delete());
assertEquals("From: Kerho line: 190", true, fhtied.delete());
File fbak = new File(hakemisto+"/nimet.bak");
File fhbak = new File(hakemisto+"/harrastukset.bak");
assertEquals("From: Kerho line: 193", true, fbak.delete());
assertEquals("From: Kerho line: 194", true, fhbak.delete());
assertEquals("From: Kerho line: 195", true, dir.delete());
} // Generated by ComTest END
}
\ No newline at end of file