org.hibernate.boot.model.IdentifierGeneratorDefinition Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
Hibernate's core ORM functionality
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.boot.model;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.hibernate.internal.util.collections.CollectionHelper;
/**
* Identifier generator definition, should be immutable.
*
* @author Steve Ebersole
* @author Emmanuel Bernard
* @author Strong Liu
*/
public class IdentifierGeneratorDefinition implements Serializable {
private final String name;
private final String strategy;
private final Map parameters;
public IdentifierGeneratorDefinition(
final String name,
final String strategy,
final Map parameters) {
this.name = name;
this.strategy = strategy;
if ( CollectionHelper.isEmpty( parameters ) ) {
this.parameters = Collections.emptyMap();
}
else {
this.parameters = Collections.unmodifiableMap( parameters );
}
}
public IdentifierGeneratorDefinition(
final String name,
final Map parameters) {
this( name, name, parameters );
}
public IdentifierGeneratorDefinition(String name) {
this( name, name );
}
public IdentifierGeneratorDefinition(String name, String strategy) {
this.name = name;
this.strategy = strategy;
this.parameters = Collections.emptyMap();
}
/**
* @return identifier generator strategy
*/
public String getStrategy() {
return strategy;
}
/**
* @return generator name
*/
public String getName() {
return name;
}
/**
* @return generator configuration parameters
*/
public Map getParameters() {
return parameters;
}
@Override
public boolean equals(Object o) {
if ( this == o ) {
return true;
}
if ( !( o instanceof IdentifierGeneratorDefinition ) ) {
return false;
}
IdentifierGeneratorDefinition that = (IdentifierGeneratorDefinition) o;
if ( name != null ? !name.equals( that.name ) : that.name != null ) {
return false;
}
if ( parameters != null ? !parameters.equals( that.parameters ) : that.parameters != null ) {
return false;
}
if ( strategy != null ? !strategy.equals( that.strategy ) : that.strategy != null ) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + ( strategy != null ? strategy.hashCode() : 0 );
result = 31 * result + ( parameters != null ? parameters.hashCode() : 0 );
return result;
}
@Override
public String toString() {
return "IdentifierGeneratorDefinition{" +
"name='" + name + '\'' +
", strategy='" + strategy + '\'' +
", parameters=" + parameters +
'}';
}
public static class Builder {
private String name;
private String strategy;
private Map parameters;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStrategy() {
return strategy;
}
public void setStrategy(String strategy) {
this.strategy = strategy;
}
public void addParam(String name, String value) {
parameters().put( name, value );
}
private Map parameters() {
if ( parameters == null ) {
parameters = new HashMap();
}
return parameters;
}
public void addParams(Map parameters) {
parameters().putAll( parameters );
}
public IdentifierGeneratorDefinition build() {
return new IdentifierGeneratorDefinition( name, strategy, parameters );
}
}
}