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

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
/** * 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.
Params:
  • precision – numeric precision
  • scale – numeric scale
  • length – type length
  • lobMultiplier – LOB length multiplier
/** * 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; } }