⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsqltype.java

📁 derby database source code.good for you.
💻 JAVA
字号:
/*   Derby - Class org.apache.derby.iapi.types.JSQLType   Copyright 1999, 2004 The Apache Software Foundation or its licensors, as applicable.   Licensed under the Apache License, Version 2.0 (the "License");   you may not use this file except in compliance with the License.   You may obtain a copy of the License at      http://www.apache.org/licenses/LICENSE-2.0   Unless required by applicable law or agreed to in writing, software   distributed under the License is distributed on an "AS IS" BASIS,   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   See the License for the specific language governing permissions and   limitations under the License. */package org.apache.derby.iapi.types;import org.apache.derby.iapi.services.io.StoredFormatIds;import org.apache.derby.iapi.services.io.Formatable;import java.io.IOException;import java.io.ObjectInput;import java.io.ObjectOutput;/** *	Type descriptor which wraps all 3 kinds of types supported in Cloudscape's *	JSQL language: SQL types, Java primitives, Java classes. * *	This interface was originally added to support the serializing of WorkUnit *	signatures. * * * @author Rick */public final class JSQLType implements Formatable{	///////////////////////////////////////////////////////////////////////	//	//	CONSTANTS	//	///////////////////////////////////////////////////////////////////////	public	static	final	byte	SQLTYPE			=	0;	public	static	final	byte	JAVA_CLASS		=	1;	public	static	final	byte	JAVA_PRIMITIVE	=	2;	public	static	final	byte	NOT_PRIMITIVE	=	-1;	public	static	final	byte	BOOLEAN			=	0;	public	static	final	byte	CHAR			=	1;	public	static	final	byte	BYTE			=	2;	public	static	final	byte	SHORT			=	3;	public	static	final	byte	INT				=	4;	public	static	final	byte	LONG			=	5;	public	static	final	byte	FLOAT			=	6;	public	static	final	byte	DOUBLE			=	7;	// these two arrays are in the order of the primitive constants	static	private	final	String[]	wrapperClassNames =	{		"java.lang.Boolean",		"java.lang.Integer",	// we can't serialize char, so we convert it to int		"java.lang.Integer",		"java.lang.Integer",		"java.lang.Integer",		"java.lang.Long",		"java.lang.Float",		"java.lang.Double"	};	static	public	final	String[]	primitiveNames =	{		"boolean",		"char",		"byte",		"short",		"int",		"long",		"float",		"double"	};	// here are the fields we serialize	private	byte				category = JAVA_PRIMITIVE;	private	DataTypeDescriptor	sqlType;	private	String				javaClassName;	private	byte				primitiveKind;	///////////////////////////////////////////////////////////////////////	//	//	CONSTRUCTORS	//	///////////////////////////////////////////////////////////////////////	/**	  *	Public 0-arg constructor for Formatable machinery.	  */    public	JSQLType() { initialize( INT ); }	/**	  *	Create a JSQLType from a SQL type.	  *	  *	@param	sqlType	the SQL type to wrap	  */	public	JSQLType	(		DataTypeDescriptor	sqlType    )	{ initialize( sqlType ); }	/**	  *	Create a JSQLType given the name of a Java primitive or java class.	  *	  *	@param	javaName	name of java primitive or class to wrap	  */	public	JSQLType	(		String	javaName    )	{		byte	primitiveID = getPrimitiveID( javaName );		if ( primitiveID != NOT_PRIMITIVE ) { initialize( primitiveID ); }		else { initialize( javaName ); }	}	/**	  *	Create a JSQLType for a Java primitive.	  *	  *	@param	primitiveKind	primitive to wrap	  */	public	JSQLType	(		byte	primitiveKind    )	{ initialize( primitiveKind ); }	/**	  *	What kind of type is this:	  *	  *	@return	one of the following: SQLTYPE, JAVA_PRIMITIVE, JAVA_CLASS	  */    public	byte	getCategory() { return category; }	/**	  *	If this is a JAVA_PRIMITIVE, what is its name?	  *	  *	@return	BOOLEAN, INT, ... if this is a JAVA_PRIMITIVE.	  *				NOT_PRIMITIVE if this is SQLTYPE or JAVA_CLASS.	  */    public	byte	getPrimitiveKind() { return primitiveKind; }	/**	  *	If this is a JAVA_CLASS, what is it's name?	  *	  *	@return	java class name if this is a JAVA_CLASS	  *				null if this is SQLTYPE or JAVA_PRIMITIVE	  */    public	String	getJavaClassName() { return javaClassName; }	/**	  *	What's our SQLTYPE?	  *	  *	@return	the DataTypeDescriptor corresponding to this type	  *	  */	public	DataTypeDescriptor	getSQLType	(    )	{		// might not be filled in if this is a JAVA_CLASS or JAVA_PRIMITIVE		if ( sqlType == null )		{			String	className;			if ( category == JAVA_CLASS )			{				className = javaClassName;			}			else			{				className = getWrapperClassName( primitiveKind );			}			sqlType = DataTypeDescriptor.getSQLDataTypeDescriptor( className );		}		return sqlType;	}	///////////////////////////////////////////////////////////////////////	//	//	Formatable BEHAVIOR	//	///////////////////////////////////////////////////////////////////////	/**	 * Get the formatID which corresponds to this class.	 *	 *	@return	the formatID of this class	 */	public	int	getTypeFormatId()	{ return StoredFormatIds.JSQLTYPEIMPL_ID; }	/**	  @see java.io.Externalizable#readExternal	  @exception IOException thrown on error	  @exception ClassNotFoundException	thrown on error	  */	public void readExternal( ObjectInput in )		 throws IOException, ClassNotFoundException	{		byte	frozenCategory = in.readByte();		switch ( frozenCategory )		{		    case SQLTYPE:				initialize( (DataTypeDescriptor) in.readObject() );				break;		    case JAVA_CLASS:				initialize( (String) in.readObject() );				break;		    case JAVA_PRIMITIVE:				initialize( in.readByte() );				break;		}	}	/**	  @exception IOException thrown on error	  */	public void writeExternal( ObjectOutput out )		 throws IOException	{		out.writeByte( category );		switch ( category )		{		    case SQLTYPE:				out.writeObject( sqlType );				break;		    case JAVA_CLASS:				out.writeObject( javaClassName );				break;		    case JAVA_PRIMITIVE:				out.writeByte( primitiveKind );				break;		}	}	///////////////////////////////////////////////////////////////////////	//	//	INITIALIZATION MINIONS	//	///////////////////////////////////////////////////////////////////////	private	void	initialize( byte primitiveKind )	{ initialize( JAVA_PRIMITIVE, null, null, primitiveKind ); }	private	void	initialize( DataTypeDescriptor sqlType )	{ initialize( SQLTYPE, sqlType, null, NOT_PRIMITIVE ); }	private	void	initialize( String javaClassName )	{ initialize( JAVA_CLASS, null, javaClassName, NOT_PRIMITIVE ); }	/**	  *	Initialize this JSQL type. Minion of all constructors.	  *	  *	@param	category		SQLTYPE, JAVA_CLASS, JAVA_PRIMITIVE	  *	@param	sqlType			corresponding SQL type if category=SQLTYPE	  *	@param	javaClassName	corresponding java class if category=JAVA_CLASS	  *	@param	primitiveKind	kind of primitive if category=JAVA_PRIMITIVE	  */	private	void	initialize	(		byte				category,		DataTypeDescriptor	sqlType,		String				javaClassName,		byte				primitiveKind    )	{		this.category = category;		this.sqlType = sqlType;		this.javaClassName = javaClassName;		this.primitiveKind = primitiveKind;	}	 	///////////////////////////////////////////////////////////////////////	//	//	GENERAL MINIONS	//	///////////////////////////////////////////////////////////////////////	/**	  *	Gets the name of the java wrapper class corresponding to a primitive.	  *	  *	@param	BOOLEAN, INT, ... etc.	  *	  *	@return	name of the java wrapper class corresponding to the primitive	  */	private	static String	getWrapperClassName	(		byte	primitive    )	{		if ( primitive == NOT_PRIMITIVE ) { return ""; }		return wrapperClassNames[ primitive ];	}	/**	  *	Translate the name of a java primitive to an id	  *	  *	@param	name	name of primitive	  *	  *	@return	BOOLEAN, INT, ... etc if the name is that of a primitive.	  *			NOT_PRIMITIVE otherwise	  */	private	static byte	getPrimitiveID	(		String	name    )	{		for ( byte ictr = BOOLEAN; ictr <= DOUBLE; ictr++ )		{			if ( primitiveNames[ ictr ].equals( name ) ) { return ictr; }		}		return	NOT_PRIMITIVE;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -