Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
4.6 kB
2
Indexable
Never
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Ssak {
    private String imie;
    private short rokUrodzenia;
    private boolean mlody;

    public Ssak(String imie, short rokUrodzenia, boolean mlody) {
        this.imie = imie;
        this.rokUrodzenia = rokUrodzenia;
        this.mlody = mlody;
    }

    public String przedstawSie() {
        return imie + ", " + rokUrodzenia + ", " + mlody + ";";
    }

    public void zapisz(FileOutputStream stream) throws IOException {
        stream.write(przedstawSie().getBytes());
    }

    public static Ssak[] zaladuj(String sciezka) throws IOException {
        FileInputStream stream = new FileInputStream(sciezka);
        byte[] data = stream.readAllBytes();
        String content = new String(data);
        String[] lines = content.split("\n");
        Ssak[] ssaki = new Ssak[lines.length];
        for (int i = 0; i < lines.length; i++) {
            String line = lines[i];
            String[] fields = line.split(", ");
            String imie = fields[0];
            short rokUrodzenia = Short.parseShort(fields[1]);
            boolean mlody = Boolean.parseBoolean(fields[2].substring(0, fields[2].length() - 1));
            if (fields.length == 3) {
                ssaki[i] = new Ssak(imie, rokUrodzenia, mlody);
            } else if (fields.length == 4) {
                int iloscSzczeniat = Integer.parseInt(fields[3].substring(0, fields[3].length() - 1));
                ssaki[i] = new Wadera(imie, rokUrodzenia, mlody, iloscSzczeniat);
            } else if (fields.length == 5) {
                String nazwaStada = fields[3];
                int pozycja = Integer.parseInt(fields[4].substring(0, fields[4].length() - 1));
                ssaki[i] = new Wilk(imie, rokUrodzenia, mlody, nazwaStada, pozycja);
            }
        }
        return ssaki;
    }
}

class Wadera extends Ssak {
    private int iloscSzczeniat;
    private Ssak[] szczenieta;

    public Wadera(String imie, short rokUrodzenia, boolean mlody, int iloscSzczeniat) {
        super(imie, rokUrodzenia, mlody);
        this.iloscSzczeniat = iloscSzczeniat;
        this.szczenieta = new Ssak[iloscSzczeniat];
    }

    @Override
    public String przedstawSie() {
        return super.przedstawSie() + " " + iloscSzczeniat + ";";
    }
}

class Wilk extends Ssak {
    private String nazwaStada;
    private int pozycja;

    public Wilk(String imie, short rokUrodzenia, boolean mlody, String nazwaStada, int pozycja) {
        super(imie, rokUrodzenia, mlody);
        this.nazwaStada = nazwaStada;
        this.pozycja = pozycja;
    }

    @Override
    public String przedstawSie() {
        return super.przedstawSie() + " " + nazwaStada + ", " + pozycja + ";";
    }
}

class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("wilki.txt");
        if (file.exists()) {
            Ssak[] ssaki = Ssak.zaladuj("wilki.txt");
            for (Ssak ssak : ssaki) {
                System.out.println(ssak.przedstawSie());
            }
        } else {
            Wilk[] wilki1 = new Wilk[]{
                    new Wilk("Wilk1", (short) 2010, false, "Stado1", 1),
                    new Wilk("Wilk2", (short) 2011, false, "Stado1", 2),
                    new Wilk("Wilk3", (short) 2012, true, "Stado1", 3),
                    new Wilk("Wilk4", (short) 2013, true, "Stado1", 4),
                    new Wilk("Wilk5", (short) 2014, true, "Stado1", 5),
                    new Wilk("Wilk6", (short) 2015, true, "Stado1", 6),
                    new Wilk("Wilk7", (short) 2016, true, "Stado1", 7)
            };
            Wilk[] wilki2 = new Wilk[]{
                    new Wilk("Wilk8", (short) 2010, false, "Stado2", 1),
                    new Wilk("Wilk9", (short) 2011, false, "Stado2", 2),
                    new Wilk("Wilk10", (short) 2012, true, "Stado2", 3),
                    new Wilk("Wilk11", (short) 2013, true, "Stado2", 4),
                    new Wilk("Wilk12", (short) 2014, true, "Stado2", 5),
                    new Wilk("Wilk13", (short) 2015, true, "Stado2", 6),
                    new Wilk("Wilk14", (short) 2016, true, "Stado2", 7)
            };
            FileOutputStream stream = new FileOutputStream(file);
            for (Wilk wilk : wilki1) {
                wilk.zapisz(stream);
                stream.write('\n');
            }
            for (Wilk wilk : wilki2) {
                wilk.zapisz(stream);
                stream.write('\n');
            }
        }
    }
}