org.hibernate.mapping.PrimaryKey.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.mapping.PrimaryKey.java

Source

/*
 * 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.mapping;

import java.util.Iterator;

import org.hibernate.dialect.Dialect;
import org.hibernate.internal.util.StringHelper;

import org.jboss.logging.Logger;

/**
 * A primary key constraint
 *
 * @author Gavin King
 * @author Steve Ebersole
 */
public class PrimaryKey extends Constraint {
    private static final Logger log = Logger.getLogger(PrimaryKey.class);

    public PrimaryKey(Table table) {
        setTable(table);
    }

    @Override
    public void addColumn(Column column) {
        final Iterator<Column> columnIterator = getTable().getColumnIterator();
        while (columnIterator.hasNext()) {
            final Column next = columnIterator.next();
            if (next.getCanonicalName().equals(column.getCanonicalName())) {
                next.setNullable(false);
                log.debugf("Forcing column [%s] to be non-null as it is part of the primary key for table [%s]",
                        column.getCanonicalName(), getTableNameForLogging(column));
            }
        }
        super.addColumn(column);
    }

    protected String getTableNameForLogging(Column column) {
        if (getTable() != null) {
            if (getTable().getNameIdentifier() != null) {
                return getTable().getNameIdentifier().getCanonicalName();
            } else {
                return "<unknown>";
            }
        } else if (column.getValue() != null && column.getValue().getTable() != null) {
            return column.getValue().getTable().getNameIdentifier().getCanonicalName();
        }
        return "<unknown>";
    }

    public String sqlConstraintString(Dialect dialect) {
        StringBuilder buf = new StringBuilder("primary key (");
        Iterator iter = getColumnIterator();
        while (iter.hasNext()) {
            buf.append(((Column) iter.next()).getQuotedName(dialect));
            if (iter.hasNext()) {
                buf.append(", ");
            }
        }
        return buf.append(')').toString();
    }

    public String sqlConstraintString(Dialect dialect, String constraintName, String defaultCatalog,
            String defaultSchema) {
        StringBuilder buf = new StringBuilder(dialect.getAddPrimaryKeyConstraintString(constraintName)).append('(');
        Iterator iter = getColumnIterator();
        while (iter.hasNext()) {
            buf.append(((Column) iter.next()).getQuotedName(dialect));
            if (iter.hasNext()) {
                buf.append(", ");
            }
        }
        return buf.append(')').toString();
    }

    public String generatedConstraintNamePrefix() {
        return "PK_";
    }

    @Override
    public String getExportIdentifier() {
        return StringHelper.qualify(getTable().getExportIdentifier(), "PK-" + getName());
    }
}