|
CustomerDomain.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 videoStore;
import com.is.jrf.AbstractDomain;
import com.is.jrf.ColumnSpec;
import com.is.jrf.DatabasePolicy;
import com.is.jrf.IntegerColumnSpec;
import com.is.jrf.TimestampColumnSpec;
import com.is.jrf.IntegerJoinColumn;
import com.is.jrf.JoinTable;
import com.is.jrf.OracleDatabasePolicy;
import com.is.jrf.OuterJoinTable;
import com.is.jrf.PersistentObject;
import com.is.jrf.StringColumnSpec;
import com.is.jrf.StringJoinColumn;
import com.is.jrf.SelectSQLBuilder;
import com.is.util.sql.JDBCHelper;
import java.util.List;
import java.util.Iterator;
public class CustomerDomain
extends AbstractDomain
{
public CustomerDomain()
{
super();
}
public CustomerDomain(int option)
{
super(option);
}
protected void setup()
{
this.setTableName("Customer Cust");
this.setJDBCHelperPoolName("example");
this.setValidateBeforeSaving(true); // true is the default.
this.setReturnSavedObject(true); // true is the default.
// Column Specs
this.addColumnSpec(
new IntegerColumnSpec(
"Id", // Column Name
"getId",
"setId",
DEFAULT_TO_NULL,
SEQUENCED_PRIMARY_KEY));
this.addColumnSpec(
new StringColumnSpec(
"Name",
"getName",
"setName",
DEFAULT_TO_NULL,
REQUIRED,
UNIQUE));
this.addColumnSpec(
new TimestampColumnSpec(
"Last_Updated",
"getLastUpdated",
"setLastUpdated",
DEFAULT_TO_NOW,
OPTIMISTIC_LOCK));
// Join Table(s)
JoinTable joinTable =
new OuterJoinTable(
"Customer_Phone Phone",
"Id", // Customer columns
"Customer_Id,Type='Home'"); // CustomerPhone columns
joinTable.addJoinColumn(
new StringJoinColumn(
"Phone_Number", // Column Name
"HomePhone", // Alias in case of column name conflict
"setHomePhone")); // Setter method name
this.addJoinTable(joinTable);
} // setup()
public PersistentObject newPersistentObject()
{
return new Customer();
}
/**
* Custom SQL for doing a specialized search.
*
* @param s a value of type 'String'
* @return a value of type 'List'
*/
public List findNameLike(String s)
{
return this.findWhere(this.getTableAlias() + ".Name LIKE '%" + s + "%'");
}
/**
* This method is executed for all found objects. This uses the
* CustomerPhoneDomain to add the CustomerPhone objects to this Customer.
*
* @param customer a value of type 'Customer'
*/
protected void postFind(PersistentObject aPO,
JDBCHelper aJDBCHelper)
{
Customer customer = (Customer) aPO;
List phones = new CustomerPhoneDomain().findForCustomer(customer);
customer.setPhoneNumbers(phones);
List videos = new VideoDomain(NO_POST_FIND).findForCustomer(customer);
customer.setVideos(videos);
}
/**
* This method finds all Customer objects that have a given Video signed
* out. This is a join that is used only for limiting the Customers we
* return.
*
* @param video a value of type 'Video'
* @return a value of type 'List'
*/
public List findForVideo (Video video)
{
SelectSQLBuilder builder = this.getSelectSQLBuilder();
// Add a temporary join table
builder.addJoinTable(
new JoinTable(
"Rental R",
"Id", // Customer column(s)
"Customer_Id")); // Rental column(s)
builder.setWhere("R.Video_Id = " + video.getId());
return this.find(builder);
}
}
|
CustomerDomain.java |
|