#*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 ${recordPackageName};

#if ($parser.hasBigDecimalField($table))
import java.math.BigDecimal;
#end

#if ($parser.hasDateField($table))
import java.util.Date;
#end

import org.apache.empire.db.DBContext;
import ${basePackageName}.${dbClassName};
import ${recordPackageName}.${baseRecordClassName};
import ${tablePackageName}.$parser.getTableClassName($table.name);

/**
 * Auto-generated class that represents one record (or row) of data from a
 * database table.  One of these is generated for each table or view in the
 * database.  The interface defines getters for auto-generated data (e.g. 
 * primary key, time stamp field for optimistic locking).  It generates both
 * getter and setter method for all other columns in the table, with the 
 * exception of foreign key references.
 *
 * This class provides protected method that subclasses should use to provide
 * access to related records.
 */
public class $parser.getRecordClassName($table.name) extends ${baseRecordClassName}<$contextClassName, $parser.getTableClassName($table.name)> {

	private static final long serialVersionUID = 1L;

	public $parser.getRecordClassName($table.name)(DBContext context) {
		super(context, ${dbClassName}.get().$parser.getTableName($table));
	}
	
#if($createRecordProperties == true)
	// Access methods for all columns
#foreach($col in $table.columns)

	public $parser.getJavaType($col).getSimpleName() $parser.getAccessorName($col)() {
		return ($parser.getJavaType($col).getSimpleName())super.get(T.${parser.getColumnName($col)});
	}
	public void $parser.getMutatorName($col)($parser.getJavaType($col).getSimpleName() val) {
		super.set(T.${parser.getColumnName($col)}, val);
	}
#end
#end


}