/* * Created on 26.6.2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package com.idega.data; /** * Title: PrimaryKeyDefinition * Description: * Copyright: Copyright (c) 2003 * Company: idega Software * @author 2003 - idega team - <br><a href="mailto:gummi@idega.is">Gudmundur Agust Saemundsson</a><br> * @version 1.0 */ public class PrimaryKeyDefinition implements IDOPrimaryKeyDefinition { private IDOEntityField[] _fields = new IDOEntityField[0]; private Class _primaryKeyClass = Integer.class; private GenericEntityDefinition _entityDefinition; /** * */ public PrimaryKeyDefinition(GenericEntityDefinition def) { super(); this.setDeclaredEntity(def); } public void addFieldEntity(IDOEntityField field) { if (!containsEquivalentField(field)) { int length = this._fields.length; IDOEntityField[] tempArray = new IDOEntityField[length + 1]; System.arraycopy(this._fields, 0, tempArray, 0, length); tempArray[length] = field; this._fields = tempArray; } else { //System.err.println(getDeclaredEntity().getUniqueEntityName() + ": PrimaryKeyDefinition already contains equivalent field \"" + field.getSQLFieldName() + "\""); } } protected boolean containsEquivalentField(IDOEntityField field) { for (int i = 0; i < this._fields.length; i++) { if (this._fields[i].getSQLFieldName().equals(field.getSQLFieldName())) { return true; } } return false; } /* (non-Javadoc) * @see com.idega.data.IDOPrimaryKeyDefinition#getFields() */ public IDOEntityField[] getFields() { return this._fields; } /* (non-Javadoc) * @see com.idega.data.IDOPrimaryKeyDefinition#isComposite() */ public boolean isComposite() { return (this._fields.length>1); } /* (non-Javadoc) * @see com.idega.data.IDOPrimaryKeyDefinition#getPrimaryKeyClass() */ public Class getPrimaryKeyClass() { return this._primaryKeyClass; } public Class setPrimaryKeyClass(Class pkClass) { return this._primaryKeyClass=pkClass; } public void setDeclaredEntity(GenericEntityDefinition definition) { this._entityDefinition=definition; } public IDOEntityDefinition getDeclaredEntity() { return this._entityDefinition; } /* (non-Javadoc) * @see com.idega.data.IDOPrimaryKeyDefinition#getField() */ public IDOEntityField getField() throws IDOCompositePrimaryKeyException { if(!isComposite()){ try { return getFields()[0]; } catch (ArrayIndexOutOfBoundsException e) { System.err.println("PrimaryKey has not been defined"); throw e; } } else { throw new IDOCompositePrimaryKeyException(); } } }