1.4.22 CSV export/import
This commit is contained in:
parent
da54018cad
commit
47ddd17223
@ -5,10 +5,13 @@ import java.time.Year;
|
||||
* Klasse Angestellter
|
||||
*
|
||||
* @author (WES)
|
||||
* @version (2022-03-18)
|
||||
* @version (2022-04-01)
|
||||
*
|
||||
* umgestellt auf Exception-Handling
|
||||
* mit Angestellter(String[]);
|
||||
*/
|
||||
|
||||
// mit auskommentierter toStringCsv()
|
||||
public class Angestellter extends Mitarbeiter implements GehaltBerechenbar
|
||||
{
|
||||
|
||||
@ -24,6 +27,11 @@ public class Angestellter extends Mitarbeiter implements GehaltBerechenbar
|
||||
super(name, gesch, gebJahr, eintrJahr);
|
||||
}
|
||||
|
||||
public Angestellter(String[] zeilenTeile) throws PersonalException
|
||||
{
|
||||
super(zeilenTeile);
|
||||
}
|
||||
|
||||
@Override // auf Deutsch "ueberschreiben" der Methode toString() aus der Superklasse Mitarbeiter
|
||||
public String toString()
|
||||
{
|
||||
@ -36,5 +44,13 @@ public class Angestellter extends Mitarbeiter implements GehaltBerechenbar
|
||||
{
|
||||
return 1500f + 50f*berechneDienstalter();
|
||||
}
|
||||
|
||||
// -------------------------- toString ------------------------
|
||||
|
||||
// public String toStringCsv()
|
||||
// {
|
||||
// return super.toStringCsv();
|
||||
// // es gibt keine weiteren Attribute
|
||||
// }
|
||||
|
||||
}
|
||||
|
@ -5,9 +5,11 @@ import java.time.Year;
|
||||
* Klasse Arzt
|
||||
*
|
||||
* @author (WES)
|
||||
* @version (2022-03-18)
|
||||
* @version (2022-03-31)
|
||||
*
|
||||
* umgestellt auf Exception-Handling
|
||||
* mit freiwilliger Uebung toStringCsv()
|
||||
* mit freiwilliger Uebung public Arzt (String[] zeilenTeile)
|
||||
*/
|
||||
public class Arzt extends Mitarbeiter implements GehaltBerechenbar
|
||||
{
|
||||
@ -15,6 +17,9 @@ public class Arzt extends Mitarbeiter implements GehaltBerechenbar
|
||||
private int wochenStunden;
|
||||
private float fixum;
|
||||
|
||||
// FUE
|
||||
// public Arzt (String[] zeilenTeile) // TODO
|
||||
|
||||
public Arzt(String name, char gesch, Year gebJahr, Year eintrJahr, int wochenStunden, float fixum) throws PersonalException
|
||||
{
|
||||
super(name, gesch, gebJahr, eintrJahr);
|
||||
@ -56,6 +61,8 @@ public class Arzt extends Mitarbeiter implements GehaltBerechenbar
|
||||
return fixum;
|
||||
}
|
||||
|
||||
// -------------------------- print / toString / toStringCsv ------------
|
||||
|
||||
// public void printInfo() // zum Testen
|
||||
// {
|
||||
// System.out.println(this);
|
||||
@ -69,4 +76,12 @@ public class Arzt extends Mitarbeiter implements GehaltBerechenbar
|
||||
", Fixum: " + fixum;
|
||||
}
|
||||
|
||||
public String toStringCsv()
|
||||
{
|
||||
String sep = ";";
|
||||
// Arzt;Wolfgang;m;1964;2022 ; 40 ; 1200.0
|
||||
return super.toStringCsv() +sep+wochenStunden+sep+fixum;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
package model;
|
||||
|
||||
// 2022-03-22 4BAIF
|
||||
// 2022-04-01 4BAIF
|
||||
// umgestellt auf Exception-Handling
|
||||
// mit serialVersionUID fuer Serialisierung
|
||||
// mit toStringCsv()
|
||||
|
||||
import java.time.Year;
|
||||
public class Freelancer extends Mitarbeiter implements PraemieBerechenbar, GehaltBerechenbar
|
||||
@ -28,6 +29,30 @@ public class Freelancer extends Mitarbeiter implements PraemieBerechenbar, Gehal
|
||||
setStundenSatz(stundenSatz);
|
||||
setStunden(stunden);
|
||||
}
|
||||
|
||||
public Freelancer (String[] zeilenTeile) throws PersonalException
|
||||
{
|
||||
super(zeilenTeile);
|
||||
// Freelancer;Anna;w;1976;2002;"10";"100.0"
|
||||
// [5] [6] im String-Array zeilenTeile
|
||||
// Achtung: ArrayIndexOutOfBoundsException
|
||||
// beim Parsen: NumberFormatException
|
||||
try
|
||||
{
|
||||
setStunden( Integer.parseInt(zeilenTeile[5].trim()) ); // int
|
||||
setStundenSatz( Float.parseFloat(zeilenTeile[6].trim()) ); // float
|
||||
}
|
||||
catch(ArrayIndexOutOfBoundsException e)
|
||||
{
|
||||
throw new PersonalException("Array-Fehler bei Freelancer(zeilenTeile): "
|
||||
+ e.getMessage());
|
||||
}
|
||||
catch(NumberFormatException e)
|
||||
{
|
||||
throw new PersonalException("Zahlenumwandlungs-Fehler (gebJahr oder eintrJahr) bei Freelancer(zeilenTeile): "
|
||||
+ e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public int getStunden()
|
||||
{
|
||||
@ -99,6 +124,15 @@ public class Freelancer extends Mitarbeiter implements PraemieBerechenbar, Gehal
|
||||
return "Fuer 15 Jahre Mitarbeit bei einem Personalbuero erhaelt der Freelancer ein \"Gehalt\", fuer 20 Jahre zwei \"Gehaelter\"\" als Praemie.";
|
||||
}
|
||||
|
||||
// ---------------------------- toString / print ----------------------------
|
||||
|
||||
public String toStringCsv()
|
||||
{
|
||||
char sep = ';';
|
||||
|
||||
return super.toStringCsv()+sep+stunden+sep+stundenSatz;
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return new StringBuffer().append("Freelancer ").
|
||||
|
@ -1,167 +1,230 @@
|
||||
package model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
// 2022-03-21 4BAIF
|
||||
// Klasse abstract
|
||||
// Methode berechneGehalt() abstract
|
||||
// 2022-01-26: Debugging toString() - mit ?-Operator gefixt
|
||||
// Interface Comparable
|
||||
|
||||
// Umstellung auf EH
|
||||
|
||||
import java.time.Year;
|
||||
import java.util.Comparator;
|
||||
|
||||
public abstract class Mitarbeiter implements Comparable<Mitarbeiter>, Serializable
|
||||
//2022-03-31 4BAIF
|
||||
//Klasse abstract
|
||||
//Methode berechneGehalt() abstract
|
||||
//2022-01-26: Debugging toString() - mit ?-Operator gefixt
|
||||
//Interface Comparable
|
||||
|
||||
//Umstellung auf EH
|
||||
|
||||
// neuer Konstruktor fuer importMitarbeiter
|
||||
// Entwicklungsstand
|
||||
|
||||
public abstract class Mitarbeiter implements Comparable <Mitarbeiter>, Serializable
|
||||
//public class Mitarbeiter implements Comparable <Mitarbeiter> // zum Testen
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = 2022_03_22__13_15L;
|
||||
private String name;
|
||||
private Year gebJahr, eintrJahr;
|
||||
private char gesch;
|
||||
private Year gebJahr, eintrJahr;
|
||||
private char gesch;
|
||||
|
||||
public Mitarbeiter() throws PersonalException // zum Testen
|
||||
{
|
||||
setName("Anna");
|
||||
setGesch('w');
|
||||
setGebJahr(Year.of(2001));
|
||||
setEintrJahr(Year.now());
|
||||
}
|
||||
public Mitarbeiter() throws PersonalException // zum Testen
|
||||
{
|
||||
setName("Anna");
|
||||
setGesch('w');
|
||||
setGebJahr(Year.of(2001));
|
||||
setEintrJahr(Year.now());
|
||||
}
|
||||
|
||||
public Mitarbeiter(String name, char gesch, Year gebJahr, Year eintrJahr) throws PersonalException {
|
||||
setName(name);
|
||||
setGesch(gesch);
|
||||
setGebJahr(gebJahr);
|
||||
setEintrJahr(eintrJahr);
|
||||
}
|
||||
public Mitarbeiter(String name, char gesch, Year gebJahr, Year eintrJahr) throws PersonalException
|
||||
{
|
||||
setName(name);
|
||||
setGesch(gesch);
|
||||
setGebJahr(gebJahr);
|
||||
setEintrJahr(eintrJahr);
|
||||
}
|
||||
|
||||
public Mitarbeiter(String[] zeilenTeile) throws PersonalException
|
||||
{
|
||||
if (zeilenTeile != null)
|
||||
{
|
||||
// setName();
|
||||
// setGesch();
|
||||
// setEintrJahr();
|
||||
// setGebJahr();
|
||||
|
||||
setAllFields(zeilenTeile);
|
||||
}
|
||||
else
|
||||
throw new PersonalException("Fehler bei Mitarbeiter(String[]): null-Referenz erhalten");
|
||||
}
|
||||
|
||||
// ------------------------------------ getter ------------------------
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
//------------------------------------ getter ------------------------
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public char getGesch() {
|
||||
return gesch;
|
||||
}
|
||||
public char getGesch()
|
||||
{
|
||||
return gesch;
|
||||
}
|
||||
|
||||
public Year getGebJahr() {
|
||||
return gebJahr;
|
||||
}
|
||||
public Year getGebJahr()
|
||||
{
|
||||
return gebJahr;
|
||||
}
|
||||
|
||||
public Year getEintrJahr() {
|
||||
return eintrJahr;
|
||||
}
|
||||
public Year getEintrJahr()
|
||||
{
|
||||
return eintrJahr;
|
||||
}
|
||||
//------------------------------------ setter ------------------------
|
||||
|
||||
public void setName(String name) throws PersonalException
|
||||
{
|
||||
if (name != null)
|
||||
if (name.length() >= 2)
|
||||
this.name = name;
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setName("+name+") !!!");
|
||||
else
|
||||
throw new PersonalException("null-Referenz fuer setName(String name) !!!");
|
||||
}
|
||||
|
||||
// ------------------------------------ setter ------------------------
|
||||
public void setName(String name) throws PersonalException {
|
||||
if (name != null)
|
||||
if (name.length() >= 2)
|
||||
this.name = name;
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setName(" + name + ") !!!");
|
||||
else
|
||||
throw new PersonalException("null-Referenz fuer setName(String name) !!!");
|
||||
}
|
||||
public void setGesch(char gesch) throws PersonalException
|
||||
{
|
||||
if (gesch == 'm' || gesch == 'M' || gesch == 'w' || gesch == 'W' || gesch == 'x' || gesch == 'X' )
|
||||
this.gesch = Character.toLowerCase(gesch); // Character ist "Wrapper"-Klasse von char
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setGesch(" + gesch + ") !!!");
|
||||
}
|
||||
|
||||
public void setGesch(char gesch) throws PersonalException {
|
||||
if (gesch == 'm' || gesch == 'M' || gesch == 'w' || gesch == 'W' || gesch == 'x' || gesch == 'X')
|
||||
this.gesch = Character.toLowerCase(gesch); // Character ist "Wrapper"-Klasse von char
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setGesch(" + gesch + ") !!!");
|
||||
}
|
||||
public void setGebJahr(Year gebJahr) throws PersonalException
|
||||
{
|
||||
//int aktJahr = Year.now().getValue();
|
||||
Year aktYear = Year.now();
|
||||
if (gebJahr != null)
|
||||
// if (gebJahr.getValue() >= aktJahr-100 && gebJahr.getValue() <= aktJahr )
|
||||
if ( !gebJahr.isBefore(aktYear.minusYears(100)) && !gebJahr.isAfter(aktYear) )
|
||||
this.gebJahr = gebJahr;
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setGebJahr("+gebJahr+") !!!");
|
||||
else
|
||||
throw new PersonalException("null-Referenz fuer setGebJahr(Year gebJahr) !!!");
|
||||
}
|
||||
|
||||
public void setGebJahr(Year gebJahr) throws PersonalException {
|
||||
// int aktJahr = Year.now().getValue();
|
||||
Year aktYear = Year.now();
|
||||
if (gebJahr != null)
|
||||
// if (gebJahr.getValue() >= aktJahr-100 && gebJahr.getValue() <= aktJahr )
|
||||
if (!gebJahr.isBefore(aktYear.minusYears(100)) && !gebJahr.isAfter(aktYear))
|
||||
this.gebJahr = gebJahr;
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setGebJahr(" + gebJahr + ") !!!");
|
||||
else
|
||||
throw new PersonalException("null-Referenz fuer setGebJahr(Year gebJahr) !!!");
|
||||
}
|
||||
public void setEintrJahr(Year eintrJahr) throws PersonalException
|
||||
{
|
||||
if (eintrJahr != null)
|
||||
if (gebJahr != null)
|
||||
{
|
||||
int aktJahr = Year.now().getValue();
|
||||
if (eintrJahr.getValue() >= gebJahr.getValue()+15)
|
||||
if (eintrJahr.getValue() <= aktJahr )
|
||||
this.eintrJahr = eintrJahr;
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setEintrJahr("+eintrJahr+") !!!");
|
||||
else
|
||||
throw new PersonalException("Fehler bei setEintrJahr("+eintrJahr+") -> Person ist zu jung ("+berechneAlter()+")!!!");
|
||||
}
|
||||
else
|
||||
throw new PersonalException("null-Referenz bei gebJahr -> eintrJahr kann nicht geprueft werden !!!");
|
||||
else
|
||||
throw new PersonalException("null-Referenz fuer setEintrJahr(Year eintrJahr) !!!");
|
||||
}
|
||||
|
||||
// Entwicklungsstand TODO
|
||||
private void setAllFields(String[] zeilenTeile) throws PersonalException {
|
||||
|
||||
// beim Arbeiten mit Array kann es eine
|
||||
// ArrayIndexOutOfBoundsException geben
|
||||
try {
|
||||
//Angestellter;Alfred; m; 1977; 2022
|
||||
// [0] [1] [2] [3] [4] im Array zeilenTeile
|
||||
setName(zeilenTeile[1].trim()); // trim(): whitespaces "vorne und hinten" entfernen
|
||||
setGesch(zeilenTeile[2].trim().charAt(0)); // z.B. "m" -> 'm'
|
||||
// Integer.parseInt(String)
|
||||
// throws NumberFormatException bei Integer.parseInt
|
||||
setGebJahr( Year.of(Integer.parseInt(zeilenTeile[3].trim())) ); // "1977"
|
||||
// throws NumberFormatException bei Integer.parseInt
|
||||
setEintrJahr(Year.of(Integer.parseInt(zeilenTeile[4].trim()))); // 2022
|
||||
}
|
||||
catch(ArrayIndexOutOfBoundsException e)
|
||||
{
|
||||
throw new PersonalException("Array-Fehler bei setAllFields(): "
|
||||
+ e.getMessage());
|
||||
}
|
||||
catch (StringIndexOutOfBoundsException e)
|
||||
{
|
||||
throw new PersonalException("Zeichenumwandlungsfehler-Fehler (gesch) bei setAllFields(): "
|
||||
+ e.getMessage());
|
||||
}
|
||||
catch(NumberFormatException e)
|
||||
{
|
||||
throw new PersonalException("Zahlenumwandlungs-Fehler (gebJahr oder eintrJahr) bei setAllFields(): "
|
||||
+ e.getMessage());
|
||||
}
|
||||
}
|
||||
//-------------------------------------- weitere -----------------------
|
||||
public int berechneAlter()
|
||||
{
|
||||
// return 2021 - gebJahr; // ganz schlecht...
|
||||
|
||||
public void setEintrJahr(Year eintrJahr) throws PersonalException {
|
||||
if (eintrJahr != null)
|
||||
if (gebJahr != null) {
|
||||
int aktJahr = Year.now().getValue();
|
||||
if (eintrJahr.getValue() >= gebJahr.getValue() + 15)
|
||||
if (eintrJahr.getValue() <= aktJahr)
|
||||
this.eintrJahr = eintrJahr;
|
||||
else
|
||||
throw new PersonalException("Falscher Parameterwert fuer setEintrJahr(" + eintrJahr + ") !!!");
|
||||
else
|
||||
throw new PersonalException("Fehler bei setEintrJahr(" + eintrJahr + ") -> Person ist zu jung ("
|
||||
+ berechneAlter() + ")!!!");
|
||||
} else
|
||||
throw new PersonalException("null-Referenz bei gebJahr -> eintrJahr kann nicht geprueft werden !!!");
|
||||
else
|
||||
throw new PersonalException("null-Referenz fuer setEintrJahr(Year eintrJahr) !!!");
|
||||
}
|
||||
// Bessere Loesung in Einzelschritten:
|
||||
// Year datum = Year.now();
|
||||
// int aktJahr = datum.getValue();
|
||||
// int alter = aktJahr - gebJahr;
|
||||
// return alter;
|
||||
|
||||
// -------------------------------------- weitere -----------------------
|
||||
public int berechneAlter() {
|
||||
// return 2021 - gebJahr; // ganz schlecht...
|
||||
// Bessere Loesung in einem Schritt:
|
||||
return (gebJahr != null?Year.now().getValue() - gebJahr.getValue():-99); // Fehlercode
|
||||
}
|
||||
|
||||
// Bessere Loesung in Einzelschritten:
|
||||
// Year datum = Year.now();
|
||||
// int aktJahr = datum.getValue();
|
||||
// int alter = aktJahr - gebJahr;
|
||||
// return alter;
|
||||
public int berechneDienstalter()
|
||||
{
|
||||
return (eintrJahr != null?Year.now().getValue() - eintrJahr.getValue():-99); // Fehlercode
|
||||
}
|
||||
|
||||
// Bessere Loesung in einem Schritt:
|
||||
return (gebJahr != null ? Year.now().getValue() - gebJahr.getValue() : -99); // Fehlercode
|
||||
}
|
||||
|
||||
public int berechneDienstalter() {
|
||||
return (eintrJahr != null ? Year.now().getValue() - eintrJahr.getValue() : -99); // Fehlercode
|
||||
}
|
||||
|
||||
// public float berechneGehalt()
|
||||
// {
|
||||
// return 1500f + 50f*berechneDienstalter();
|
||||
// }
|
||||
// public float berechneGehalt()
|
||||
// {
|
||||
// return 1500f + 50f*berechneDienstalter();
|
||||
// }
|
||||
|
||||
// public float berechneGehalt() // zum UMSTELLEN und TESTEN
|
||||
// {
|
||||
// return 0f;
|
||||
// }
|
||||
|
||||
public abstract float berechneGehalt(); // alle Subklassen
|
||||
// MUESSEN diese Methode implementieren
|
||||
// Ausnahme: diese Subklasse ist auch abstrakt
|
||||
|
||||
// public abstract int berechneUrlaubsanspruch() // Beispiel fuer einen
|
||||
// Anwendungsfall einer abstrakten Methode
|
||||
// ;
|
||||
|
||||
// --------------------------------- compareTo -----------------------------
|
||||
|
||||
public abstract float berechneGehalt(); // alle Subklassen
|
||||
// MUESSEN diese Methode implementieren
|
||||
// Ausnahme: diese Subklasse ist auch abstrakt
|
||||
|
||||
// public abstract int berechneUrlaubsanspruch() // Beispiel fuer einen
|
||||
// Anwendungsfall einer abstrakten Methode
|
||||
// ;
|
||||
|
||||
// --------------------------------- compareTo -----------------------------
|
||||
|
||||
@Override
|
||||
public int compareTo(Mitarbeiter o) { // "natuerliche" Reihenfolge von Gehalt
|
||||
if (o != null) {
|
||||
if (o != null)
|
||||
{
|
||||
if (berechneGehalt() > o.berechneGehalt())
|
||||
return 1;
|
||||
else if (berechneGehalt() < o.berechneGehalt())
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
} else // Annahme bis zum ExceptionHandling, dann NullPointerException
|
||||
if (berechneGehalt() < o.berechneGehalt())
|
||||
return -1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else // Annahme bis zum ExceptionHandling, dann NullPointerException
|
||||
return 1;
|
||||
}
|
||||
|
||||
// ----------------------------------- innere Klasse
|
||||
// --------------------------------
|
||||
|
||||
|
||||
// ----------------------------------- innere Klasse --------------------------------
|
||||
|
||||
public static class AlterComparator implements Comparator<Mitarbeiter> {
|
||||
|
||||
@Override
|
||||
public int compare(Mitarbeiter o1, Mitarbeiter o2) {
|
||||
|
||||
|
||||
if (o1 != null && o2 != null)
|
||||
if (o1.berechneAlter() > o2.berechneAlter())
|
||||
return 1;
|
||||
@ -172,23 +235,53 @@ public abstract class Mitarbeiter implements Comparable<Mitarbeiter>, Serializab
|
||||
else // o1 == null || o2 == null
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------ toString() / print --------------------------------------
|
||||
public String toString()
|
||||
{
|
||||
String geschlecht;
|
||||
switch(gesch)
|
||||
{
|
||||
case 'm':
|
||||
case 'M': geschlecht = "maennlich"; break;
|
||||
case 'w':
|
||||
case 'W': geschlecht = "weiblich"; break;
|
||||
case 'x':
|
||||
case 'X': geschlecht = "divers"; break;
|
||||
default : geschlecht = "unbekannt";
|
||||
|
||||
public void print() {
|
||||
System.out.println(this); // System.out.println(toString())
|
||||
}
|
||||
|
||||
public String toStringCsv() {
|
||||
char sep = ';'; // Delimiter
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append(getClass().getSimpleName()).append(sep);
|
||||
sb.append(name).append(sep);
|
||||
sb.append(gesch).append(sep);
|
||||
sb.append(gebJahr).append(sep);
|
||||
sb.append(eintrJahr).append(sep);
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
return "Name: " + name+
|
||||
", Gesch.: " + geschlecht+
|
||||
", Geb.Jahr: " + (gebJahr != null?gebJahr.getValue():"keines vorhanden")+
|
||||
", Alter: " + berechneAlter()+
|
||||
", Eintr.Jahr: " + (eintrJahr != null?eintrJahr.getValue():"keines vorhanden")+
|
||||
", Dienstalter: "+ berechneDienstalter() +
|
||||
", Gehalt: " + berechneGehalt();
|
||||
}
|
||||
|
||||
public void print()
|
||||
{
|
||||
System.out.println(this); //System.out.println(toString())
|
||||
}
|
||||
|
||||
public String toStringCsv()
|
||||
{
|
||||
char sep = ';'; // "Trennzeichen" zwischen den Attribut-Werten
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append(getClass().getSimpleName()).append(sep); // Typ bzw. Klassenbezeichnung
|
||||
sb.append(name).append(sep); // name
|
||||
sb.append(gesch).append(sep); // gesch
|
||||
sb.append(gebJahr).append(sep); // gebJahr
|
||||
sb.append(eintrJahr); // .append(sep); // eintrJahr
|
||||
|
||||
return (sb.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,15 +1,21 @@
|
||||
package model;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
// 2022-03-25 4BAIF
|
||||
// 2022-04-01 4BAIF
|
||||
|
||||
// Umgestellt auf ArrayList
|
||||
// mit public float berechneDurchnittsalter()
|
||||
@ -43,10 +49,9 @@ import java.io.ObjectOutputStream;
|
||||
// Textfile Speichern:
|
||||
// exportMitarbeiter
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
// 2022-03-29 exportMitarbeiterCsv
|
||||
|
||||
// 2022-04-01 importMitarbeiterCsc Vorbereitung
|
||||
|
||||
public class Personalbuero {
|
||||
private ArrayList<Mitarbeiter> mitarbeiter; // eine ArrayList ist "getypt"
|
||||
@ -400,12 +405,47 @@ public class Personalbuero {
|
||||
|
||||
try (BufferedWriter bw = new BufferedWriter(new FileWriter(strPfadName))) {
|
||||
StringBuilder sb = new StringBuilder(100000);
|
||||
for (Mitarbeiter mit : mitarbeiter) {
|
||||
sb.append(mit.toStringCsv()).append(nLn);
|
||||
}
|
||||
for (Mitarbeiter mit : mitarbeiter)
|
||||
sb.append(mit.toStringCsv()).append(nLn); // .append("\n");
|
||||
bw.write(sb.toString());
|
||||
} catch (IOException e) {
|
||||
throw new PersonalException("Eingabe/Ausgabe-Fehler bei exportMitarbeiter()" + e.getMessage());
|
||||
throw new PersonalException("Eingabe/Ausgabe-Fehler bei exportMitarbeiterCsv()" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public void importMitarbeiterCsv() throws PersonalException // TODO
|
||||
{
|
||||
String fSep = System.getProperty("file.separator");
|
||||
String strPfadName = "c:" + fSep + "scratch" + fSep + "mitarbeiter.csv";
|
||||
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(strPfadName))) {
|
||||
String zeile;
|
||||
String[] zeilenTeile;
|
||||
String sep = ";"; // erwartetes Trennzeichen in der csv-Datei
|
||||
|
||||
// Muster: "Vorauslesen"
|
||||
zeile = br.readLine(); // wenn keine Zeile gefunden, dann return null
|
||||
|
||||
while (zeile != null) {
|
||||
zeilenTeile = zeile.trim().split(sep);
|
||||
|
||||
// Welcher Konstruktor wird aufgerufen?
|
||||
// Wie ermitteln wir den Mitarbeiter-Typ?
|
||||
|
||||
if (zeile.contains("Angestellter")) {
|
||||
aufnehmen(new Angestellter(zeilenTeile));
|
||||
} else
|
||||
; // if ((zeile.contains("Freelancer"))
|
||||
// else
|
||||
// if ((zeile.contains("Arzt"))
|
||||
// else unbekannter Mitarbeiter-Typ
|
||||
zeile = br.readLine();
|
||||
}
|
||||
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new PersonalException("Datei-Fehler bei importMitarbeiterCsv(): " + e.getMessage());
|
||||
} catch (IOException e) {
|
||||
throw new PersonalException("Eingabe/Ausgabe-Fehler bei importMitarbeiterCsv(): " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
43
src/test/TestExport.java
Normal file
43
src/test/TestExport.java
Normal file
@ -0,0 +1,43 @@
|
||||
package test;
|
||||
|
||||
import java.time.Year;
|
||||
import model.Angestellter;
|
||||
import model.Arzt;
|
||||
import model.Freelancer;
|
||||
import model.PersonalException;
|
||||
import model.Personalbuero;
|
||||
|
||||
// 2022-03-31 um Arzt erweitert
|
||||
|
||||
public class TestExport
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
String nLn = System.getProperty("line.separator");
|
||||
|
||||
System.out.println("+++++++++++++++++++++++ testExportCsvMitarbeiter +++++++++++++++++++++++++\n");
|
||||
try {
|
||||
Personalbuero pb = new Personalbuero();
|
||||
|
||||
Angestellter a1 = new Angestellter("Alfred", 'm', Year.of(1977), Year.now());
|
||||
pb.aufnehmen(a1);
|
||||
|
||||
Freelancer f2 = new Freelancer("Anna", 'w', Year.of(1976), Year.of(2002), 100f, 10);
|
||||
pb.aufnehmen(f2);
|
||||
|
||||
Arzt ar1 = new Arzt("Wolfgang", 'm', Year.of(1964), Year.now(), 40, 1200f);
|
||||
pb.aufnehmen(ar1);
|
||||
|
||||
System.out.println(pb); // Alfred, Anna, Wolfgang
|
||||
System.out.println();
|
||||
|
||||
pb.exportMitarbeiterCsv();
|
||||
System.out.println("exportMitarbeiterCsv() wurde ausgefuehrt");
|
||||
}
|
||||
catch (PersonalException e)
|
||||
{
|
||||
System.out.println("!!! Fehler bei TestExport !!!" +nLn+ e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
64
src/test/TestImport.java
Normal file
64
src/test/TestImport.java
Normal file
@ -0,0 +1,64 @@
|
||||
package test;
|
||||
|
||||
import java.time.Year;
|
||||
import model.Angestellter;
|
||||
import model.Freelancer;
|
||||
import model.PersonalException;
|
||||
import model.Personalbuero;
|
||||
|
||||
// 2022-04-01
|
||||
|
||||
public class TestImport
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
String nLn = System.getProperty("line.separator");
|
||||
|
||||
try
|
||||
{
|
||||
Personalbuero pb = new Personalbuero();
|
||||
pb.aufnehmen(new Angestellter("Hans", 'x', Year.of(1965), Year.of(1985)));
|
||||
System.out.println(pb);
|
||||
System.out.println();
|
||||
|
||||
// zeilenTeile-Konstruktoren testen
|
||||
// TODO Freelancer
|
||||
|
||||
// pb.aufnehmen(new Angestellter(new String[] {})); // Array-Fehler: Index 1 out of bounds for length 0
|
||||
// pb.aufnehmen(new Angestellter(new String[] {"", "", "", "",""})); // Fehler: falscher Parameterwert name
|
||||
// pb.aufnehmen(new Angestellter(new String[] {"", "Hannes", "", "",""})); // Fehler: falscher Parameterwert gesch
|
||||
// pb.aufnehmen(new Angestellter(new String[] {"", "Hannes", "m", "neunzehnhundertfuenfundsechzig",""})); // Fehler: falscher Paramterwert gebJahr
|
||||
// pb.aufnehmen(new Angestellter(new String[] {"", "Hannes", "m", "1965","neunzehnhundertfuenfundachzig"})); // Fehler: falscher Paramterwert eintrJahr
|
||||
pb.aufnehmen(new Angestellter(new String[] {"Angestellter", "Hannes", "m", "1965","1985"}));
|
||||
|
||||
System.out.println(pb); // Hans, Hannes
|
||||
System.out.println();
|
||||
|
||||
// System.out.println("TODO: Personalbuero.importMitarbeiterCsv() ist noch zu implementieren!!!"); // TODO
|
||||
pb.importMitarbeiterCsv();
|
||||
System.out.println(pb); // Hans, Hannes, Alfred, Anna, Wolfgang
|
||||
System.out.println();
|
||||
|
||||
try {
|
||||
Freelancer f2 = new Freelancer("Anna", 'w', Year.of(1976), Year.of(2002), 100f, 10);
|
||||
pb.aufnehmen(f2); // Fehler schon vorhanden
|
||||
}
|
||||
catch (PersonalException e) {
|
||||
System.out.println("!!! Fehler bei TestImport !!!" +nLn+ e.getMessage());
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
System.out.println(pb); // Hans, Hannes, Alfred, Anna, Wolfgang
|
||||
System.out.println();
|
||||
|
||||
Angestellter a1 = new Angestellter("Alfred", 'm', Year.of(1977), Year.now());
|
||||
pb.aufnehmen(a1); // Fehler schon vorhanden
|
||||
|
||||
}
|
||||
catch (PersonalException e)
|
||||
{
|
||||
System.out.println("!!! Fehler bei TestImport !!!" +nLn+ e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -36,8 +36,6 @@ public class TestPersonalbueroMain {
|
||||
testLoadMitarbeiter();
|
||||
|
||||
testExportMitarbeiter();
|
||||
|
||||
testExport();
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println("TestPersonalbueroMain: ein unerwarteter Ausnahme-Fehler ist aufgetreten");
|
||||
@ -46,31 +44,6 @@ public class TestPersonalbueroMain {
|
||||
}
|
||||
}
|
||||
|
||||
private static void testExport() {
|
||||
String nLn = System.getProperty("line.separator");
|
||||
|
||||
System.out.println("+++++++++++++++++++++++ testExportCsvMitarbeiter +++++++++++++++++++++++++\n");
|
||||
try {
|
||||
Personalbuero pb = new Personalbuero();
|
||||
|
||||
Angestellter a1 = new Angestellter("Alfred", 'm', Year.of(1977), Year.now());
|
||||
pb.aufnehmen(a1);
|
||||
|
||||
Freelancer f2 = new Freelancer("Anna", 'w', Year.of(1976), Year.of(2002), 100f, 10);
|
||||
pb.aufnehmen(f2);
|
||||
|
||||
System.out.println(pb); // Alfred, Anna
|
||||
System.out.println();
|
||||
|
||||
pb.exportMitarbeiterCsv();
|
||||
System.out.println("exportMitarbeiterCsv() wurde ausgefuehrt");
|
||||
}
|
||||
catch (PersonalException e)
|
||||
{
|
||||
System.out.println("!!! Fehler bei TestExport !!!" +nLn+ e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static void testExportMitarbeiter() {
|
||||
|
||||
System.out.println("+++++++++++++++++++++++ testExportMitarbeiter +++++++++++++++++++++++++\n");
|
||||
|
Loading…
Reference in New Issue
Block a user