人力资源管理系统 系统把几乎所有与人力资源相关的数据统一管理

源代码在线查看: table.java

软件大小: 23956 K
上传用户: guigong
关键词: 人力资源管理系统 人力资源 数据
下载地址: 免注册下载 普通下载 VIP

相关代码

				//$Id: Table.java,v 1.13.2.15 2004/01/20 14:26:19 oneovthafew Exp $				package net.sf.hibernate.mapping;								import java.util.ArrayList;				import java.util.Iterator;				import java.util.List;				import java.util.Map;				import java.util.HashMap;								import net.sf.hibernate.engine.Mapping;				import net.sf.hibernate.id.IdentityGenerator;				import net.sf.hibernate.dialect.Dialect;				import net.sf.hibernate.dialect.HSQLDialect;				import net.sf.hibernate.HibernateException;				import net.sf.hibernate.tool.hbm2ddl.ColumnMetadata;				import net.sf.hibernate.tool.hbm2ddl.TableMetadata;				import net.sf.hibernate.util.StringHelper;								import org.apache.commons.collections.SequencedHashMap;								/**				 * A relational table				 * @author Gavin King				 */				public class Table implements RelationalModel {										private String name;					private String schema;					private Map columns = new SequencedHashMap();					private SimpleValue idValue;					private PrimaryKey primaryKey;					private Map indexes = new HashMap();					private Map foreignKeys = new HashMap();					private Map uniqueKeys = new HashMap();					private final int uniqueInteger;					private boolean quoted;					private static int tableCounter=0;					private List checkConstraints = new ArrayList();										public Table() {						uniqueInteger = tableCounter++;					}										public String getQualifiedName(Dialect dialect) {						String quotedName = getQuotedName(dialect);						return schema==null ? quotedName : schema + dialect.getSchemaSeperator() + quotedName;					}										public String getQualifiedName(Dialect dialect, String defaultQualifier) {						String quotedName = getQuotedName(dialect);						return schema==null ? 							( defaultQualifier==null ? quotedName : defaultQualifier + dialect.getSchemaSeperator() + quotedName ) : 							getQualifiedName(dialect);					}										public String getName() {						return name;					}					public String getQuotedName(Dialect dialect) {						return quoted ?							dialect.openQuote() + name + dialect.closeQuote() :							name;					}					public void setName(String name) {						if ( name.charAt(0)=='`' ) {							quoted=true;							this.name=name.substring( 1, name.length()-1 );						}						else {							this.name = name;						}					}										public Column getColumn(int n) {						Iterator iter = columns.values().iterator();						for (int i=0; i						return (Column) iter.next();					}					public void addColumn(Column column) {						Column old = (Column) columns.get( column.getName() );						if ( old==null ) {							columns.put( column.getName(), column );							column.uniqueInteger = columns.size();						}						else {							column.uniqueInteger = old.uniqueInteger;						}					}					public int getColumnSpan() {						return columns.size();					}					public Iterator getColumnIterator() {						return columns.values().iterator();					}					public Iterator getIndexIterator() {						return indexes.values().iterator();					}					public Iterator getForeignKeyIterator() {						return foreignKeys.values().iterator();					}					public Iterator getUniqueKeyIterator() {						return uniqueKeys.values().iterator();					}										public Iterator sqlAlterStrings(Dialect dialect, Mapping p, TableMetadata tableInfo) throws HibernateException {												StringBuffer root = new StringBuffer("alter table ")							.append( getQualifiedName(dialect) )							.append(' ')							.append( dialect.getAddColumnString() );												Iterator iter=getColumnIterator();						List results = new ArrayList();						while ( iter.hasNext() ) {							Column col = (Column) iter.next();														ColumnMetadata columnInfo=tableInfo.getColumnMetadata( col.getName() );														if (columnInfo==null) {								// the column doesnt exist at all.								StringBuffer alter = new StringBuffer( root.toString() )									.append(' ')									.append( col.getQuotedName(dialect) )									.append(' ')									.append( col.getSqlType(dialect, p) );								if ( col.isUnique() && dialect.supportsUnique() ) {									alter.append(" unique");								}								if ( col.hasCheckConstraint() ) {									alter.append(" check(")										.append( col.getCheckConstraint() )										.append(")");								}								results.add( alter.toString() );							}													}												return results.iterator();					}										public String sqlCreateString(Dialect dialect, Mapping p) throws HibernateException {						StringBuffer buf = new StringBuffer("create table ")							.append( getQualifiedName(dialect) )							.append(" (");												boolean identityColumn = idValue!=null && idValue.createIdentifierGenerator(dialect) instanceof IdentityGenerator;												// Try to find out the name of the primary key to create it as identity if the IdentityGenerator is used						String pkname = null;						if (primaryKey != null && identityColumn ) {							pkname = ( (Column) primaryKey.getColumnIterator().next() ).getQuotedName(dialect);						}												Iterator iter = getColumnIterator();						while ( iter.hasNext() ) {							Column col = (Column) iter.next();														buf.append( col.getQuotedName(dialect) )								.append(' ');														if ( identityColumn && col.getQuotedName(dialect).equals(pkname) ) {								// to support dialects that have their own identity data type								if ( dialect.hasDataTypeInIdentityColumn() ) {									buf.append( col.getSqlType(dialect, p) );								}								buf.append(' ').append( dialect.getIdentityColumnString() );							}							else {								buf.append( col.getSqlType(dialect, p) );								if ( col.isNullable() ) {									buf.append( dialect.getNullColumnString() );								}								else {									buf.append(" not null" );								}							}														if ( col.isUnique() ) {								if ( dialect.supportsUnique() ) {									buf.append(" unique");								}								else {									UniqueKey uk = getUniqueKey( col.getQuotedName(dialect) + '_' );									uk.addColumn(col);								}							}							if ( col.hasCheckConstraint() && dialect.supportsCheck() ) {								buf.append(" check(")									.append( col.getCheckConstraint() )									.append(")");							}							if ( iter.hasNext() ) buf.append(StringHelper.COMMA_SPACE);													}						if (primaryKey!=null) {							if ( dialect instanceof HSQLDialect && identityColumn ) {								// skip the primary key definition								// ugly, ugly hack!							}							else {								buf.append(',').append( primaryKey.sqlConstraintString(dialect) );							}						}												Iterator ukiter = getUniqueKeyIterator();						while ( ukiter.hasNext() ) {							UniqueKey uk = (UniqueKey) ukiter.next();							buf.append(StringHelper.COMMA_SPACE).append( uk.sqlConstraintString(dialect) );						}												/*Iterator idxiter = getIndexIterator();						while ( idxiter.hasNext() ) {							Index idx = (Index) idxiter.next();							buf.append(',').append( idx.sqlConstraintString(dialect) );						}*/												if ( dialect.supportsCheck() ) {							Iterator chiter = checkConstraints.iterator();							while ( chiter.hasNext() ) {								buf.append(", check(").append( chiter.next() ).append(StringHelper.CLOSE_PAREN);							}						}												buf.append(StringHelper.CLOSE_PAREN);												return buf.toString();					}										public String sqlDropString(Dialect dialect) {						StringBuffer buf = new StringBuffer("drop table ");						if ( dialect.supportsIfExistsBeforeTableName() ) buf.append("if exists ");						buf.append( getQualifiedName(dialect) )							.append( dialect.getCascadeConstraintsString() );						if ( dialect.supportsIfExistsAfterTableName() ) buf.append(" if exists");						return buf.toString();					}										public PrimaryKey getPrimaryKey() {						return primaryKey;					}										public void setPrimaryKey(PrimaryKey primaryKey) {						this.primaryKey = primaryKey;					}										public Index createIndex(String name, List indexColumns) {						if (name==null) name = "IX" + uniqueColumnString( indexColumns.iterator() );						Index idx = getIndex(name);						idx.addColumns( indexColumns.iterator() );						return idx;					}										public Index getIndex(String indexName) {						Index index = (Index)indexes.get(indexName);												if (index == null) {							index = new Index();							index.setName(indexName);							index.setTable(this);							indexes.put(indexName, index);						}												return index;					}										public UniqueKey createUniqueKey(List keyColumns) {						String keyName = "UK" + uniqueColumnString( keyColumns.iterator() );						UniqueKey uk = getUniqueKey(keyName);						uk.addColumns( keyColumns.iterator() );						return uk;					}										public UniqueKey getUniqueKey(String keyName) {												UniqueKey uk = (UniqueKey) uniqueKeys.get(keyName);												if (uk == null) {							uk = new UniqueKey();							uk.setName(keyName);							uk.setTable(this);							uniqueKeys.put(keyName, uk);						}						return uk;					}										public ForeignKey createForeignKey(String keyName, List keyColumns, Class referencedClass) {												if (keyName==null) keyName = "FK" + uniqueColumnString( keyColumns.iterator() );						ForeignKey fk = (ForeignKey) foreignKeys.get(keyName);												if (fk == null) {							fk = new ForeignKey();							fk.setName(keyName);							fk.setTable(this);							foreignKeys.put(keyName, fk);							fk.setReferencedClass(referencedClass);						}						else {							keyName += Integer.toHexString( referencedClass.getName().hashCode() ).toUpperCase();							if ( fk.getReferencedClass()!=referencedClass ) fk = createForeignKey(keyName, keyColumns, referencedClass);						}						fk.addColumns( keyColumns.iterator() );						return fk;					}										public String uniqueColumnString(Iterator iterator) {						int result = 0;						while ( iterator.hasNext() ) result += iterator.next().hashCode();						return ( Integer.toHexString( name.hashCode() ) + Integer.toHexString(result) ).toUpperCase();					}															public String getSchema() {						return schema;					}										public void setSchema(String schema) {						this.schema = schema;					}										public int getUniqueInteger() {						return uniqueInteger;					}										public void setIdentifierValue(SimpleValue idValue) {						this.idValue = idValue;					}										public boolean isQuoted() {						return quoted;					}									public void setQuoted(boolean quoted) {						this.quoted = quoted;					}										public void addCheckConstraint(String constraint) {						checkConstraints.add(constraint);					}								}																																							

相关资源