package fr.openwide.core.jpa.business.generic.model.migration;
import java.io.Serializable;
import org.hibernate.engine.spi.SessionImplementor;
import fr.openwide.core.jpa.hibernate.dialect.PostgreSQLSequenceStyleGenerator;
/**
* Sequence generator used to define the new id from the id used in an old application.
*
* <pre>
* {@code
* @Id
* @GeneratedValue(generator = "Ticket_id")
* @GenericGenerator(name = "Ticket_id", strategy = MigratedFromOldApplicationSequenceGenerator.CLASS_NAME)
* @DocumentId
* private Long id;
* }
* </pre>
*/
public class MigratedFromOldApplicationSequenceGenerator extends PostgreSQLSequenceStyleGenerator {
public static final String CLASS_NAME = "fr.openwide.core.jpa.business.generic.model.migration.MigratedFromOldApplicationSequenceGenerator";
@Override
public Serializable generate(SessionImplementor session, Object obj) {
if (obj instanceof IMigratedFromOldApplicationEntity) {
IMigratedFromOldApplicationEntity<?> migratedEntity = (IMigratedFromOldApplicationEntity<?>) obj;
Serializable oldApplicationId = migratedEntity.getOldApplicationId();
if (oldApplicationId != null) {
migratedEntity.setMigrated(true);
return oldApplicationId;
}
}
return super.generate(session, obj);
}
}