org.hibernate.boot.model.source.internal.hbm.PluralAttributeMapKeySourceEmbeddedImpl 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.Collections;
import java.util.List;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmCompositeIndexType;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmMapKeyCompositeType;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmTuplizerType;
import org.hibernate.boot.model.source.spi.AttributePath;
import org.hibernate.boot.model.source.spi.AttributeRole;
import org.hibernate.boot.model.source.spi.EmbeddableMapping;
import org.hibernate.boot.model.source.spi.EmbeddableSource;
import org.hibernate.boot.model.source.spi.HibernateTypeSource;
import org.hibernate.boot.model.source.spi.NaturalIdMutability;
import org.hibernate.boot.model.source.spi.PluralAttributeIndexNature;
import org.hibernate.boot.model.source.spi.PluralAttributeMapKeySourceEmbedded;
import org.hibernate.boot.model.source.spi.ToolingHintContext;
/**
* @author Gail Badner
*/
public class PluralAttributeMapKeySourceEmbeddedImpl
extends AbstractHbmSourceNode
implements PluralAttributeMapKeySourceEmbedded {
private final EmbeddableSourceImpl embeddableSource;
public PluralAttributeMapKeySourceEmbeddedImpl(
MappingDocument mappingDocument,
AbstractPluralAttributeSourceImpl pluralAttributeSource,
final JaxbHbmCompositeIndexType jaxbCompositeIndexElement) {
this(
mappingDocument,
pluralAttributeSource,
new EmbeddableMapping() {
@Override
public String getClazz() {
return jaxbCompositeIndexElement.getClazz();
}
@Override
public List getTuplizer() {
return Collections.emptyList();
}
@Override
public String getParent() {
return null;
}
},
jaxbCompositeIndexElement.getAttributes()
);
}
public PluralAttributeMapKeySourceEmbeddedImpl(
MappingDocument mappingDocument,
AbstractPluralAttributeSourceImpl pluralAttributeSource,
final JaxbHbmMapKeyCompositeType jaxbCompositeMapKey) {
this(
mappingDocument,
pluralAttributeSource,
new EmbeddableMapping() {
@Override
public String getClazz() {
return jaxbCompositeMapKey.getClazz();
}
@Override
public List getTuplizer() {
return Collections.emptyList();
}
@Override
public String getParent() {
return null;
}
},
jaxbCompositeMapKey.getAttributes()
);
}
private PluralAttributeMapKeySourceEmbeddedImpl(
MappingDocument mappingDocument,
final AbstractPluralAttributeSourceImpl pluralAttributeSource,
EmbeddableMapping jaxbEmbeddable,
List attributeMappings) {
super( mappingDocument );
this.embeddableSource = new EmbeddableSourceImpl(
mappingDocument,
new EmbeddableSourceContainer() {
@Override
public AttributeRole getAttributeRoleBase() {
return pluralAttributeSource.getAttributeRole().append( "key" );
}
@Override
public AttributePath getAttributePathBase() {
return pluralAttributeSource.getAttributePath().append( "key" );
}
@Override
public ToolingHintContext getToolingHintContextBaselineForEmbeddable() {
return pluralAttributeSource.getToolingHintContext();
}
},
jaxbEmbeddable,
attributeMappings,
false,
false,
null,
NaturalIdMutability.NOT_NATURAL_ID
);
}
@Override
public PluralAttributeIndexNature getNature() {
return PluralAttributeIndexNature.AGGREGATE;
}
@Override
public EmbeddableSource getEmbeddableSource() {
return embeddableSource;
}
@Override
public HibernateTypeSource getTypeInformation() {
return null;
}
@Override
public String getXmlNodeName() {
return null;
}
}