package org.hibernate.metamodel.binding;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.MappingException;
import org.hibernate.engine.spi.CascadeStyle;
import org.hibernate.engine.spi.CascadeStyles;
public enum CascadeType {
ALL,
ALL_DELETE_ORPHAN,
UPDATE,
PERSIST,
MERGE,
LOCK,
REFRESH,
REPLICATE,
EVICT,
DELETE,
DELETE_ORPHAN,
NONE;
private static final Map<String, CascadeType> hbmOptionToCascadeType = new HashMap<String, CascadeType>();
static {
hbmOptionToCascadeType.put( "all", ALL );
hbmOptionToCascadeType.put( "all-delete-orphan", ALL_DELETE_ORPHAN );
hbmOptionToCascadeType.put( "save-update", UPDATE );
hbmOptionToCascadeType.put( "persist", PERSIST );
hbmOptionToCascadeType.put( "merge", MERGE );
hbmOptionToCascadeType.put( "lock", LOCK );
hbmOptionToCascadeType.put( "refresh", REFRESH );
hbmOptionToCascadeType.put( "replicate", REPLICATE );
hbmOptionToCascadeType.put( "evict", EVICT );
hbmOptionToCascadeType.put( "delete", DELETE );
hbmOptionToCascadeType.put( "remove", DELETE );
hbmOptionToCascadeType.put( "delete-orphan", DELETE_ORPHAN );
hbmOptionToCascadeType.put( "none", NONE );
}
private static final Map<javax.persistence.CascadeType, CascadeType> jpaCascadeTypeToHibernateCascadeType = new HashMap<javax.persistence.CascadeType, CascadeType>();
static {
jpaCascadeTypeToHibernateCascadeType.put( javax.persistence.CascadeType.ALL, ALL );
jpaCascadeTypeToHibernateCascadeType.put( javax.persistence.CascadeType.PERSIST, PERSIST );
jpaCascadeTypeToHibernateCascadeType.put( javax.persistence.CascadeType.MERGE, MERGE );
jpaCascadeTypeToHibernateCascadeType.put( javax.persistence.CascadeType.REFRESH, REFRESH );
jpaCascadeTypeToHibernateCascadeType.put( javax.persistence.CascadeType.DETACH, EVICT );
}
private static final Map<CascadeType, CascadeStyle> cascadeTypeToCascadeStyle = new HashMap<CascadeType, CascadeStyle>();
static {
cascadeTypeToCascadeStyle.put( ALL, CascadeStyles.ALL );
cascadeTypeToCascadeStyle.put( ALL_DELETE_ORPHAN, CascadeStyles.ALL_DELETE_ORPHAN );
cascadeTypeToCascadeStyle.put( UPDATE, CascadeStyles.UPDATE );
cascadeTypeToCascadeStyle.put( PERSIST, CascadeStyles.PERSIST );
cascadeTypeToCascadeStyle.put( MERGE, CascadeStyles.MERGE );
cascadeTypeToCascadeStyle.put( LOCK, CascadeStyles.LOCK );
cascadeTypeToCascadeStyle.put( REFRESH, CascadeStyles.REFRESH );
cascadeTypeToCascadeStyle.put( REPLICATE, CascadeStyles.REPLICATE );
cascadeTypeToCascadeStyle.put( EVICT, CascadeStyles.EVICT );
cascadeTypeToCascadeStyle.put( DELETE, CascadeStyles.DELETE );
cascadeTypeToCascadeStyle.put( DELETE_ORPHAN, CascadeStyles.DELETE_ORPHAN );
cascadeTypeToCascadeStyle.put( NONE, CascadeStyles.NONE );
}
public static CascadeType getCascadeType(String hbmOptionName) {
return hbmOptionToCascadeType.get( hbmOptionName );
}
public static CascadeType getCascadeType(javax.persistence.CascadeType jpaCascade) {
return jpaCascadeTypeToHibernateCascadeType.get( jpaCascade );
}
public CascadeStyle toCascadeStyle() {
CascadeStyle cascadeStyle = cascadeTypeToCascadeStyle.get( this );
if ( cascadeStyle == null ) {
throw new MappingException( "No CascadeStyle that corresponds with CascadeType=" + this.name() );
}
return cascadeStyle;
}
}