Skip to content
Snippets Groups Projects
Commit 60a1bdc1 authored by Erkki Kaila's avatar Erkki Kaila
Browse files

eka osuus

parent d198d180
No related branches found
No related tags found
No related merge requests found
......@@ -67,4 +67,9 @@ public class Asiakas {
return data;
}
@Override
public String toString() {
return nimi + " (" + asiakasNumero + "), ostoja tehty: " + ostojaTehty;
}
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
/**
* Luokkaa käytetään verkkokaupan tietojen tallentamiseen
......@@ -11,24 +13,42 @@ import java.util.ArrayList;
public class VerkkokauppaIO {
public static void main(String[] args) {
ArrayList<Asiakas> al = new ArrayList<>();
al.add(new Asiakas("12345", "Antti Asiakas", 10));
al.add(new Asiakas("54321", "Anna Asiakas", 55.50));
al.add(new Asiakas("99999", "Keijo Keksitty", 1000));
kirjoitaAsiakkaat(al, "asiakkaat.csv");
ArrayList<Asiakas> al = lueAsiakkaat("asiakkaat.csv");
for (Asiakas as : al) {
System.out.println(as);
}
}
private static final String EROTIN = ";";
public static void kirjoitaTiedosto(String tiedostonimi,
public static void kirjoitaTiedosto(String tiedostonNimi,
String sisalto) {
try (PrintWriter tiedosto = new PrintWriter(tiedostonimi)){
try (PrintWriter tiedosto = new PrintWriter(tiedostonNimi)) {
tiedosto.write(sisalto);
} catch (FileNotFoundException e) {
System.out.println("Tapahtui virhe: " + e);
}
}
/**
* Lukee annetun nimisen tiedoston sisällön ja palauttaa sen listassa.
* Jokainen listan alkio vastaa yhtä tiedoston riviä
*
* @param tiedostonNimi luettavan tiedoston nimi
* @return tiedoston sisällön listana
*/
public static ArrayList<String> lueTiedosto(String tiedostonNimi) {
ArrayList<String> data = new ArrayList<>();
try (Scanner lukija = new Scanner(new File(tiedostonNimi))) {
while (lukija.hasNextLine()) {
data.add(lukija.nextLine());
}
} catch (FileNotFoundException e) {
System.out.println("Tapahtui virhe: " + e);
}
return data;
}
public static void kirjoitaAsiakkaat(ArrayList<Asiakas> asiakasLista,
String tiedostonNimi) {
String data = "";
......@@ -42,4 +62,40 @@ public class VerkkokauppaIO {
}
kirjoitaTiedosto(tiedostonNimi, data);
}
/**
* Palauttaa uuden asiakasolion annetun datarivin perusteella.
* Rivillä tulee olla asiakasnumero, nimi ja tehdyt ostot tässä
* järjestyksessä erotettuna merkillä
* <code>VerkkokauppaIO.EROTIN</code>
*
* @param data datarivi, josta tiedot parsitaan
* @return uuden Asiakas-olion dataan perustuen
*/
public static Asiakas parsiAsiakas(String data) {
String[] tiedot = data.split(VerkkokauppaIO.EROTIN);
// Tässä vaiheessa tulee tietää tietojen järjestys
String asNro = tiedot[0];
String nimi = tiedot[1];
double ostot = Double.parseDouble(tiedot[2]);
return new Asiakas(asNro, nimi, ostot);
}
/**
* Metodi lukee asiakkaat annetun nimisestä tiedostosta ja
* palauttaa sisällön mukaisen listan Asiakas-olioita.
*
* @param tiedostonNimi luettavan tiedoston nimi
* @return tiedostosta luetut asiakasoliot listana
*/
public static ArrayList<Asiakas> lueAsiakkaat(String tiedostonNimi) {
ArrayList<Asiakas> asiakkaat = new ArrayList<>();
ArrayList<String> data = lueTiedosto(tiedostonNimi);
for (String adata : data) {
Asiakas as = parsiAsiakas(adata);
asiakkaat.add(as);
}
return asiakkaat;
}
}
No preview for this file type
No preview for this file type
12345;Antti Asiakas;10.0
54321;Anna Asiakas;55.5
99999;Keijo Keksitty;1000.0
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment