All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.boot.model.source.internal.hbm.PluralAttributeMapKeyManyToManySourceImpl Maven / Gradle / Ivy

The newest version!
/*
 * 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.JaxbHbmIndexManyToManyType;
import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmMapKeyManyToManyType;
import org.hibernate.boot.model.source.spi.HibernateTypeSource;
import org.hibernate.boot.model.source.spi.PluralAttributeIndexNature;
import org.hibernate.boot.model.source.spi.PluralAttributeMapKeyManyToManySource;
import org.hibernate.boot.model.source.spi.RelationalValueSource;
import org.hibernate.internal.util.StringHelper;

/**
 * @author Steve Ebersole
 */
public class PluralAttributeMapKeyManyToManySourceImpl
		implements PluralAttributeMapKeyManyToManySource {

	private final String referencedEntityName;
	private final String fkName;

	private final HibernateTypeSource hibernateTypeSource;
	private final List relationalValueSources;

	public PluralAttributeMapKeyManyToManySourceImpl(
			MappingDocument mappingDocument,
			PluralAttributeSourceMapImpl pluralAttributeSourceMap,
			final JaxbHbmMapKeyManyToManyType jaxbMapKeyManyToManyMapping) {
		this.referencedEntityName = StringHelper.isNotEmpty( jaxbMapKeyManyToManyMapping.getEntityName() )
				? jaxbMapKeyManyToManyMapping.getEntityName()
				: mappingDocument.qualifyClassName( jaxbMapKeyManyToManyMapping.getClazz() );
		this.fkName = jaxbMapKeyManyToManyMapping.getForeignKey();

		this.hibernateTypeSource = new HibernateTypeSourceImpl(
				jaxbMapKeyManyToManyMapping.getEntityName()
		);

		this.relationalValueSources = RelationalValueSourceHelper.buildValueSources(
				mappingDocument,
				null,
				new RelationalValueSourceHelper.AbstractColumnsAndFormulasSource() {
					@Override
					public XmlElementMetadata getSourceType() {
						return XmlElementMetadata.MAP_KEY_MANY_TO_MANY;
					}

					@Override
					public String getSourceName() {
						return null;
					}

					@Override
					public String getFormulaAttribute() {
						return jaxbMapKeyManyToManyMapping.getFormulaAttribute();
					}

					@Override
					public String getColumnAttribute() {
						return jaxbMapKeyManyToManyMapping.getColumnAttribute();
					}

					@Override
					public List getColumnOrFormulaElements() {
						return jaxbMapKeyManyToManyMapping.getColumnOrFormula();
					}
				}
		);
	}

	public PluralAttributeMapKeyManyToManySourceImpl(
			MappingDocument mappingDocument,
			PluralAttributeSourceMapImpl pluralAttributeSourceMap,
			final JaxbHbmIndexManyToManyType jaxbIndexManyToManyMapping) {
		this.referencedEntityName = StringHelper.isNotEmpty( jaxbIndexManyToManyMapping.getEntityName() )
				? jaxbIndexManyToManyMapping.getEntityName()
				: mappingDocument.qualifyClassName( jaxbIndexManyToManyMapping.getClazz() );
		this.fkName = jaxbIndexManyToManyMapping.getForeignKey();

		this.hibernateTypeSource = new HibernateTypeSourceImpl(
				jaxbIndexManyToManyMapping.getEntityName()
		);

		this.relationalValueSources = RelationalValueSourceHelper.buildValueSources(
				mappingDocument,
				null,
				new RelationalValueSourceHelper.AbstractColumnsAndFormulasSource() {
					@Override
					public XmlElementMetadata getSourceType() {
						return XmlElementMetadata.INDEX_MANY_TO_MANY;
					}

					@Override
					public String getSourceName() {
						return null;
					}

					@Override
					public String getColumnAttribute() {
						return jaxbIndexManyToManyMapping.getColumnAttribute();
					}

					@Override
					public List getColumnOrFormulaElements() {
						return jaxbIndexManyToManyMapping.getColumn();
					}
				}
		);
	}

	@Override
	public String getReferencedEntityName() {
		return referencedEntityName;
	}

	@Override
	public String getExplicitForeignKeyName() {
		return fkName;
	}

	@Override
	public PluralAttributeIndexNature getNature() {
		return PluralAttributeIndexNature.MANY_TO_MANY;
	}

	@Override
	public HibernateTypeSource getTypeInformation() {
		return hibernateTypeSource;
	}

	@Override
	public String getXmlNodeName() {
		return null;
	}

	@Override
	public Nature getMapKeyNature() {
		return Nature.MANY_TO_MANY;
	}

	@Override
	public boolean isReferencedEntityAttribute() {
		return true;
	}

	@Override
	public List getRelationalValueSources() {
		return relationalValueSources;
	}

	@Override
	public boolean areValuesIncludedInInsertByDefault() {
		return true;
	}

	@Override
	public boolean areValuesIncludedInUpdateByDefault() {
		return true;
	}

	@Override
	public boolean areValuesNullableByDefault() {
		return false;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy