📄 joincolumn.java
字号:
/*
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations under
* the License.
*
* The Original Code is jRelationalFramework.
*
* The Initial Developer of the Original Code is is.com.
* Portions created by is.com are Copyright (C) 2000 is.com.
* All Rights Reserved.
*
* Contributor(s): Jonathan Carlson (joncrlsn@users.sf.net)
* Contributor(s): ____________________________________
*
* Alternatively, the contents of this file may be used under the terms of
* the GNU General Public License (the "GPL") or the GNU Lesser General
* Public license (the "LGPL"), in which case the provisions of the GPL or
* LGPL are applicable instead of those above. If you wish to allow use of
* your version of this file only under the terms of either the GPL or LGPL
* and not to allow others to use your version of this file under the MPL,
* indicate your decision by deleting the provisions above and replace them
* with the notice and other provisions required by either the GPL or LGPL
* License. If you do not delete the provisions above, a recipient may use
* your version of this file under either the MPL or GPL or LGPL License.
*
*/
package com.is.jrf;
import com.is.util.sql.JDBCHelper;
import java.sql.SQLException;
import java.util.StringTokenizer;
/**
* Subclasses of this class represent columns from another table that we
* want included in our PersistentObject. These are not columns that are
* used in the actual join (ie. "Table1.Col1 = Table2.Col1") between tables.
* <p>
* The column alias is important since the real column name may match one in
* the main table.
*/
public abstract class JoinColumn
{
protected String i_columnName = null;
protected String i_columnAlias = null;
protected String i_setter = null;
/* =============== Static Variables =============== */
protected static Class s_class = String.class;
/* =============== Constructors =============== */
public JoinColumn()
{
super();
}
/**
* Construct a JoinColumnInstance that is ready to be used.
*
* @param columnName a value of type 'String' - can include alias like
* this: "Name PersonName"
* @param setter a value of type 'String'
*/
public JoinColumn(
String columnName,
String setter)
{
this.setColumnName(columnName);
i_setter = setter;
}
/**
* Construct a JoinColumn instance that is ready to be used.
*
* @param columnName a value of type 'String'
* @param columnAlias a value of type 'String' - This can be important if
* the main table has a matching column name.
* @param setter a value of type 'String'
*/
public JoinColumn(
String columnName,
String columnAlias,
String setter)
{
i_columnName = columnName;
i_columnAlias = columnAlias;
i_setter = setter;
}
/**
* This is usually overridden by subclasses to explicitly specify the type
* of object to be retrieved from the result set in JDBCHelper.
*
* @param helper a value of type 'JDBCHelper'
* @return a value of type 'Object'
* @exception SQLException if an error occurs
*/
public Object getColumnValueFrom(JDBCHelper helper)
throws SQLException
{
return helper.getObject(i_columnAlias);
}
public abstract Class getColumnClass();
public String getColumnName()
{
return i_columnName;
}
public void setColumnName(String name)
{
StringTokenizer st = new StringTokenizer(name, " ");
if (st.hasMoreTokens())
{
i_columnName = st.nextToken();
}
else
{
throw new ConfigurationException("Invalid table name in " + this);
}
if (st.hasMoreTokens())
{
i_columnAlias = st.nextToken();
}
else
{
i_columnAlias = i_columnName;
}
} // setColumnName(aString)
public String getColumnAlias()
{
return i_columnAlias;
}
public void setColumnAlias(String alias)
{
i_columnAlias = alias;
}
public String getSetter()
{
return i_setter;
}
public void setSetter(String setter)
{
i_setter = setter;
}
/**
* Copy the value of my column to the appropriate attribute for this
* persistent object.
*
* @param helper a value of type 'JDBCHelper'
* @param aPO a value of type 'PersistentObject'
* @exception SQLException if an error occurs
*/
public void copyColumnValueToPersistentObject(JDBCHelper helper,
PersistentObject aPO)
throws SQLException
{
if (i_setter != null &&
i_setter.length() > 0)
{
Object value = this.getColumnValueFrom(helper);
this.setValueTo(value, aPO);
}
}
private void setValueTo(Object aValue,
PersistentObject aPO)
{
AbstractColumnSpec.setValueTo(aValue,
aPO,
this.getSetter(),
this.getColumnClass());
}
protected void buildSelectColumnString(StringBuffer sqlBuffer,
String tableAlias)
{
sqlBuffer.append(tableAlias);
sqlBuffer.append(".");
sqlBuffer.append(i_columnName);
if (!i_columnName.equals(i_columnAlias))
{
sqlBuffer.append(" AS ");
sqlBuffer.append(i_columnAlias);
}
}
} // JoinColumn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -