Skip to content
Commits on Source (1)
......@@ -10,8 +10,14 @@
<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>
......@@ -8,3 +8,5 @@
8|4|Pitsin nypläys|1941|20
9|4|Pitsin nypläys|1908|19
10|4|Pitsin nypläys|1947|38
11|2|Pitsin nypläys|1984|46
12|2|Pitsin nypläys|1920|23
No preview for this file type
......@@ -22,6 +22,7 @@ import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
......@@ -133,6 +134,7 @@ public class KerhoGUIController implements Initializable {
private Jasen jasenKohdalla;
private TextField edits[];
private int kentta = 0;
private static Harrastus apuharrastus = new Harrastus();
/**
......@@ -150,7 +152,20 @@ public class KerhoGUIController implements Initializable {
edit.setOnMouseClicked(e -> { if ( e.getClickCount() > 1 ) muokkaa(getFieldId(e.getSource(),0)); });
edit.focusedProperty().addListener((a,o,n) -> kentta = getFieldId(edit,kentta));
}
// alustetaan harrastustaulukon otsikot
int eka = apuharrastus.ekaKentta();
int lkm = apuharrastus.getKenttia();
String[] headings = new String[lkm-eka];
for (int i=0, k=eka; k<lkm; i++, k++) headings[i] = apuharrastus.getKysymys(k);
tableHarrastukset.initTable(headings);
tableHarrastukset.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
tableHarrastukset.setEditable(false);
tableHarrastukset.setPlaceholder(new Label("Ei vielä harrastuksia"));
// Tämä on vielä huono, ei automaattisesti muutu jos kenttiä muutetaan.
tableHarrastukset.setColumnSortOrderNumber(1);
tableHarrastukset.setColumnSortOrderNumber(2);
tableHarrastukset.setColumnWidth(1, 60);
}
......@@ -305,8 +320,11 @@ public class KerhoGUIController implements Initializable {
private void naytaHarrastus(Harrastus har) {
String[] rivi = har.toString().split("\\|"); // TODO: huono ja tilapäinen ratkaisu
tableHarrastukset.add(har,rivi[2],rivi[3],rivi[4]);
int kenttia = har.getKenttia();
String[] rivi = new String[kenttia-har.ekaKentta()];
for (int i=0, k=har.ekaKentta(); k < kenttia; i++, k++)
rivi[i] = har.anna(k);
tableHarrastukset.add(har,rivi);
}
......
.virhe {
/* @SuppressWarning */
-fx-background-color: red;
}
......
......@@ -11,10 +11,10 @@ import static kanta.HetuTarkistus.rand;
* @author Vesa Lappalainen
* @version 1.0, 22.02.2003
*/
public class Harrastus {
public class Harrastus implements Cloneable {
private int tunnusNro;
private int jasenNro;
private String ala;
private String ala="";
private int aloitusvuosi;
private int tuntiaViikossa;
......@@ -38,6 +38,148 @@ public class Harrastus {
}
/**
* @return harrastukse kenttien lukumäärä
*/
public int getKenttia() {
return 5;
}
/**
* @return ensimmäinen käyttäjän syötettävän kentän indeksi
*/
public int ekaKentta() {
return 2;
}
/**
* @param k minkä kentän kysymys halutaan
* @return valitun kentän kysymysteksti
*/
public String getKysymys(int k) {
switch (k) {
case 0:
return "id";
case 1:
return "jäsenId";
case 2:
return "ala";
case 3:
return "aloitusvuosi";
case 4:
return "h/vko";
default:
return "???";
}
}
/**
* @param k Minkä kentän sisältö halutaan
* @return valitun kentän sisältö
* @example
* <pre name="test">
* Harrastus har = new Harrastus();
* har.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
* har.anna(0) === "2";
* har.anna(1) === "10";
* har.anna(2) === "Kalastus";
* har.anna(3) === "1949";
* har.anna(4) === "22";
*
* </pre>
*/
public String anna(int k) {
switch (k) {
case 0:
return "" + tunnusNro;
case 1:
return "" + jasenNro;
case 2:
return ala;
case 3:
return "" + aloitusvuosi;
case 4:
return "" + tuntiaViikossa;
default:
return "???";
}
}
/**
* Asetetaan valitun kentän sisältö. Mikäli asettaminen onnistuu,
* palautetaan null, muutoin virheteksti.
* @param k minkä kentän sisältö asetetaan
* @param s asetettava sisältö merkkijonona
* @return null jos ok, muuten virheteksti
* @example
* <pre name="test">
* Harrastus har = new Harrastus();
* har.aseta(3,"kissa") === "Aloitusvuosi väärin jono = \"kissa\"";
* har.aseta(3,"1940") === null;
* har.aseta(4,"kissa") === "Viikkotunnit väärin jono = \"kissa\"";
* har.aseta(4,"20") === null;
*
* </pre>
*/
public String aseta(int k, String s) {
String st = s.trim();
StringBuffer sb = new StringBuffer(st);
switch (k) {
case 0:
setTunnusNro(Mjonot.erota(sb, '$', getTunnusNro()));
return null;
case 1:
jasenNro = Mjonot.erota(sb, '$', jasenNro);
return null;
case 2:
ala = st;
return null;
case 3:
try {
aloitusvuosi = Mjonot.erotaEx(sb, '§', aloitusvuosi);
} catch (NumberFormatException ex) {
return "Aloitusvuosi väärin " + ex.getMessage();
}
return null;
case 4:
try {
tuntiaViikossa = Mjonot.erotaEx(sb, '§', tuntiaViikossa);
} catch (NumberFormatException ex) {
return "Viikkotunnit väärin " + ex.getMessage();
}
return null;
default:
return "Väärä kentän indeksi";
}
}
/**
* Tehdään identtinen klooni jäsenestä
* @return Object kloonattu jäsen
* @example
* <pre name="test">
* #THROWS CloneNotSupportedException
* Harrastus har = new Harrastus();
* har.parse(" 2 | 10 | Kalastus | 1949 | 22 t ");
* Harrastus kopio = har.clone();
* kopio.toString() === har.toString();
* har.parse(" 1 | 11 | Uinti | 1949 | 22 t ");
* kopio.toString().equals(har.toString()) === false;
* </pre>
*/
@Override
public Harrastus clone() throws CloneNotSupportedException {
return (Harrastus)super.clone();
}
/**
* Apumetodi, jolla saadaan täytettyä testiarvot Harrastukselle.
* Aloitusvuosi arvotaan, jotta kahdella harrastuksella ei olisi
......@@ -133,10 +275,17 @@ public class Harrastus {
*/
@Override
public String toString() {
return "" + getTunnusNro() + "|" + jasenNro + "|" + ala + "|" + aloitusvuosi + "|" + tuntiaViikossa;
}
StringBuffer sb = new StringBuffer("");
String erotin = "";
for (int k = 0; k < getKenttia(); k++) {
sb.append(erotin);
sb.append(anna(k));
erotin = "|";
}
return sb.toString();
}
/**
* Selvitää harrastuksen tiedot | erotellusta merkkijonosta.
* Pitää huolen että seuraavaNro on suurempi kuin tuleva tunnusnro.
......@@ -153,19 +302,16 @@ public class Harrastus {
* harrastus.parse(""+(n+20));
* harrastus.rekisteroi();
* harrastus.getTunnusNro() === n+20+1;
* harrastus.toString() === "" + (n+20+1) + "|10|Kalastus|1949|22";
* harrastus.toString() === "" + (n+20+1) + "|10||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);
for (int k = 0; k < getKenttia(); k++)
aseta(k, Mjonot.erota(sb, '|'));
}
@Override
public boolean equals(Object obj) {
if ( obj == null ) return false;
......
......@@ -13,7 +13,48 @@ import java.util.List;
* @version 1.1, 23.02.2003
* @version 1.2, 07.01.2008 / testit
* @version 1.3, 03.03.2013 / Harrastukset
*/
*
* Testien alustus
* @example
* <pre name="testJAVA">
* #import kerho.SailoException;
* private Kerho kerho;
* private Jasen aku1;
* private Jasen aku2;
* private int jid1;
* private int jid2;
* private Harrastus pitsi21;
* private Harrastus pitsi11;
* private Harrastus pitsi22;
* private Harrastus pitsi12;
* private Harrastus pitsi23;
*
* @SuppressWarnings("javadoc")
* public void alustaKerho() {
* kerho = new Kerho();
* aku1 = new Jasen(); aku1.vastaaAkuAnkka(); aku1.rekisteroi();
* aku2 = new Jasen(); aku2.vastaaAkuAnkka(); aku2.rekisteroi();
* jid1 = aku1.getTunnusNro();
* jid2 = aku2.getTunnusNro();
* pitsi21 = new Harrastus(jid2); pitsi21.vastaaPitsinNyplays(jid2);
* pitsi11 = new Harrastus(jid1); pitsi11.vastaaPitsinNyplays(jid1);
* pitsi22 = new Harrastus(jid2); pitsi22.vastaaPitsinNyplays(jid2);
* pitsi12 = new Harrastus(jid1); pitsi12.vastaaPitsinNyplays(jid1);
* pitsi23 = new Harrastus(jid2); pitsi23.vastaaPitsinNyplays(jid2);
* try {
* kerho.lisaa(aku1);
* kerho.lisaa(aku2);
* kerho.lisaa(pitsi21);
* kerho.lisaa(pitsi11);
* kerho.lisaa(pitsi22);
* kerho.lisaa(pitsi12);
* kerho.lisaa(pitsi23);
* } catch ( Exception e) {
* System.err.println(e.getMessage());
* }
* }
* </pre>
*/
public class Kerho {
private Jasenet jasenet = new Jasenet();
private Harrastukset harrastukset = new Harrastukset();
......@@ -35,18 +76,11 @@ public class Kerho {
* @throws SailoException jos lisäystä ei voida tehdä
* @example
* <pre name="test">
* #THROWS SailoException
* 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();
* it.next() === aku1;
* it.next() === aku2;
* it.next() === aku1;
* </pre>
* #THROWS SailoException
* alustaKerho();
* kerho.etsi("*",0).size() === 2;
* kerho.lisaa(aku1);
* kerho.etsi("*",0).size() === 3;
*/
public void lisaa(Jasen jasen) throws SailoException {
jasenet.lisaa(jasen);
......@@ -59,6 +93,14 @@ public class Kerho {
* niin lisätään uutena jäsenenä.
* @param jasen lisätäävän jäsenen viite. Huom tietorakenne muuttuu omistajaksi
* @throws SailoException jos tietorakenne on jo täynnä
* @example
* <pre name="test">
* #THROWS SailoException
* alustaKerho();
* kerho.etsi("*",0).size() === 2;
* kerho.korvaaTaiLisaa(aku1);
* kerho.etsi("*",0).size() === 2;
* </pre>
*/
public void korvaaTaiLisaa(Jasen jasen) throws SailoException {
jasenet.korvaaTaiLisaa(jasen);
......@@ -81,6 +123,12 @@ public class Kerho {
* @param k etsittävän kentän indeksi
* @return tietorakenteen löytyneistä jäsenistä
* @throws SailoException Jos jotakin menee väärin
* @example
* <pre name="test">
* #THROWS CloneNotSupportedException, SailoException
* alustaKerho();
* // TODO: tee testit kun etsi on korjattu
* </pre>
*/
public Collection<Jasen> etsi(String hakuehto, int k) throws SailoException {
return jasenet.etsi(hakuehto, k);
......@@ -97,16 +145,10 @@ public class Kerho {
* #THROWS SailoException
* #import java.util.*;
*
* 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);
* alustaKerho();
* Jasen aku3 = new Jasen();
* aku3.rekisteroi();
* kerho.lisaa(aku3);
*
* List<Harrastus> loytyneet;
* loytyneet = kerho.annaHarrastukset(aku3);
......@@ -138,8 +180,7 @@ public class Kerho {
harrastukset.setTiedostonPerusNimi(hakemistonNimi + "harrastukset");
}
/**
* Lukee kerhon tiedot tiedostosta
* @param nimi jota käyteään lukemisessa
......@@ -150,16 +191,6 @@ public class Kerho {
* #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);
......@@ -168,15 +199,11 @@ public class Kerho {
* dir.mkdir();
* ftied.delete();
* fhtied.delete();
* kerho = new Kerho(); // tiedostoja ei ole, tulee poikkeus
* 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();
* alustaKerho();
* kerho.setTiedosto(hakemisto); // nimi annettava koska uusi poisti sen
* kerho.tallenna();
* kerho = new Kerho();
* kerho.lueTiedostosta(hakemisto);
* Collection<Jasen> kaikki = kerho.etsi("",-1);
......@@ -197,7 +224,7 @@ public class Kerho {
* ih.hasNext() === false;
* kerho.lisaa(aku2);
* kerho.lisaa(pitsi23);
* kerho.tallenna();
* kerho.tallenna(); // tekee molemmista .bak
* ftied.delete() === true;
* fhtied.delete() === true;
* File fbak = new File(hakemisto+"/nimet.bak");
......
......@@ -11,7 +11,6 @@ import org.junit.runners.Suite.SuiteClasses;
*/
@RunWith(Suite.class)
@SuiteClasses({
/*
kanta.test.HetuTarkistusTest.class,
kanta.test.SisaltaaTarkistajaTest.class,
kerho.test.JasenTest.class,
......@@ -19,7 +18,6 @@ import org.junit.runners.Suite.SuiteClasses;
kerho.test.HarrastusTest.class,
kerho.test.HarrastuksetTest.class,
kerho.test.KerhoTest.class
*/
})
public class AllTests {
//
......