/** * '$RCSfile: ForeignKey.java,v $' * * '$Author: costa $' * '$Date: 2006-10-31 21:00:40 $' * '$Revision: 1.2 $' * * For Details: http://kepler.ecoinformatics.org * * Copyright (c) 2004 The Regents of the University of California. * All rights reserved. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, * UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ package org.ecoinformatics.datamanager.parser; //import org.apache.commons.logging.Log; //import org.apache.commons.logging.LogFactory; /** * This class represents a foreign key constraint in a table. * * @author tao */ public class ForeignKey implements Constraint { /* * Instance fields */ private int type = Constraint.FOREIGNKEY; private String name = null; private String[] keys = null; private String entityReference = null; /*private static Log log; static { log = LogFactory.getLog( "org.kepler.objectmanager.data.db.ForeignKey" ); }*/ /* * Constructors */ /** * Default constructor */ public ForeignKey() { } /* * Instance methods */ /** * Gets the constraint type. * * @return An int indicating the constraint type. */ public int getType() { return type; } /** * Gets the constraint name. * * @return the name value, a string */ public String getName() { return name; } /** * Method to get keys. * * @return String[] of key values */ public String[] getKeys() { return keys; } /** * Method to get the value of the entityReference field. * * @return entityReference, a string representing the name of an entity * referenced by this foreign key constraint */ public String getEntityReference() { return entityReference; } /** * Method to set the name of this constraint. * * @param constraintName the string value to set */ public void setName(String constraintName) { name = constraintName; } /** * Method to set the array of keys. * * @param constraintKeys an array of string values representing the keys to * be set */ public void setKeys(String[] constraintKeys) { keys = constraintKeys; } /** * Method to set the referencedEntity name. * * @param referencedEntity The name of the entity referenced by this foreign * key constraint. */ public void setEntityReference(String referencedEntity) { entityReference = referencedEntity; } /** * Prints out a partial sql command about the foreign key. * In foreign key, you don't need to specify the referenced entity's column * name, the primary key column(s) of the referenced table is used as the * referenced column(s). * * @return a string holding the partial SQL command about the foreign key. */ public String printString() throws UnWellFormedConstraintException { String sql = null; if (name == null || name.trim().equals("")) { throw new UnWellFormedConstraintException("No Constraint name assign " + "to Primary key"); } if (keys == null || keys.length == 0) { throw new UnWellFormedConstraintException("No key is specified in " + "primary key"); } StringBuffer buffer = new StringBuffer(); buffer.append(Constraint.SPACESTRING); buffer.append(Constraint.CONSTRAINT); buffer.append(Constraint.SPACESTRING); buffer.append(name); buffer.append(Constraint.SPACESTRING); buffer.append(Constraint.FOREIGNKEYSTRING); buffer.append(Constraint.SPACESTRING); // add foreign key list buffer.append(Constraint.LEFTPARENTH); // add keys into parenthesis boolean firstKey = true; for (int i = 0; i< keys.length; i++) { String keyName = keys[i]; // if any key is null or empty, we will throw a exception if (keyName == null || keyName.trim().equals("")) { throw new UnWellFormedConstraintException("key name empty or null in " + "foreign key"); } // if this is not the first key, we need add a comma if (!firstKey) { buffer.append(Constraint.COMMA); } buffer.append(keyName); firstKey = false; }//for buffer.append(Constraint.RIGHTPARENTH); buffer.append(Constraint.SPACESTRING); buffer.append(Constraint.REFERENCESTRING); buffer.append(Constraint.SPACESTRING); buffer.append(entityReference); buffer.append(Constraint.SPACESTRING); sql = buffer.toString(); //log.debug("The foreign key part of sql is " + sql); return sql; } }