Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Date;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Scanner;
- /**
- * Tulostaulukko-luokka kuvaa tulosriveist‰ muodostettua taulukkoa. Luokka osaa
- * tallentaa itsens‰ tiedostoon ja lukea rivit takaisin muistiin. Luokka myˆs
- * toteuttaa {@link javax.swing.table.TableModel}-rajapinnan, joten sit‰ voi
- * k‰ytt‰‰ {@link javax.swing.JTable}-komponentin datamallina.
- *
- */
- public class Tulostaulukko implements Iterable<Tulosrivi> {
- private static final long serialVersionUID = 1L;
- private List<Tulosrivi> tulosrivit;
- private int koko;
- private File tiedosto;
- /**
- * Luo uuden tulostaulukon annetun tiedostonimen perusteella. Jos tiedoston
- * nimi on <code>null</code> heitet‰‰n <code>NullPointerException</code>
- * sopivalla viestill‰ varustettuna. Tulostaulukon koko on rajoitettu. Koon
- * on oltava v‰hint‰‰n 1, jos ehto ei toteudu heitet‰‰n
- * <code>IllegalArgumentException</code> sopivalla viestill‰. Jos annettua
- * tiedostoa ei ole olemassa, luodaan tyhj‰ tulostaulukko. Jos tiedosto on
- * olemassa, tulkitaan siit‰ tulosrivit yksi kerrallaan ja tallennetaan ne
- * luokan tulosriveihin.
- *
- * @param tiedostonNimi
- * tiedosto, josta tulostaulukko luetaan.
- * @param koko
- * tulostaulukon maksimikoko.
- */
- public Tulostaulukko(String tiedostonNimi, int koko) {
- tulosrivit = new ArrayList<Tulosrivi>();
- if(tiedostonNimi == null) {
- throw new NullPointerException("Tiedoston nimi on null");
- }
- if(koko<1) {
- throw new IllegalArgumentException("Tiedoston koko ei ole sopiva");
- }
- else if(this.koko>=1){
- this.koko = koko;
- }
- try {
- Scanner skanneri = new Scanner(this.tiedosto);
- while(skanneri.hasNextLine()) {
- String tulosrivi = skanneri.nextLine();
- String[] tulosrivintiedot = tulosrivi.split("&");
- DateFormat ajanmuuttaja = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
- try {
- Date ajankohta = ajanmuuttaja.parse(tulosrivintiedot[1]);
- tulosrivit.add(new Tulosrivi(tulosrivintiedot[0], ajankohta, Integer.parseInt(tulosrivintiedot[2]), Integer.parseInt(tulosrivintiedot[3])));
- }
- catch(ParseException e) {
- }
- }
- }
- catch(FileNotFoundException e) {
- System.err.println("Tiedostoa ei löydy");
- }
- this.trimmaaTulosrivit();
- }
- private void trimmaaTulosrivit() {
- Collections.sort(this.tulosrivit, Collections.reverseOrder());
- while (this.tulosrivit.size() > this.koko) {
- this.tulosrivit.remove(this.tulosrivit.size()-1);
- }
- }
- /**
- * Palauttaa iteraattorin, jolla voi k‰yd‰ l‰pi tulostaulukon rivit.
- *
- * @see java.lang.Iterable#iterator()
- */
- public Iterator<Tulosrivi> iterator() {
- return this.tulosrivit.iterator();
- }
- /**
- * Lis‰‰ tulostaulukkoon uuden rivin, mik‰li rivin kuvaama tulos on
- * riitt‰v‰n hyv‰.
- *
- * @param rivi
- * jokin tulosrivi.
- * @return sijan, jolle uusi rivi sijoitettiin, tai -1, mik‰li tulos ei
- * ollut tarpeeksi hyv‰.
- */
- public int lisaaRivi(Tulosrivi rivi) {
- this.tulosrivit.add(rivi);
- this.trimmaaTulosrivit();
- return this.tulosrivit.indexOf(rivi);
- }
- /**
- * Tallentaa rivit konstruktorin parametrina annettuun tiedostoon.
- *
- * @return true, jos kirjoittaminen onnistuu, muutoin false.
- */
- public boolean tallennaRivitTiedostoon() {
- boolean palautus =false;
- BufferedWriter kirjoittaja = null;
- try{
- kirjoittaja = new BufferedWriter(new FileWriter(tiedosto));
- for(int i=0; i<tulosrivit.size(); i++) {
- kirjoittaja.write(tulosrivit.get(i).toString());
- kirjoittaja.newLine();
- }
- }
- catch (FileNotFoundException e) {
- palautus = false;
- }
- catch (IOException e) {
- palautus = false;
- }
- finally {
- try {
- //Tyhjentää bufferin ja sulkee tiedoston ?
- kirjoittaja.flush();
- kirjoittaja.close();
- }
- catch(IOException e) {
- palautus = false;
- }
- }
- return palautus;
- }
- }
Add Comment
Please, Sign In to add comment