org.hibernate.engine.jdbc.Size.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.engine.jdbc.Size.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.engine.jdbc;

import java.io.Serializable;

/**
 * Models size restrictions/requirements on a column's datatype.
 * <p/>
 * IMPL NOTE: since we do not necessarily know the datatype up front, and therefore do not necessarily know
 * whether length or precision/scale sizing is needed, we simply account for both here.  Additionally LOB
 * definitions, by standard, are allowed a "multiplier" consisting of 'K' (Kb), 'M' (Mb) or 'G' (Gb).
 *
 * @author Steve Ebersole
 */
public class Size implements Serializable {
    public static enum LobMultiplier {
        NONE(1), K(NONE.factor * 1024), M(K.factor * 1024), G(M.factor * 1024);

        private long factor;

        private LobMultiplier(long factor) {
            this.factor = factor;
        }

        public long getFactor() {
            return factor;
        }
    }

    public static final int DEFAULT_LENGTH = 255;
    public static final int DEFAULT_PRECISION = 19;
    public static final int DEFAULT_SCALE = 2;

    private long length = DEFAULT_LENGTH;
    private int precision = DEFAULT_PRECISION;
    private int scale = DEFAULT_SCALE;
    private LobMultiplier lobMultiplier = LobMultiplier.NONE;

    public Size() {
    }

    /**
     * Complete constructor.
     *
     * @param precision numeric precision
     * @param scale numeric scale
     * @param length type length
     * @param lobMultiplier LOB length multiplier
     */
    public Size(int precision, int scale, long length, LobMultiplier lobMultiplier) {
        this.precision = precision;
        this.scale = scale;
        this.length = length;
        this.lobMultiplier = lobMultiplier;
    }

    public static Size precision(int precision) {
        return new Size(precision, -1, -1, null);
    }

    public static Size precision(int precision, int scale) {
        return new Size(precision, scale, -1, null);
    }

    public static Size length(long length) {
        return new Size(-1, -1, length, null);
    }

    public static Size length(long length, LobMultiplier lobMultiplier) {
        return new Size(-1, -1, length, lobMultiplier);
    }

    public int getPrecision() {
        return precision;
    }

    public int getScale() {
        return scale;
    }

    public long getLength() {
        return length;
    }

    public LobMultiplier getLobMultiplier() {
        return lobMultiplier;
    }

    public void initialize(Size size) {
        this.precision = size.precision;
        this.scale = size.scale;
        this.length = size.length;
    }

    public void setPrecision(int precision) {
        this.precision = precision;
    }

    public void setScale(int scale) {
        this.scale = scale;
    }

    public void setLength(long length) {
        this.length = length;
    }

    public void setLobMultiplier(LobMultiplier lobMultiplier) {
        this.lobMultiplier = lobMultiplier;
    }
}