org.hibernate.boot.model.source.internal.hbm.PluralAttributeElementSourceBasicImpl Maven / Gradle / Ivy
/*
* 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.source.internal.hbm;
import java.util.List;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmBasicCollectionElementType;
import org.hibernate.boot.model.source.spi.AttributePath;
import org.hibernate.boot.model.source.spi.PluralAttributeElementNature;
import org.hibernate.boot.model.source.spi.PluralAttributeElementSourceBasic;
import org.hibernate.boot.model.source.spi.PluralAttributeSource;
import org.hibernate.boot.model.source.spi.RelationalValueSource;
import org.hibernate.boot.model.source.spi.RelationalValueSourceContainer;
import org.hibernate.boot.model.source.spi.SizeSource;
import org.hibernate.boot.spi.MetadataBuildingContext;
/**
* @author Steve Ebersole
*/
public class PluralAttributeElementSourceBasicImpl
extends AbstractHbmSourceNode
implements PluralAttributeElementSourceBasic, RelationalValueSourceContainer {
private final PluralAttributeSource pluralAttributeSource;
private final HibernateTypeSourceImpl typeSource;
private final List valueSources;
public PluralAttributeElementSourceBasicImpl(
MappingDocument sourceMappingDocument,
PluralAttributeSource pluralAttributeSource,
final JaxbHbmBasicCollectionElementType jaxbElement) {
super( sourceMappingDocument );
this.pluralAttributeSource = pluralAttributeSource;
this.typeSource = new HibernateTypeSourceImpl( jaxbElement );
this.valueSources = RelationalValueSourceHelper.buildValueSources(
sourceMappingDocument(),
null,
new RelationalValueSourceHelper.AbstractColumnsAndFormulasSource() {
@Override
public XmlElementMetadata getSourceType() {
return XmlElementMetadata.ELEMENT;
}
@Override
public String getSourceName() {
return null;
}
@Override
public String getColumnAttribute() {
return jaxbElement.getColumnAttribute();
}
@Override
public String getFormulaAttribute() {
return jaxbElement.getFormulaAttribute();
}
@Override
public List getColumnOrFormulaElements() {
return jaxbElement.getColumnOrFormula();
}
@Override
public Boolean isNullable() {
return !jaxbElement.isNotNull();
}
@Override
public boolean isUnique() {
return jaxbElement.isUnique();
}
@Override
public SizeSource getSizeSource() {
return Helper.interpretSizeSource(
jaxbElement.getLength(),
jaxbElement.getScale(),
jaxbElement.getPrecision()
);
}
}
);
}
@Override
public PluralAttributeElementNature getNature() {
return PluralAttributeElementNature.BASIC;
}
@Override
public List getRelationalValueSources() {
return valueSources;
}
@Override
public boolean areValuesIncludedInInsertByDefault() {
return true;
}
@Override
public boolean areValuesIncludedInUpdateByDefault() {
return true;
}
@Override
public boolean areValuesNullableByDefault() {
return true;
}
@Override
public HibernateTypeSourceImpl getExplicitHibernateTypeSource() {
return typeSource;
}
@Override
public AttributePath getAttributePath() {
return pluralAttributeSource.getAttributePath();
}
@Override
public boolean isCollectionElement() {
return true;
}
@Override
public MetadataBuildingContext getBuildingContext() {
return metadataBuildingContext();
}
}