com.frameworkset.orm.engine.model.ForeignKey Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bboss-persistent Show documentation
Show all versions of bboss-persistent Show documentation
bboss is a j2ee framework include aop/ioc,mvc,persistent,taglib,rpc,event ,bean-xml serializable and so on.http://www.bbossgroups.com
The newest version!
/*
* Copyright 2008 biaoping.yin
*
* 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 com.frameworkset.orm.engine.model;
/*
*
* 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.
*/
import org.xml.sax.Attributes;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
/**
* A class for information about foreign keys of a table.
*
* @author Fedor
* @author Daniel Rall
* @version $Id: ForeignKey.java,v 1.4 2004/02/22 06:27:19 jmcnally Exp $
*/
public class ForeignKey implements Serializable
{
private String foreignTableName;
private String name;
private String onUpdate;
private String onDelete;
private Table parentTable;
private List localColumns = new ArrayList(3);
private List foreignColumns = new ArrayList(3);
// the uppercase equivalent of the onDelete/onUpdate values in the dtd
private static final String NONE = "NONE";
private static final String SETNULL = "SETNULL";
/**
* Imports foreign key from an XML specification
*
* @param attrib the xml attributes
*/
public void loadFromXML(Attributes attrib)
{
foreignTableName = attrib.getValue("foreignTable");
name = attrib.getValue("name");
onUpdate = attrib.getValue("onUpdate");
onDelete = attrib.getValue("onDelete");
onUpdate = normalizeFKey(onUpdate);
onDelete = normalizeFKey(onDelete);
}
/**
* Normalizes the input of onDelete, onUpdate attributes
*
* @param attrib the attribute to normalize
* @return nomalized form
*/
private String normalizeFKey(String attrib)
{
if (attrib == null)
{
attrib = NONE;
}
attrib = attrib.toUpperCase();
if (attrib.equals(SETNULL))
{
attrib = "SET NULL";
}
return attrib;
}
/**
* Returns whether or not the onUpdate attribute is set
*
* @return true if the onUpdate attribute is set
*/
public boolean hasOnUpdate()
{
return !onUpdate.equals(NONE);
}
/**
* Returns whether or not the onDelete attribute is set
*
* @return true if the onDelete attribute is set
*/
public boolean hasOnDelete()
{
return !onDelete.equals(NONE);
}
/**
* Returns the onUpdate attribute
*
* @return the onUpdate attribute
*/
public String getOnUpdate()
{
return onUpdate;
}
/**
* Returns the onDelete attribute
*
* @return the onDelete attribute
*/
public String getOnDelete()
{
return onDelete;
}
/**
* Sets the onDelete attribute
*
* @param value the onDelete attribute
*/
public void setOnDelete(String value)
{
onDelete = normalizeFKey(value);
}
/**
* Sets the onUpdate attribute
*
* @param value the onUpdate attribute
*/
public void setOnUpdate(String value)
{
onUpdate = normalizeFKey(value);
}
/**
* Returns the name attribute.
*
* @return the name
*/
public String getName()
{
return name;
}
/**
* Sets the name attribute.
*
* @param name the name
*/
public void setName(String name)
{
this.name = name;
}
/**
* Get the foreignTableName of the FK
*
* @return the name of the foreign table
*/
public String getForeignTableName()
{
return foreignTableName;
}
/**
* Set the foreignTableName of the FK
*
* @param tableName the name of the foreign table
*/
public void setForeignTableName(String tableName)
{
foreignTableName = tableName;
}
/**
* Set the parent Table of the foreign key
*
* @param parent the table
*/
public void setTable(Table parent)
{
parentTable = parent;
}
/**
* Get the parent Table of the foreign key
*
* @return the parent table
*/
public Table getTable()
{
return parentTable;
}
/**
* Returns the name of the table the foreign key is in
*
* @return the name of the table
*/
public String getTableName()
{
return parentTable.getName();
}
/**
* Adds a new reference entry to the foreign key
*
* @param attrib the xml attributes
*/
public void addReference(Attributes attrib)
{
addReference(attrib.getValue("local"), attrib.getValue("foreign"));
}
/**
* Adds a new reference entry to the foreign key
*
* @param local name of the local column
* @param foreign name of the foreign column
*/
public void addReference(String local, String foreign)
{
localColumns.add(local);
foreignColumns.add(foreign);
}
/**
* Returns a comma delimited string of local column names
*
* @return the local column names
*/
public String getLocalColumnNames()
{
return Column.makeList(getLocalColumns());
}
/**
* Returns a comma delimited string of foreign column names
*
* @return the foreign column names
*/
public String getForeignColumnNames()
{
return Column.makeList(getForeignColumns());
}
/**
* Returns the list of local column names. You should not edit this List.
*
* @return the local columns
*/
public List getLocalColumns()
{
return localColumns;
}
/**
* Utility method to get local column names to foreign column names
* mapping for this foreign key.
*
* @return table mapping foreign names to local names
*/
public Hashtable getLocalForeignMapping()
{
Hashtable h = new Hashtable();
for (int i = 0; i < localColumns.size(); i++)
{
h.put(localColumns.get(i), foreignColumns.get(i));
}
return h;
}
/**
* Returns the list of foreign column names. You should not edit this List.
*
* @return the foreign columns
*/
public List getForeignColumns()
{
return foreignColumns;
}
/**
* Utility method to get foreign column names to local column names
* mapping for this foreign key.
*
* @return table mapping local names to foreign names
*/
public Hashtable getForeignLocalMapping()
{
Hashtable h = new Hashtable();
for (int i = 0; i < localColumns.size(); i++)
{
h.put(foreignColumns.get(i), localColumns.get(i));
}
return h;
}
/**
* String representation of the foreign key. This is an xml representation.
*
* @return string representation in xml
*/
public String toString()
{
StringBuilder result = new StringBuilder();
result.append(" \n");
for (int i = 0; i < localColumns.size(); i++)
{
result.append(" \n");
}
result.append(" \n");
return result.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy