So ich habe die Klasse Patient, davon speichere ich viele Objekte in einer Liste. Da ich nun verhindern möchte das zweimal das gleiche Objekt in der Liste gespeichert wird habe ich für die Klasse Patient eine equals(Object o) Methode geschrieben, damit ich dann vor dem einfügen Testen kann ob es schon vorhanden ist. Leider fügt er mir das eigentlich gleiche Object (Ich parse das aus der Zwischenablage) immer wieder ein. Ich vermute daher das ich die equals Methode in der Klasse Patient nicht ganz korrekt implementiert habe, vor allem, da mir da Netbeans auch noch Vorschläge zu gemacht hat.
Ich weiß das der _ hat eigentlich nix am Variablen Anfang zu suchen hat, hatte mir das mal für Klassenweite Variablen angewöhnt und arbeite gerade daran das wieder abzustellen. Also nicht dran stören.
Der ID Wert in der Klasse Patient wird erst nach dem einfügen in die DB gesetzt, daher muss er für das equals ignoriert werden. (Wird der interne Zähler der DB).
So hoffe ihr könnt mir helfen:
So hier der Code Ausschnitt vom einfügen:
Und hier die Klasse Patient
Ich weiß das der _ hat eigentlich nix am Variablen Anfang zu suchen hat, hatte mir das mal für Klassenweite Variablen angewöhnt und arbeite gerade daran das wieder abzustellen. Also nicht dran stören.
Der ID Wert in der Klasse Patient wird erst nach dem einfügen in die DB gesetzt, daher muss er für das equals ignoriert werden. (Wird der interne Zähler der DB).
So hoffe ihr könnt mir helfen:
So hier der Code Ausschnitt vom einfügen:
Java:
private List<Patient> _patientList;
_patientList = new ArrayList<Patient>();
Patient actualPatient = _KHValues.parsePatientFromHTML(patientFromClipboard);
if (!_patientList.contains(actualPatient)) {
actualPatient.setID(_DBHandler.insertPatient(actualPatient));
_patientList.add(actualPatient);
repaint();
}
Und hier die Klasse Patient
Java:
/**
* @author Brainiac
*/
package de.brainiac.kapihospital.khmanager;
import java.util.Arrays;
public class Patient extends Object {
private int _ID;
private String _patientName;
private int[] _diseases;
private boolean[] _treatedDiseases;
private Double _minPrice, _maxPrice;
public Patient(String name, int[] diseasses, Double minPrice, Double maxPrice) {
_patientName = name;
_diseases = diseasses;
_minPrice = minPrice;
_maxPrice = maxPrice;
_treatedDiseases = new boolean[_diseases.length];
for (boolean b : _treatedDiseases) {
b = false;
}
}
public Patient(int id, String name, int[] diseasses, boolean[] treatedDiseases, Double minPrice, Double maxPrice) {
_ID = id;
_patientName = name;
_diseases = diseasses;
_treatedDiseases = treatedDiseases;
_minPrice = minPrice;
_maxPrice = maxPrice;
}
public int getID() {
return _ID;
}
public void setID(int i) {
_ID = i;
}
public String getName() {
return _patientName;
}
public int[] getDiseases() {
return _diseases;
}
public boolean[] getTreatedDiseases() {
return _treatedDiseases;
}
public int getNumberOfDiseases() {
int numberOfDiseases = 0;
for (boolean b : _treatedDiseases) {
if (!b) {
numberOfDiseases++;
}
}
return numberOfDiseases;
}
public Double getMinPrice() {
return _minPrice;
}
public Double getMaxPrice() {
return _maxPrice;
}
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
} else if (o.getClass() != getClass()) {
return false;
} else if (!((Patient)o).getName().equalsIgnoreCase(_patientName)) {
return false;
} else if (Arrays.equals(((Patient)o).getDiseases(), _diseases)) {
return false;
} else if (((Patient)o).getMinPrice() != _minPrice) {
return false;
} else if (((Patient)o).getMaxPrice() != _maxPrice) {
return false;
} else if (((Patient)o).hashCode() != hashCode()) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 79 * hash + (this._patientName != null ? this._patientName.hashCode() : 0);
hash = 79 * hash + Arrays.hashCode(this._diseases);
hash = 79 * hash + Arrays.hashCode(this._treatedDiseases);
hash = 79 * hash + (this._minPrice != null ? this._minPrice.hashCode() : 0);
hash = 79 * hash + (this._maxPrice != null ? this._maxPrice.hashCode() : 0);
return hash;
}
}