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

org.hibernate.metamodel.model.domain.internal.TenantDiscriminationImpl Maven / Gradle / Ivy

There is a newer version: 7.0.0.Alpha3
Show 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 http://www.gnu.org/licenses/lgpl-2.1.html
 */
package org.hibernate.metamodel.model.domain.internal;

import org.hibernate.NotYetImplementedFor6Exception;
import org.hibernate.metamodel.model.domain.NavigableRole;
import org.hibernate.metamodel.model.domain.spi.BasicValueMapper;
import org.hibernate.metamodel.model.domain.spi.IdentifiableTypeDescriptor;
import org.hibernate.metamodel.model.domain.spi.NavigableContainer;
import org.hibernate.metamodel.model.domain.spi.TenantDiscrimination;
import org.hibernate.metamodel.model.relational.spi.Column;
import org.hibernate.sql.SqlExpressableType;
import org.hibernate.type.descriptor.java.spi.BasicJavaDescriptor;
import org.hibernate.type.internal.ColumnBasedMapper;
import org.hibernate.type.spi.BasicType;

/**
 * @author Steve Ebersole
 */
public class TenantDiscriminationImpl implements TenantDiscrimination {
	private static final String NAVIGABLE_NAME = "{tenantId}";

	private final IdentifiableTypeDescriptor container;
	private final NavigableRole navigableRole;

	private final Column column;
	private final BasicValueMapper valueMapper;

	private final boolean isShared;
	private final boolean useParameterBinding;

	public TenantDiscriminationImpl(
			IdentifiableTypeDescriptor container,
			Column column,
			boolean isShared,
			boolean useParameterBinding) {
		this.container = container;

		this.column = column;
		this.valueMapper = new ColumnBasedMapper<>( column );

		this.isShared = isShared;
		this.useParameterBinding = useParameterBinding;

		this.navigableRole = container.getNavigableRole().append( NAVIGABLE_NAME );
	}

	@Override
	public NavigableContainer getContainer() {
		return container;
	}

	@Override
	public NavigableRole getNavigableRole() {
		return navigableRole;
	}

	@Override
	public BasicJavaDescriptor getJavaTypeDescriptor() {
		return valueMapper.getDomainJavaDescriptor();
	}

	@Override
	public String asLoggableText() {
		return getNavigableRole().getFullPath();
	}

	@Override
	public Column getBoundColumn() {
		return column;
	}

	@Override
	public BasicValueMapper getValueMapper() {
		return valueMapper;
	}

	@Override
	public SqlExpressableType getSqlExpressableType() {
		return column.getExpressableType();
	}

	public BasicType getBasicType() {
		throw new NotYetImplementedFor6Exception();
	}

	@Override
	public boolean isShared() {
		return isShared;
	}

	@Override
	public boolean isUseParameterBinding() {
		return useParameterBinding;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy