package org.castor.jpa.scenario.callbacks;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.persistence.*;
@Entity
@Table(name = "Callbacks_person")
public class Person {
private static final Log LOG = LogFactory.getLog(Person.class);
private long id;
private String name;
@Id
public long getId() {
return id;
}
public void setId(final long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
@PostLoad
protected void testPostLoadCallbackHooking() {
LOG.debug(String.format("Hello from `PostLoad`. My name is %s.",
this.name));
}
@PrePersist
protected void validateCreation() {
if (this.name.equals("Max Mustermann")) {
LOG.debug("Hello from a person.");
throw new PersistenceException(String.format(
"Person mustn't be called %s.", this.name));
}
}
@PostPersist
protected void validatePersistence() {
if (this.name.equals("Manfred Mustermann")) {
throw new PersistenceException(String.format(
"Person shouldn't be called %s either.", this.name));
}
}
@PreRemove
protected void validateRemoval() {
if (this.name.equals("Max Musterfrau")) {
throw new PersistenceException(this.name + " mustn't be removed.");
}
}
@PostRemove
protected void validateDeletion() {
if (this.name.equals("Manfred Musterfrau")) {
throw new PersistenceException(this.name
+ " shouldn't be removed either.");
}
}
@PreUpdate
protected void validateModification() {
if (this.name.equals("Max Musterfrau")) {
throw new PersistenceException(String.format(
"Person mustn't be renamed to %s.", this.name));
}
}
@PostUpdate
protected void validateUpdating() {
if (this.name.equals("Hans Wurst")) {
throw new PersistenceException(String.format(
"Person shouldn't be renamed to %s either.", this.name));
}
}
}