doppeltes aufnehmen verhindert, equals, hashcode (Old and new)
This commit is contained in:
parent
47ddd17223
commit
e6e59766b6
@ -5,20 +5,29 @@ import java.time.Year;
|
|||||||
* Klasse Arzt
|
* Klasse Arzt
|
||||||
*
|
*
|
||||||
* @author (WES)
|
* @author (WES)
|
||||||
* @version (2022-03-31)
|
* @version (2022-04-05)
|
||||||
*
|
*
|
||||||
* umgestellt auf Exception-Handling
|
* umgestellt auf Exception-Handling
|
||||||
* mit freiwilliger Uebung toStringCsv()
|
* mit freiwilliger Uebung toStringCsv()
|
||||||
* mit freiwilliger Uebung public Arzt (String[] zeilenTeile)
|
* mit freiwilliger Uebung public Arzt (String[] zeilenTeile)
|
||||||
|
* mit public Arzt(String[] zeilenTeile)
|
||||||
|
* mit setAllFields(String[] zeilenTeile)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Arzt extends Mitarbeiter implements GehaltBerechenbar
|
public class Arzt extends Mitarbeiter implements GehaltBerechenbar
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 2022_03_22__13_15L;
|
private static final long serialVersionUID = 2022_04_05__12_40L;
|
||||||
private int wochenStunden;
|
private int wochenStunden;
|
||||||
private float fixum;
|
private float fixum;
|
||||||
|
|
||||||
// FUE
|
// FUE 2002-04-01
|
||||||
// public Arzt (String[] zeilenTeile) // TODO
|
// public Arzt (String[] zeilenTeile)
|
||||||
|
|
||||||
|
public Arzt (String[] zeilenTeile) throws PersonalException
|
||||||
|
{
|
||||||
|
super(zeilenTeile);
|
||||||
|
setAllFields(zeilenTeile);
|
||||||
|
}
|
||||||
|
|
||||||
public Arzt(String name, char gesch, Year gebJahr, Year eintrJahr, int wochenStunden, float fixum) throws PersonalException
|
public Arzt(String name, char gesch, Year gebJahr, Year eintrJahr, int wochenStunden, float fixum) throws PersonalException
|
||||||
{
|
{
|
||||||
@ -43,6 +52,27 @@ public class Arzt extends Mitarbeiter implements GehaltBerechenbar
|
|||||||
throw new PersonalException("Fehler bei setFixum(): Wert von fixum muss groesser 0.0 sein (" + fixum + ")");
|
throw new PersonalException("Fehler bei setFixum(): Wert von fixum muss groesser 0.0 sein (" + fixum + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setAllFields(String[] zeilenTeile) throws PersonalException
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
// 10; 1000.0
|
||||||
|
// [5] [6] im Array zeilenTeile
|
||||||
|
setWochenStunden(Integer.parseInt(zeilenTeile[5].trim())); // "10"
|
||||||
|
// throws NumberFormatException bei Integer.parseInt
|
||||||
|
setFixum(Float.parseFloat(zeilenTeile[6].trim())); // "1000.0"
|
||||||
|
}
|
||||||
|
catch(ArrayIndexOutOfBoundsException e)
|
||||||
|
{
|
||||||
|
throw new PersonalException("Array-Fehler bei setAllFields(): "
|
||||||
|
+ e.getMessage());
|
||||||
|
}
|
||||||
|
catch(NumberFormatException e)
|
||||||
|
{
|
||||||
|
throw new PersonalException("Zahlenumwandlungs-Fehler (wochenStunden oder fixum) bei setAllFields(): "
|
||||||
|
+ e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public float berechneStundensatz() throws PersonalException
|
public float berechneStundensatz() throws PersonalException
|
||||||
{
|
{
|
||||||
if (wochenStunden > 0)
|
if (wochenStunden > 0)
|
||||||
|
@ -1,150 +1,163 @@
|
|||||||
package model;
|
package model;
|
||||||
|
|
||||||
// 2022-04-01 4BAIF
|
import java.time.Year;
|
||||||
|
|
||||||
|
// 2022-04-05 4BAIF
|
||||||
// umgestellt auf Exception-Handling
|
// umgestellt auf Exception-Handling
|
||||||
// mit serialVersionUID fuer Serialisierung
|
// mit serialVersionUID fuer Serialisierung
|
||||||
// mit toStringCsv()
|
// mit toStringCsv()
|
||||||
|
// mit Freelancer (String[] zeilenTeile)
|
||||||
|
|
||||||
import java.time.Year;
|
public class Freelancer extends Mitarbeiter implements PraemieBerechenbar, GehaltBerechenbar {
|
||||||
public class Freelancer extends Mitarbeiter implements PraemieBerechenbar, GehaltBerechenbar
|
|
||||||
{
|
|
||||||
private static final long serialVersionUID = 2022_03_22__13_15L;
|
private static final long serialVersionUID = 2022_03_22__13_15L;
|
||||||
private int stunden;
|
private int stunden;
|
||||||
private float stundenSatz;
|
private float stundenSatz;
|
||||||
//private Year eintrJahr; // SO NICHT!!!
|
// private Year eintrJahr; // SO NICHT!!!
|
||||||
|
|
||||||
public Freelancer(float stundenSatz, int stunden) throws PersonalException
|
public Freelancer(float stundenSatz, int stunden) throws PersonalException {
|
||||||
{
|
super(); // ruft den parameterlosen/Default-Konstruktor der Superklasse Mitarbeiter auf
|
||||||
super(); // ruft den parameterlosen/Default-Konstruktor der Superklasse Mitarbeiter auf
|
setStundenSatz(stundenSatz);
|
||||||
setStundenSatz(stundenSatz);
|
setStunden(stunden);
|
||||||
setStunden(stunden);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public Freelancer(String name, char gesch, Year gebJahr, Year eintrJahr, float stundenSatz, int stunden) throws PersonalException
|
public Freelancer(String name, char gesch, Year gebJahr, Year eintrJahr, float stundenSatz, int stunden)
|
||||||
{
|
throws PersonalException {
|
||||||
// setName(name); // so nicht!
|
// setName(name); // so nicht!
|
||||||
// setGesch(gesch); // so nicht!
|
// setGesch(gesch); // so nicht!
|
||||||
// ....
|
// ....
|
||||||
super(name, gesch, gebJahr, eintrJahr); // Aufruf des. K. der Superklasse
|
super(name, gesch, gebJahr, eintrJahr); // Aufruf des. K. der Superklasse
|
||||||
setStundenSatz(stundenSatz);
|
setStundenSatz(stundenSatz);
|
||||||
setStunden(stunden);
|
setStunden(stunden);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Freelancer (String[] zeilenTeile) throws PersonalException
|
public Freelancer(String[] zeilenTeile) throws PersonalException {
|
||||||
{
|
super(zeilenTeile);
|
||||||
super(zeilenTeile);
|
// Freelancer;Anna;w;1976;2002;"10";"100.0"
|
||||||
// Freelancer;Anna;w;1976;2002;"10";"100.0"
|
// [5] [6] im String-Array zeilenTeile
|
||||||
// [5] [6] im String-Array zeilenTeile
|
// Achtung: ArrayIndexOutOfBoundsException
|
||||||
// Achtung: ArrayIndexOutOfBoundsException
|
// beim Parsen: NumberFormatException
|
||||||
// beim Parsen: NumberFormatException
|
try {
|
||||||
try
|
setStunden(Integer.parseInt(zeilenTeile[5].trim())); // int
|
||||||
{
|
setStundenSatz(Float.parseFloat(zeilenTeile[6].trim())); // float
|
||||||
setStunden( Integer.parseInt(zeilenTeile[5].trim()) ); // int
|
} catch (ArrayIndexOutOfBoundsException e) {
|
||||||
setStundenSatz( Float.parseFloat(zeilenTeile[6].trim()) ); // float
|
throw new PersonalException("Array-Fehler bei Freelancer(zeilenTeile): " + e.getMessage());
|
||||||
}
|
} catch (NumberFormatException e) {
|
||||||
catch(ArrayIndexOutOfBoundsException e)
|
throw new PersonalException(
|
||||||
{
|
"Zahlenumwandlungs-Fehler (gebJahr oder eintrJahr) bei Freelancer(zeilenTeile): " + e.getMessage());
|
||||||
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()
|
public int getStunden() {
|
||||||
{
|
return stunden;
|
||||||
return stunden;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public float getStundenSatz()
|
public float getStundenSatz() {
|
||||||
{
|
return stundenSatz;
|
||||||
return stundenSatz;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setStunden(int stunden) throws PersonalException
|
public void setStunden(int stunden) throws PersonalException {
|
||||||
{
|
if (stunden > 0)
|
||||||
if (stunden > 0)
|
this.stunden = stunden;
|
||||||
this.stunden = stunden;
|
else
|
||||||
else
|
throw new PersonalException("Fehler bei setStunden(): stunden sind 0 oder kleiner (" + stunden + ")");
|
||||||
throw new PersonalException("Fehler bei setStunden(): stunden sind 0 oder kleiner (" + stunden + ")");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setStundenSatz(float stundenSatz) throws PersonalException
|
public void setStundenSatz(float stundenSatz) throws PersonalException {
|
||||||
{
|
if (stundenSatz > 0f)
|
||||||
if (stundenSatz > 0f)
|
this.stundenSatz = stundenSatz;
|
||||||
this.stundenSatz = stundenSatz;
|
else
|
||||||
else
|
throw new PersonalException(
|
||||||
throw new PersonalException("Fehler bei setStundenSatz(): stundenSatz ist 0.0 oder kleiner (" + stundenSatz + ")");
|
"Fehler bei setStundenSatz(): stundenSatz ist 0.0 oder kleiner (" + stundenSatz + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
// so NICHT!!!
|
// so NICHT!!!
|
||||||
// public void setEintrJahr(Year eintrJahr)
|
// public void setEintrJahr(Year eintrJahr)
|
||||||
// {
|
// {
|
||||||
// if (eintrJahr != null)
|
// if (eintrJahr != null)
|
||||||
// if (gebJahr != null)
|
// if (gebJahr != null)
|
||||||
// {
|
// {
|
||||||
// int aktJahr = Year.now().getValue();
|
// int aktJahr = Year.now().getValue();
|
||||||
// if (eintrJahr.getValue() >= gebJahr.getValue()+15)
|
// if (eintrJahr.getValue() >= gebJahr.getValue()+15)
|
||||||
// if (eintrJahr.getValue() <= aktJahr )
|
// if (eintrJahr.getValue() <= aktJahr )
|
||||||
// this.eintrJahr = eintrJahr;
|
// this.eintrJahr = eintrJahr;
|
||||||
// else
|
// else
|
||||||
// System.out.println("Falscher Parameterwert fuer setEintrJahr("+eintrJahr+") !!!");
|
// System.out.println("Falscher Parameterwert fuer setEintrJahr("+eintrJahr+")
|
||||||
// else
|
// !!!");
|
||||||
// System.out.println("Fehler bei setEintrJahr("+eintrJahr+") -> Person ist zu jung ("+berechneAlter()+")!!!");
|
// else
|
||||||
// }
|
// System.out.println("Fehler bei setEintrJahr("+eintrJahr+") -> Person ist zu
|
||||||
// else
|
// jung ("+berechneAlter()+")!!!");
|
||||||
// System.out.println("null-Referenz bei gebJahr -> eintrJahr kann nicht geprueft werden !!!");
|
// }
|
||||||
// else
|
// else
|
||||||
// System.out.println("null-Referenz fuer setEintrJahr(Year eintrJahr) !!!");
|
// System.out.println("null-Referenz bei gebJahr -> eintrJahr kann nicht
|
||||||
// }
|
// geprueft werden !!!");
|
||||||
|
// else
|
||||||
|
// System.out.println("null-Referenz fuer setEintrJahr(Year eintrJahr) !!!");
|
||||||
|
// }
|
||||||
|
|
||||||
public float berechneGehalt()
|
public float berechneGehalt() {
|
||||||
{
|
return stundenSatz * stunden;
|
||||||
return stundenSatz*stunden;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public float berechnePraemie() // FUE Refactoring mit Verwendung von switch-case
|
public float berechnePraemie() // FUE Refactoring mit Verwendung von switch-case
|
||||||
{
|
{
|
||||||
float praemie = 0f;
|
float praemie = 0f;
|
||||||
|
|
||||||
if (berechneDienstalter() == 15)
|
if (berechneDienstalter() == 15)
|
||||||
praemie = berechneGehalt(); // 1x Gehalt als Praemie
|
praemie = berechneGehalt(); // 1x Gehalt als Praemie
|
||||||
else
|
else if (berechneDienstalter() == 20)
|
||||||
if (berechneDienstalter() == 20)
|
praemie = berechneGehalt() * 2; // 2x Gehalt als Praemie
|
||||||
praemie = berechneGehalt()*2; // 2x Gehalt als Praemie
|
|
||||||
|
|
||||||
return praemie;
|
return praemie;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String infoBerechnungPraemie()
|
public String infoBerechnungPraemie() {
|
||||||
{
|
return "Fuer 15 Jahre Mitarbeit bei einem Personalbuero erhaelt der Freelancer ein \"Gehalt\", fuer 20 Jahre zwei \"Gehaelter\"\" als Praemie.";
|
||||||
return "Fuer 15 Jahre Mitarbeit bei einem Personalbuero erhaelt der Freelancer ein \"Gehalt\", fuer 20 Jahre zwei \"Gehaelter\"\" als Praemie.";
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------- toString / print ----------------------------
|
// ----------------------------- equals / hashCode
|
||||||
|
|
||||||
public String toStringCsv()
|
@Override
|
||||||
{
|
public boolean equals(Object obj) {
|
||||||
char sep = ';';
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (!super.equals(obj))
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
Freelancer other = (Freelancer) obj;
|
||||||
|
if (stunden != other.stunden)
|
||||||
|
return false;
|
||||||
|
if (Float.floatToIntBits(stundenSatz) != Float.floatToIntBits(other.stundenSatz))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return super.toStringCsv()+sep+stunden+sep+stundenSatz;
|
// ---------------------------- toString / print ----------------------------
|
||||||
}
|
|
||||||
|
|
||||||
public String toString()
|
public String toStringCsv() {
|
||||||
{
|
char sep = ';';
|
||||||
return new StringBuffer().append("Freelancer ").
|
|
||||||
append(super.toString()). // ohne super. -> StackOverflowError -> rekursiver Methodenaufruf
|
return super.toStringCsv() + sep + stunden + sep + stundenSatz;
|
||||||
append(" Stunden: ").
|
}
|
||||||
append(stunden).append(" Stundensatz: ").
|
|
||||||
append(stundenSatz).
|
public String toString() {
|
||||||
append(" Praemie: ").append(berechnePraemie()).toString();
|
return new StringBuffer().append("Freelancer ").append(super.toString()). // ohne super. -> StackOverflowError
|
||||||
}
|
// -> rekursiver Methodenaufruf
|
||||||
|
append(" Stunden: ").append(stunden).append(" Stundensatz: ").append(stundenSatz).append(" Praemie: ")
|
||||||
|
.append(berechnePraemie()).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void print() {
|
||||||
|
System.out.println(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = super.hashCode();
|
||||||
|
result = prime * result + stunden;
|
||||||
|
result = prime * result + Float.floatToIntBits(stundenSatz);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public void print()
|
|
||||||
{
|
|
||||||
System.out.println(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package model;
|
package model;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.time.DateTimeException;
|
||||||
import java.time.Year;
|
import java.time.Year;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
//2022-04-05 4BAIF
|
||||||
|
|
||||||
//2022-03-31 4BAIF
|
|
||||||
//Klasse abstract
|
//Klasse abstract
|
||||||
//Methode berechneGehalt() abstract
|
//Methode berechneGehalt() abstract
|
||||||
//2022-01-26: Debugging toString() - mit ?-Operator gefixt
|
//2022-01-26: Debugging toString() - mit ?-Operator gefixt
|
||||||
@ -12,213 +15,193 @@ import java.util.Comparator;
|
|||||||
|
|
||||||
//Umstellung auf EH
|
//Umstellung auf EH
|
||||||
|
|
||||||
// neuer Konstruktor fuer importMitarbeiter
|
// neuer Konstruktor Mitarbeiter(String[] zeilenTeile) fuer importMitarbeiter
|
||||||
// Entwicklungsstand
|
// setAllFields(String [] zeilenTeile)
|
||||||
|
|
||||||
public abstract class Mitarbeiter implements Comparable <Mitarbeiter>, Serializable
|
public abstract class Mitarbeiter implements Comparable<Mitarbeiter>, Serializable
|
||||||
//public class Mitarbeiter implements Comparable <Mitarbeiter> // zum Testen
|
//public class Mitarbeiter implements Comparable <Mitarbeiter> // zum Testen
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = 2022_03_22__13_15L;
|
private static final long serialVersionUID = 2022_03_22__13_15L;
|
||||||
private String name;
|
private String name;
|
||||||
private Year gebJahr, eintrJahr;
|
private Year gebJahr, eintrJahr;
|
||||||
private char gesch;
|
private char gesch;
|
||||||
|
|
||||||
public Mitarbeiter() throws PersonalException // zum Testen
|
public Mitarbeiter() throws PersonalException // zum Testen
|
||||||
{
|
{
|
||||||
setName("Anna");
|
setName("Anna");
|
||||||
setGesch('w');
|
setGesch('w');
|
||||||
setGebJahr(Year.of(2001));
|
setGebJahr(Year.of(2001));
|
||||||
setEintrJahr(Year.now());
|
setEintrJahr(Year.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mitarbeiter(String name, char gesch, Year gebJahr, Year eintrJahr) throws PersonalException
|
public Mitarbeiter(String name, char gesch, Year gebJahr, Year eintrJahr) throws PersonalException {
|
||||||
{
|
setName(name);
|
||||||
setName(name);
|
setGesch(gesch);
|
||||||
setGesch(gesch);
|
setGebJahr(gebJahr);
|
||||||
setGebJahr(gebJahr);
|
setEintrJahr(eintrJahr);
|
||||||
setEintrJahr(eintrJahr);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public Mitarbeiter(String[] zeilenTeile) throws PersonalException
|
public Mitarbeiter(String[] zeilenTeile) throws PersonalException {
|
||||||
{
|
if (zeilenTeile != null) {
|
||||||
if (zeilenTeile != null)
|
|
||||||
{
|
|
||||||
// setName();
|
// setName();
|
||||||
// setGesch();
|
// setGesch();
|
||||||
// setEintrJahr();
|
// setEintrJahr();
|
||||||
// setGebJahr();
|
// setGebJahr();
|
||||||
|
|
||||||
setAllFields(zeilenTeile);
|
setAllFields(zeilenTeile);
|
||||||
}
|
} else
|
||||||
else
|
throw new PersonalException("Fehler bei Mitarbeiter(String[]): null-Referenz erhalten");
|
||||||
throw new PersonalException("Fehler bei Mitarbeiter(String[]): null-Referenz erhalten");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------ getter ------------------------
|
// ------------------------------------ getter ------------------------
|
||||||
public String getName()
|
public String getName() {
|
||||||
{
|
return name;
|
||||||
return name;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public char getGesch()
|
public char getGesch() {
|
||||||
{
|
return gesch;
|
||||||
return gesch;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public Year getGebJahr()
|
public Year getGebJahr() {
|
||||||
{
|
return gebJahr;
|
||||||
return gebJahr;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public Year getEintrJahr()
|
public Year getEintrJahr() {
|
||||||
{
|
return eintrJahr;
|
||||||
return eintrJahr;
|
}
|
||||||
}
|
// ------------------------------------ setter ------------------------
|
||||||
//------------------------------------ setter ------------------------
|
|
||||||
|
|
||||||
public void setName(String name) throws PersonalException
|
public void setName(String name) throws PersonalException {
|
||||||
{
|
if (name != null)
|
||||||
if (name != null)
|
if (name.length() >= 2)
|
||||||
if (name.length() >= 2)
|
this.name = name;
|
||||||
this.name = name;
|
else
|
||||||
else
|
throw new PersonalException("Falscher Parameterwert fuer setName(" + name + ") !!!");
|
||||||
throw new PersonalException("Falscher Parameterwert fuer setName("+name+") !!!");
|
else
|
||||||
else
|
throw new PersonalException("null-Referenz fuer setName(String name) !!!");
|
||||||
throw new PersonalException("null-Referenz fuer setName(String name) !!!");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setGesch(char gesch) throws PersonalException
|
public void setGesch(char gesch) throws PersonalException {
|
||||||
{
|
if (gesch == 'm' || gesch == 'M' || gesch == 'w' || gesch == 'W' || gesch == 'x' || gesch == 'X')
|
||||||
if (gesch == 'm' || gesch == 'M' || gesch == 'w' || gesch == 'W' || gesch == 'x' || gesch == 'X' )
|
this.gesch = Character.toLowerCase(gesch); // Character ist "Wrapper"-Klasse von char
|
||||||
this.gesch = Character.toLowerCase(gesch); // Character ist "Wrapper"-Klasse von char
|
else
|
||||||
else
|
throw new PersonalException("Falscher Parameterwert fuer setGesch(" + gesch + ") !!!");
|
||||||
throw new PersonalException("Falscher Parameterwert fuer setGesch(" + gesch + ") !!!");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setGebJahr(Year gebJahr) throws PersonalException
|
public void setGebJahr(Year gebJahr) throws PersonalException {
|
||||||
{
|
// int aktJahr = Year.now().getValue();
|
||||||
//int aktJahr = Year.now().getValue();
|
Year aktYear = Year.now();
|
||||||
Year aktYear = Year.now();
|
if (gebJahr != null)
|
||||||
if (gebJahr != null)
|
// if (gebJahr.getValue() >= aktJahr-100 && gebJahr.getValue() <= aktJahr )
|
||||||
// if (gebJahr.getValue() >= aktJahr-100 && gebJahr.getValue() <= aktJahr )
|
if (!gebJahr.isBefore(aktYear.minusYears(100)) && !gebJahr.isAfter(aktYear))
|
||||||
if ( !gebJahr.isBefore(aktYear.minusYears(100)) && !gebJahr.isAfter(aktYear) )
|
this.gebJahr = gebJahr;
|
||||||
this.gebJahr = gebJahr;
|
else
|
||||||
else
|
throw new PersonalException("Falscher Parameterwert fuer setGebJahr(" + gebJahr + ") !!!");
|
||||||
throw new PersonalException("Falscher Parameterwert fuer setGebJahr("+gebJahr+") !!!");
|
else
|
||||||
else
|
throw new PersonalException("null-Referenz fuer setGebJahr(Year gebJahr) !!!");
|
||||||
throw new PersonalException("null-Referenz fuer setGebJahr(Year gebJahr) !!!");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setEintrJahr(Year eintrJahr) throws PersonalException
|
public void setEintrJahr(Year eintrJahr) throws PersonalException {
|
||||||
{
|
if (eintrJahr != null)
|
||||||
if (eintrJahr != null)
|
if (gebJahr != null) {
|
||||||
if (gebJahr != null)
|
int aktJahr = Year.now().getValue();
|
||||||
{
|
if (eintrJahr.getValue() >= gebJahr.getValue() + 15)
|
||||||
int aktJahr = Year.now().getValue();
|
if (eintrJahr.getValue() <= aktJahr)
|
||||||
if (eintrJahr.getValue() >= gebJahr.getValue()+15)
|
this.eintrJahr = eintrJahr;
|
||||||
if (eintrJahr.getValue() <= aktJahr )
|
else
|
||||||
this.eintrJahr = eintrJahr;
|
throw new PersonalException("Falscher Parameterwert fuer setEintrJahr(" + eintrJahr + ") !!!");
|
||||||
else
|
else
|
||||||
throw new PersonalException("Falscher Parameterwert fuer setEintrJahr("+eintrJahr+") !!!");
|
throw new PersonalException("Fehler bei setEintrJahr(" + eintrJahr + ") -> Person ist zu jung ("
|
||||||
else
|
+ berechneAlter() + ")!!!");
|
||||||
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
|
else
|
||||||
throw new PersonalException("null-Referenz bei gebJahr -> eintrJahr kann nicht geprueft werden !!!");
|
throw new PersonalException("null-Referenz fuer setEintrJahr(Year eintrJahr) !!!");
|
||||||
else
|
}
|
||||||
throw new PersonalException("null-Referenz fuer setEintrJahr(Year eintrJahr) !!!");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Entwicklungsstand TODO
|
private void setAllFields(String[] zeilenTeile) throws PersonalException {
|
||||||
private void setAllFields(String[] zeilenTeile) throws PersonalException {
|
|
||||||
|
|
||||||
// beim Arbeiten mit Array kann es eine
|
// beim Arbeiten mit Array kann es eine
|
||||||
// ArrayIndexOutOfBoundsException geben
|
// ArrayIndexOutOfBoundsException geben
|
||||||
try {
|
try {
|
||||||
//Angestellter;Alfred; m; 1977; 2022
|
// Angestellter;Alfred; m; 1977; 2022
|
||||||
// [0] [1] [2] [3] [4] im Array zeilenTeile
|
// [0] [1] [2] [3] [4] im Array zeilenTeile
|
||||||
setName(zeilenTeile[1].trim()); // trim(): whitespaces "vorne und hinten" entfernen
|
setName(zeilenTeile[1].trim()); // trim(): whitespaces "vorne und hinten" entfernen
|
||||||
setGesch(zeilenTeile[2].trim().charAt(0)); // z.B. "m" -> 'm'
|
setGesch(zeilenTeile[2].trim().charAt(0)); // z.B. "m" -> 'm'
|
||||||
// Integer.parseInt(String)
|
// Integer.parseInt(String)
|
||||||
// throws NumberFormatException bei Integer.parseInt
|
// throws NumberFormatException bei Integer.parseInt
|
||||||
setGebJahr( Year.of(Integer.parseInt(zeilenTeile[3].trim())) ); // "1977"
|
setGebJahr(Year.of(Integer.parseInt(zeilenTeile[3].trim()))); // "1977"
|
||||||
// throws NumberFormatException bei Integer.parseInt
|
// throws NumberFormatException bei Integer.parseInt
|
||||||
setEintrJahr(Year.of(Integer.parseInt(zeilenTeile[4].trim()))); // 2022
|
setEintrJahr(Year.of(Integer.parseInt(zeilenTeile[4].trim()))); // "2022"
|
||||||
}
|
} catch (ArrayIndexOutOfBoundsException e) {
|
||||||
catch(ArrayIndexOutOfBoundsException e)
|
throw new PersonalException("Array-Fehler bei setAllFields(): " + e.getMessage());
|
||||||
{
|
} catch (StringIndexOutOfBoundsException e) {
|
||||||
throw new PersonalException("Array-Fehler bei setAllFields(): "
|
throw new PersonalException(
|
||||||
+ e.getMessage());
|
"Zeichenumwandlungsfehler-Fehler (gesch) bei setAllFields(): " + e.getMessage());
|
||||||
}
|
} catch (NumberFormatException e) {
|
||||||
catch (StringIndexOutOfBoundsException e)
|
throw new PersonalException(
|
||||||
{
|
"Zahlenumwandlungs-Fehler (gebJahr oder eintrJahr) bei setAllFields(): " + e.getMessage());
|
||||||
throw new PersonalException("Zeichenumwandlungsfehler-Fehler (gesch) bei setAllFields(): "
|
} catch (DateTimeException e) // wird von Year.of() moeglicherweise "geworfen"
|
||||||
+ e.getMessage());
|
{
|
||||||
}
|
throw new PersonalException(
|
||||||
catch(NumberFormatException e)
|
"Jahreszahlumwandlungs-Fehler (gebJahr oder eintrJahr) bei setAllFields(): " + e.getMessage());
|
||||||
{
|
}
|
||||||
throw new PersonalException("Zahlenumwandlungs-Fehler (gebJahr oder eintrJahr) bei setAllFields(): "
|
}
|
||||||
+ e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//-------------------------------------- weitere -----------------------
|
|
||||||
public int berechneAlter()
|
|
||||||
{
|
|
||||||
// return 2021 - gebJahr; // ganz schlecht...
|
|
||||||
|
|
||||||
// Bessere Loesung in Einzelschritten:
|
// -------------------------------------- weitere -----------------------
|
||||||
// Year datum = Year.now();
|
public int berechneAlter() {
|
||||||
// int aktJahr = datum.getValue();
|
// return 2021 - gebJahr; // ganz schlecht...
|
||||||
// int alter = aktJahr - gebJahr;
|
|
||||||
// return alter;
|
|
||||||
|
|
||||||
// Bessere Loesung in einem Schritt:
|
// Bessere Loesung in Einzelschritten:
|
||||||
return (gebJahr != null?Year.now().getValue() - gebJahr.getValue():-99); // Fehlercode
|
// Year datum = Year.now();
|
||||||
}
|
// int aktJahr = datum.getValue();
|
||||||
|
// int alter = aktJahr - gebJahr;
|
||||||
|
// return alter;
|
||||||
|
|
||||||
public int berechneDienstalter()
|
// Bessere Loesung in einem Schritt:
|
||||||
{
|
return (gebJahr != null ? Year.now().getValue() - gebJahr.getValue() : -99); // Fehlercode
|
||||||
return (eintrJahr != null?Year.now().getValue() - eintrJahr.getValue():-99); // Fehlercode
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// public float berechneGehalt()
|
public int berechneDienstalter() {
|
||||||
// {
|
return (eintrJahr != null ? Year.now().getValue() - eintrJahr.getValue() : -99); // Fehlercode
|
||||||
// return 1500f + 50f*berechneDienstalter();
|
}
|
||||||
// }
|
|
||||||
|
// public float berechneGehalt()
|
||||||
|
// {
|
||||||
|
// return 1500f + 50f*berechneDienstalter();
|
||||||
|
// }
|
||||||
|
|
||||||
// public float berechneGehalt() // zum UMSTELLEN und TESTEN
|
// public float berechneGehalt() // zum UMSTELLEN und TESTEN
|
||||||
// {
|
// {
|
||||||
// return 0f;
|
// return 0f;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public abstract float berechneGehalt(); // alle Subklassen
|
public abstract float berechneGehalt(); // alle Subklassen
|
||||||
// MUESSEN diese Methode implementieren
|
// MUESSEN diese Methode implementieren
|
||||||
// Ausnahme: diese Subklasse ist auch abstrakt
|
// Ausnahme: diese Subklasse ist auch abstrakt
|
||||||
|
|
||||||
// public abstract int berechneUrlaubsanspruch() // Beispiel fuer einen
|
// public abstract int berechneUrlaubsanspruch() // Beispiel fuer einen
|
||||||
// Anwendungsfall einer abstrakten Methode
|
// Anwendungsfall einer abstrakten Methode
|
||||||
// ;
|
// ;
|
||||||
|
|
||||||
// --------------------------------- compareTo -----------------------------
|
// --------------------------------- compareTo -----------------------------
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(Mitarbeiter o) { // "natuerliche" Reihenfolge von Gehalt
|
public int compareTo(Mitarbeiter o) { // "natuerliche" Reihenfolge von Gehalt
|
||||||
if (o != null)
|
if (o != null) {
|
||||||
{
|
|
||||||
if (berechneGehalt() > o.berechneGehalt())
|
if (berechneGehalt() > o.berechneGehalt())
|
||||||
return 1;
|
return 1;
|
||||||
|
else if (berechneGehalt() < o.berechneGehalt())
|
||||||
|
return -1;
|
||||||
else
|
else
|
||||||
if (berechneGehalt() < o.berechneGehalt())
|
return 0;
|
||||||
return -1;
|
} else // Annahme bis zum ExceptionHandling, dann NullPointerException
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else // Annahme bis zum ExceptionHandling, dann NullPointerException
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------- innere Klasse --------------------------------
|
// ----------------------------------- innere Klasse
|
||||||
|
// --------------------------------
|
||||||
|
|
||||||
public static class AlterComparator implements Comparator<Mitarbeiter> {
|
public static class AlterComparator implements Comparator<Mitarbeiter> {
|
||||||
|
|
||||||
@ -237,51 +220,69 @@ public abstract class Mitarbeiter implements Comparable <Mitarbeiter>, Serializa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------ toString() / print --------------------------------------
|
// ------------------------------------- equals / hashCode
|
||||||
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";
|
|
||||||
|
|
||||||
}
|
@Override
|
||||||
return "Name: " + name+
|
public int hashCode() {
|
||||||
", Gesch.: " + geschlecht+
|
return Objects.hash(eintrJahr, gebJahr, gesch, name);
|
||||||
", 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()
|
@Override
|
||||||
{
|
public boolean equals(Object obj) {
|
||||||
System.out.println(this); //System.out.println(toString())
|
if (this == obj)
|
||||||
}
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
Mitarbeiter other = (Mitarbeiter) obj;
|
||||||
|
return Objects.equals(eintrJahr, other.eintrJahr) && Objects.equals(gebJahr, other.gebJahr)
|
||||||
|
&& gesch == other.gesch && Objects.equals(name, other.name);
|
||||||
|
}
|
||||||
|
|
||||||
public String toStringCsv()
|
// ------------------------------------ toString() / print
|
||||||
{
|
// --------------------------------------
|
||||||
char sep = ';'; // "Trennzeichen" zwischen den Attribut-Werten
|
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";
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
}
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
sb.append(getClass().getSimpleName()).append(sep); // Typ bzw. Klassenbezeichnung
|
public void print() {
|
||||||
sb.append(name).append(sep); // name
|
System.out.println(this); // System.out.println(toString())
|
||||||
sb.append(gesch).append(sep); // gesch
|
}
|
||||||
sb.append(gebJahr).append(sep); // gebJahr
|
|
||||||
sb.append(eintrJahr); // .append(sep); // eintrJahr
|
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());
|
||||||
|
}
|
||||||
|
|
||||||
return (sb.toString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ import java.util.Collections;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
// 2022-04-01 4BAIF
|
// 2022-04-05 4BAIF
|
||||||
|
|
||||||
// Umgestellt auf ArrayList
|
// Umgestellt auf ArrayList
|
||||||
// mit public float berechneDurchnittsalter()
|
// mit public float berechneDurchnittsalter()
|
||||||
@ -51,7 +51,10 @@ import java.util.List;
|
|||||||
|
|
||||||
// 2022-03-29 exportMitarbeiterCsv
|
// 2022-03-29 exportMitarbeiterCsv
|
||||||
|
|
||||||
// 2022-04-01 importMitarbeiterCsc Vorbereitung
|
// 2022-04-01 importMitarbeiterCsc() fuer Angestellte
|
||||||
|
// 2022-04-05 importMitarbeiterCsc fuer Freelancer und Arzt
|
||||||
|
|
||||||
|
// 2022-01-07 doppeltes aufnehmen verhindern, equals, hashcode (Old and new)
|
||||||
|
|
||||||
public class Personalbuero {
|
public class Personalbuero {
|
||||||
private ArrayList<Mitarbeiter> mitarbeiter; // eine ArrayList ist "getypt"
|
private ArrayList<Mitarbeiter> mitarbeiter; // eine ArrayList ist "getypt"
|
||||||
@ -77,7 +80,11 @@ public class Personalbuero {
|
|||||||
// if (anzahl < mitarbeiter.length)
|
// if (anzahl < mitarbeiter.length)
|
||||||
// {
|
// {
|
||||||
// mitarbeiter[anzahl] = ma;
|
// mitarbeiter[anzahl] = ma;
|
||||||
return mitarbeiter.add(ma); // liefert immer true
|
if (!mitarbeiter.contains(ma)) {
|
||||||
|
return mitarbeiter.add(ma); // liefert immer true
|
||||||
|
} else {
|
||||||
|
throw new PersonalException("Fehler bei aufnehmen(): Mitarbeiter/in schon vorhanden");
|
||||||
|
}
|
||||||
// anzahl ++;
|
// anzahl ++;
|
||||||
// return true;
|
// return true;
|
||||||
// }
|
// }
|
||||||
@ -317,8 +324,8 @@ public class Personalbuero {
|
|||||||
public void saveMitarbeiter() throws PersonalException {
|
public void saveMitarbeiter() throws PersonalException {
|
||||||
|
|
||||||
String fSep = System.getProperty("file.separator");
|
String fSep = System.getProperty("file.separator");
|
||||||
// String strPfadName = "c:\\scratch\\mitarbeiter.ser";
|
//String strPfadName = "c:\\scratch\\mitarbeiter.ser";
|
||||||
String strPfadName = "c:" + fSep + "scratch" + fSep + "mitarbeiter.ser";
|
String strPfadName = "c:"+ fSep + "scratch" + fSep + "mitarbeiter.ser";
|
||||||
|
|
||||||
try ( // try with ressources -> close() erfolgt "automatisch"
|
try ( // try with ressources -> close() erfolgt "automatisch"
|
||||||
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(strPfadName));) {
|
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(strPfadName));) {
|
||||||
@ -333,21 +340,27 @@ public class Personalbuero {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// loadMitarbeiter Variante 2 OHNE suppressWarning -> empfohlen
|
// loadMitarbeiter Variante 2 OHNE suppressWarning -> empfohlen
|
||||||
public void loadMitarbeiter() throws PersonalException {
|
public void loadMitarbeiter() throws PersonalException
|
||||||
|
{
|
||||||
|
|
||||||
String fSep = System.getProperty("file.separator");
|
String fSep = System.getProperty("file.separator");
|
||||||
// String strPfadName = "c:\\scratch\\mitarbeiter.ser";
|
//String strPfadName = "c:\\scratch\\mitarbeiter.ser";
|
||||||
String strPfadName = "c:" + fSep + "scratch" + fSep + "mitarbeiter.ser";
|
String strPfadName = "c:"+ fSep + "scratch" + fSep + "mitarbeiter.ser";
|
||||||
|
|
||||||
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(strPfadName))) {
|
|
||||||
|
|
||||||
List<?> tempMitarbeiter = (List<?>) ois.readObject();
|
try ( ObjectInputStream ois =
|
||||||
|
new ObjectInputStream(new FileInputStream(strPfadName)))
|
||||||
|
{
|
||||||
|
|
||||||
|
List <?> tempMitarbeiter = (List <?>) ois.readObject();
|
||||||
|
|
||||||
mitarbeiter.clear(); // ersetzen und NICHT hinzufuegen
|
mitarbeiter.clear(); // ersetzen und NICHT hinzufuegen
|
||||||
|
|
||||||
for (Object o : tempMitarbeiter) {
|
for (Object o : tempMitarbeiter)
|
||||||
if (o instanceof Mitarbeiter) {
|
{
|
||||||
aufnehmen((Mitarbeiter) o);
|
if (o instanceof Mitarbeiter)
|
||||||
|
{
|
||||||
|
aufnehmen((Mitarbeiter)o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,44 +394,53 @@ public class Personalbuero {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public void exportMitarbeiter() throws PersonalException {
|
public void exportMitarbeiter() throws PersonalException
|
||||||
|
{
|
||||||
|
|
||||||
String fSep = System.getProperty("file.separator");
|
String fSep = System.getProperty("file.separator");
|
||||||
String strPfadName = "c:" + fSep + "scratch" + fSep + "mitarbeiter.txt";
|
String strPfadName = "c:"+ fSep + "scratch" + fSep + "mitarbeiter.txt";
|
||||||
String nLn = System.getProperty("line.separator");
|
String nLn = System.getProperty("line.separator");
|
||||||
|
|
||||||
try (BufferedWriter bw = new BufferedWriter(new FileWriter(strPfadName))) {
|
try ( BufferedWriter bw = new BufferedWriter(new FileWriter(strPfadName)))
|
||||||
for (Mitarbeiter mit : mitarbeiter) {
|
{
|
||||||
// bw.write(mit.toString() + "\n");
|
for (Mitarbeiter mit : mitarbeiter)
|
||||||
|
{
|
||||||
|
//bw.write(mit.toString() + "\n");
|
||||||
bw.write(mit.toString() + nLn); // mit Line-Separator
|
bw.write(mit.toString() + nLn); // mit Line-Separator
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new PersonalException("Eingabe/Ausgabe-Fehler bei exportMitarbeiter()" + e.getMessage());
|
throw new PersonalException("Eingabe/Ausgabe-Fehler bei exportMitarbeiter()"
|
||||||
|
+ e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void exportMitarbeiterCsv() throws PersonalException {
|
public void exportMitarbeiterCsv() throws PersonalException
|
||||||
|
{
|
||||||
String fSep = System.getProperty("file.separator");
|
String fSep = System.getProperty("file.separator");
|
||||||
String strPfadName = "c:" + fSep + "scratch" + fSep + "mitarbeiter.csv";
|
String strPfadName = "c:"+ fSep + "scratch" + fSep + "mitarbeiter.csv";
|
||||||
String nLn = System.getProperty("line.separator");
|
String nLn = System.getProperty("line.separator");
|
||||||
|
|
||||||
try (BufferedWriter bw = new BufferedWriter(new FileWriter(strPfadName))) {
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter(strPfadName)))
|
||||||
|
{
|
||||||
StringBuilder sb = new StringBuilder(100000);
|
StringBuilder sb = new StringBuilder(100000);
|
||||||
for (Mitarbeiter mit : mitarbeiter)
|
for (Mitarbeiter mit : mitarbeiter)
|
||||||
sb.append(mit.toStringCsv()).append(nLn); // .append("\n");
|
sb.append(mit.toStringCsv()).append(nLn); // .append("\n");
|
||||||
bw.write(sb.toString());
|
bw.write(sb.toString());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new PersonalException("Eingabe/Ausgabe-Fehler bei exportMitarbeiterCsv()" + e.getMessage());
|
throw new PersonalException("Eingabe/Ausgabe-Fehler bei exportMitarbeiterCsv()"
|
||||||
|
+ e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void importMitarbeiterCsv() throws PersonalException // TODO
|
// NEU 2022-04-06 mit Freelancer und Arzt
|
||||||
|
public void importMitarbeiterCsv() throws PersonalException
|
||||||
{
|
{
|
||||||
String fSep = System.getProperty("file.separator");
|
String fSep = System.getProperty("file.separator");
|
||||||
String strPfadName = "c:" + fSep + "scratch" + fSep + "mitarbeiter.csv";
|
String strPfadName = "c:"+fSep+"scratch"+fSep+"mitarbeiter.csv";
|
||||||
|
|
||||||
try (BufferedReader br = new BufferedReader(new FileReader(strPfadName))) {
|
try(BufferedReader br = new BufferedReader(new FileReader(strPfadName)))
|
||||||
|
{
|
||||||
String zeile;
|
String zeile;
|
||||||
String[] zeilenTeile;
|
String[] zeilenTeile;
|
||||||
String sep = ";"; // erwartetes Trennzeichen in der csv-Datei
|
String sep = ";"; // erwartetes Trennzeichen in der csv-Datei
|
||||||
@ -426,26 +448,39 @@ public class Personalbuero {
|
|||||||
// Muster: "Vorauslesen"
|
// Muster: "Vorauslesen"
|
||||||
zeile = br.readLine(); // wenn keine Zeile gefunden, dann return null
|
zeile = br.readLine(); // wenn keine Zeile gefunden, dann return null
|
||||||
|
|
||||||
while (zeile != null) {
|
while(zeile != null)
|
||||||
|
{
|
||||||
zeilenTeile = zeile.trim().split(sep);
|
zeilenTeile = zeile.trim().split(sep);
|
||||||
|
|
||||||
// Welcher Konstruktor wird aufgerufen?
|
// Welcher Konstruktor wird aufgerufen?
|
||||||
// Wie ermitteln wir den Mitarbeiter-Typ?
|
// Wie ermitteln wir den Mitarbeiter-Typ?
|
||||||
|
|
||||||
if (zeile.contains("Angestellter")) {
|
if (zeile.contains("Angestellter"))
|
||||||
|
{
|
||||||
aufnehmen(new Angestellter(zeilenTeile));
|
aufnehmen(new Angestellter(zeilenTeile));
|
||||||
} else
|
}
|
||||||
; // if ((zeile.contains("Freelancer"))
|
else
|
||||||
// else
|
if (zeile.contains("Freelancer"))
|
||||||
// if ((zeile.contains("Arzt"))
|
{
|
||||||
// else unbekannter Mitarbeiter-Typ
|
aufnehmen(new Freelancer(zeilenTeile));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (zeile.contains("Arzt"))
|
||||||
|
{
|
||||||
|
aufnehmen(new Arzt(zeilenTeile));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
; // hier Mitarbeiter-Typ(en)
|
||||||
|
// zukuenftiger Erweiterungen ergaenzen
|
||||||
zeile = br.readLine();
|
zeile = br.readLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
throw new PersonalException("Datei-Fehler bei importMitarbeiterCsv(): " + e.getMessage());
|
throw new PersonalException("Datei-Fehler bei importMitarbeiterCsv(): "
|
||||||
|
+ e.getMessage());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new PersonalException("Eingabe/Ausgabe-Fehler bei importMitarbeiterCsv(): " + e.getMessage());
|
throw new PersonalException("Eingabe/Ausgabe-Fehler bei importMitarbeiterCsv(): "
|
||||||
|
+ e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ import model.Freelancer;
|
|||||||
import model.PersonalException;
|
import model.PersonalException;
|
||||||
import model.Personalbuero;
|
import model.Personalbuero;
|
||||||
|
|
||||||
// 2022-04-01
|
// 2022-04-05
|
||||||
|
|
||||||
public class TestImport
|
public class TestImport
|
||||||
{
|
{
|
||||||
@ -22,7 +22,8 @@ public class TestImport
|
|||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
// zeilenTeile-Konstruktoren testen
|
// zeilenTeile-Konstruktoren testen
|
||||||
// TODO Freelancer
|
// TODO FUE Freelancer
|
||||||
|
// TODO FUE Arzt
|
||||||
|
|
||||||
// pb.aufnehmen(new Angestellter(new String[] {})); // Array-Fehler: Index 1 out of bounds for length 0
|
// 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[] {"", "", "", "",""})); // Fehler: falscher Parameterwert name
|
||||||
@ -34,14 +35,13 @@ public class TestImport
|
|||||||
System.out.println(pb); // Hans, Hannes
|
System.out.println(pb); // Hans, Hannes
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
// System.out.println("TODO: Personalbuero.importMitarbeiterCsv() ist noch zu implementieren!!!"); // TODO
|
|
||||||
pb.importMitarbeiterCsv();
|
pb.importMitarbeiterCsv();
|
||||||
System.out.println(pb); // Hans, Hannes, Alfred, Anna, Wolfgang
|
System.out.println(pb); // Hans, Hannes, Alfred, Anna, Wolfgang
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Freelancer f2 = new Freelancer("Anna", 'w', Year.of(1976), Year.of(2002), 100f, 10);
|
Freelancer f2 = new Freelancer("Anna", 'w', Year.of(1976), Year.of(2002), 100f, 10);
|
||||||
pb.aufnehmen(f2); // Fehler schon vorhanden
|
pb.aufnehmen(f2); // Fehler schon vorhanden // TODO kein Fehler
|
||||||
}
|
}
|
||||||
catch (PersonalException e) {
|
catch (PersonalException e) {
|
||||||
System.out.println("!!! Fehler bei TestImport !!!" +nLn+ e.getMessage());
|
System.out.println("!!! Fehler bei TestImport !!!" +nLn+ e.getMessage());
|
||||||
@ -52,13 +52,15 @@ public class TestImport
|
|||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
Angestellter a1 = new Angestellter("Alfred", 'm', Year.of(1977), Year.now());
|
Angestellter a1 = new Angestellter("Alfred", 'm', Year.of(1977), Year.now());
|
||||||
pb.aufnehmen(a1); // Fehler schon vorhanden
|
pb.aufnehmen(a1); // Fehler schon vorhanden // TODO kein Fehler
|
||||||
|
|
||||||
|
System.out.println(pb); // Hans, Hannes, Alfred, Anna, Wolfgang
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (PersonalException e)
|
catch (PersonalException e)
|
||||||
{
|
{
|
||||||
System.out.println("!!! Fehler bei TestImport !!!" +nLn+ e.getMessage());
|
System.out.println("!!! Fehler bei TestImport !!!" +nLn+ e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ public class TestPersonalbueroMain {
|
|||||||
Freelancer f2 = new Freelancer("Anna", 'w', Year.of(1976), Year.of(2002), 100f, 10); // 1000
|
Freelancer f2 = new Freelancer("Anna", 'w', Year.of(1976), Year.of(2002), 100f, 10); // 1000
|
||||||
pb.aufnehmen(f2);
|
pb.aufnehmen(f2);
|
||||||
|
|
||||||
System.out.println(pb); // Alfred / Anna
|
System.out.println(pb); // Alfred / Anna
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
pb.exportMitarbeiter();
|
pb.exportMitarbeiter();
|
||||||
|
Loading…
Reference in New Issue
Block a user