Java tutorial
// Schueler.java // // Licensed under the AGPL - http://www.gnu.org/licenses/agpl-3.0.txt // (c) SZE-Development-Team package net.sf.sze.model.stammdaten; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.Map; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import net.sf.oval.constraint.Past; import net.sf.sze.model.base.RevisionModel; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.CompareToBuilder; import de.ppi.fuwesta.oval.validation.LaterThan; import de.ppi.fuwesta.spring.mvc.formatter.NonEmpty; /** * Ein Schler einer Schule. * */ @Entity @Table(name = "schueler") public class Schueler extends RevisionModel implements Serializable, Comparable<Schueler> { /** The name. */ @Column(nullable = false, length = 40) @NonEmpty private String name; /** The vorname. */ @Column(nullable = false, length = 40) @NonEmpty private String vorname; /** The rufname. */ @Column(length = 20) private String rufname; /** The geburtstag. */ @Column(nullable = false) @Past private Date geburtstag; /** The geburtsort. */ @Column(nullable = false, length = 40) @NonEmpty private String geburtsort; /** The nummer. */ private Long nummer; /** The aufnahme datum. */ @LaterThan("geburtstag") private Date aufnahmeDatum; /** The abgangs datum. */ @LaterThan("aufnahmeDatum") private Date abgangsDatum; /** The geschlecht. */ @Column(nullable = false, length = 1) private Character geschlecht; // bi-directional many-to-one association to Klasse /** The klasse. */ @ManyToOne(optional = false) @JoinColumn(name = "klasse_id", nullable = false) private Klasse klasse; /** * Gets the abgangs datum. * * @return the abgangs datum */ public Date getAbgangsDatum() { return this.abgangsDatum; } /** * Sets the abgangs datum. * * @param abgangsDatum the new abgangs datum */ public void setAbgangsDatum(final Date abgangsDatum) { this.abgangsDatum = abgangsDatum; } /** * Gets the aufnahme datum. * * @return the aufnahme datum */ public Date getAufnahmeDatum() { return this.aufnahmeDatum; } /** * Sets the aufnahme datum. * * @param aufnahmeDatum the new aufnahme datum */ public void setAufnahmeDatum(final Date aufnahmeDatum) { this.aufnahmeDatum = aufnahmeDatum; } /** * Gets the geburtsort. * * @return the geburtsort */ public String getGeburtsort() { return this.geburtsort; } /** * Sets the geburtsort. * * @param geburtsort the new geburtsort */ public void setGeburtsort(final String geburtsort) { this.geburtsort = geburtsort; } /** * Gets the geburtstag. * * @return the geburtstag */ public Date getGeburtstag() { return this.geburtstag; } /** * Sets the geburtstag. * * @param geburtstag the new geburtstag */ public void setGeburtstag(final java.util.Date geburtstag) { this.geburtstag = geburtstag; } /** * Gets the geschlecht. * * @return the geschlecht */ public Geschlecht getGeschlecht() { return Geschlecht.getType(this.geschlecht); } /** * Sets the geschlecht. * * @param geschlecht the new geschlecht */ public void setGeschlecht(final Geschlecht geschlecht) { this.geschlecht = geschlecht.getId(); } /** * Gets the name. * * @return the name */ public String getName() { return this.name; } /** * Sets the name. * * @param name the new name */ public void setName(final String name) { this.name = name; } /** * Gets the nummer. * * @return the nummer */ public Long getNummer() { return this.nummer; } /** * Sets the nummer. * * @param nummer the new nummer */ public void setNummer(final Long nummer) { this.nummer = nummer; } /** * Gets the rufname. * * @return the rufname */ public String getRufname() { return this.rufname; } /** * Sets the rufname. * * @param rufname the new rufname */ public void setRufname(final String rufname) { this.rufname = rufname; } /** * Gets the vorname. * * @return the vorname */ public String getVorname() { return this.vorname; } /** * Sets the vorname. * * @param vorname the new vorname */ public void setVorname(final String vorname) { this.vorname = vorname; } /** * Gets the klasse. * * @return the klasse */ public Klasse getKlasse() { return this.klasse; } /** * Sets the klasse. * * @param klasse the new klasse */ public void setKlasse(final Klasse klasse) { this.klasse = klasse; } // Hier beginnen die echten Methoden /** * Kennzeichen ob der Schler noch aktuell an der Schule ist. * @return true, wenn er noch in der Schule ist. */ public boolean isActive() { return (abgangsDatum == null) || (abgangsDatum.getTime() > System.currentTimeMillis()); } /** * Liefert falls vorhanden den Rufnamen, sonst den Vornamen. * @return falls vorhanden den Rufnamen, sonst den Vornamen. */ public String getRufnameOrVorname() { return StringUtils.isBlank(rufname) ? vorname : rufname; } @Override public String toString() { return name + ", " + getRufnameOrVorname(); } @Override public int compareTo(final Schueler other) { final CompareToBuilder compareBuilder = new CompareToBuilder(); compareBuilder.append(this.getKlasse(), other.getKlasse()); compareBuilder.append(this.getName(), other.getName()); compareBuilder.append(this.getVorname(), other.getVorname()); compareBuilder.append(this.getGeburtstag(), other.getGeburtstag()); compareBuilder.append(this.getGeburtsort(), other.getGeburtsort()); compareBuilder.append(this.getNummer(), other.getNummer()); compareBuilder.append(this.getAufnahmeDatum(), other.getAufnahmeDatum()); compareBuilder.append(this.getAbgangsDatum(), other.getAbgangsDatum()); return compareBuilder.toComparison(); } /** * Schreibt die Daten in die Printmap. * @param printMap die Printmap. */ public void toPrintMap(final Map<String, Object> printMap) { printMap.put("schueler_name", name); printMap.put("schueler_vorname", vorname); printMap.put("schueler_geburtsort", geburtsort); printMap.put("schueler_nummer", nummer); final SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY); printMap.put("schueler_geburtstag", formatter.format(geburtstag)); printMap.put("schueler_aufnahmeDatum", aufnahmeDatum == null ? null : formatter.format(aufnahmeDatum)); printMap.put("schueler_abgangsDatum", abgangsDatum == null ? null : formatter.format(abgangsDatum)); } }