blob: cd8e0411a843f7851dd50807c4314a0f9360a718 [file] [log] [blame]
/*
* Copyright (c) 2016, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
package org.eclipse.persistence.testing.models.jpa22.jta;
/**
* {@link Animal} entity modification event.
*/
public class AnimalEvent {
/** Event type. */
public static enum Type {
CREATE,
UPDATE,
DELETE
}
/**
* Build {@link Animal} entity create event.
* @param animal new {@link Animal} entity that was created
* @return {@link Animal} entity create event
*/
public static AnimalEvent create(final Animal animal) {
return new AnimalEvent(null, animal, Type.CREATE);
}
/**
* Build {@link Animal} entity update event.
* @param oldValue {@link Animal} entity before update
* @param newValue {@link Animal} entity after update
* @return {@link Animal} entity update event
*/
public static AnimalEvent update(final Animal oldValue, final Animal newValue) {
return new AnimalEvent(oldValue, newValue, Type.UPDATE);
}
/**
* Build {@link Animal} entity delete event.
* @param animal {@link Animal} entity that was deleted
* @return {@link Animal} entity delete event
*/
public static AnimalEvent delete(final Animal animal) {
return new AnimalEvent(animal, null, Type.DELETE);
}
/** {@link Animal} entity old value ({@code UPDATE} and {@code DELETE}) events. */
private final Animal oldValue;
/** {@link Animal} entity new value ({@code CREATE} and {@code UPDATE}) events. */
private final Animal newValue;
/** {@link Animal} entity modification type. */
private final Type type;
/**
* Creates an instance of {@link Animal} entity modification event.
*
* @param oldValue {@link Animal} entity old value ({@code UPDATE} and {@code DELETE}) events
* @param newValue {@link Animal} entity new value ({@code CREATE} and {@code UPDATE}) events
* @param type {@link Animal} entity modification type
*/
private AnimalEvent(final Animal oldValue, final Animal newValue, final Type type) {
this.oldValue = oldValue;
this.newValue = newValue;
this.type = type;
}
/**
* Get {@link Animal} entity old value for {@code UPDATE} and {@code DELETE} events.
*
* @return {@link Animal} entity old value
*/
public Animal getOld() {
return oldValue;
}
/**
* Get {@link Animal} entity new value for {@code CREATE} and {@code UPDATE} events.
*
* @return {@link Animal} entity new value
*/
public Animal getNew() {
return newValue;
}
/**
* Get {@link Animal} entity modification type.
*
* @return {@link Animal} entity modification type
*/
public Type getType() {
return type;
}
}