package com.idega.block.finance.data;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.block.category.data.CategoryEntityBMPBean;
import com.idega.data.IDOException;
import com.idega.data.IDOQuery;
import com.idega.user.data.User;
import com.idega.util.text.Name;
/**
* Title: Description: Copyright: Copyright (c) 2001 Company: idega multimedia
*
* @author <a href="mailto:aron@idega.is">Aron Birkir</a>
* @version 1.0
*/
public class AccountBMPBean extends CategoryEntityBMPBean implements Account,
FinanceAccount {
/*
* "FIN_ACCOUNT_ID" INTEGER NOT NULL, "IC_USER_ID" INTEGER, "FIN_CASHIER_ID"
* INTEGER NOT NULL, "NAME" VARCHAR(255), "LAST_UPDATED" TIMESTAMP,
* "BALANCE" FLOAT, "CREATION_DATE" DATE, "EXTRA_INFO" VARCHAR(4000),
* "VALID" CHAR(1),
*/
public AccountBMPBean() {
super();
}
public AccountBMPBean(int id) throws SQLException {
super(id);
}
public void initializeAttributes() {
addAttribute(getIDColumnName());
addAttribute(getUserIdColumnName(), "User", true, true,
java.lang.Integer.class, "many-to-one",
com.idega.core.user.data.User.class);
addAttribute(getColumnTypeId(), "Account type", true, true,
java.lang.Integer.class, "many-to-one",
com.idega.block.finance.data.AccountType.class);
addAttribute(getCashierIdColumnName(), "Gjaldkeri", true, true,
java.lang.Integer.class, "many-to-one",
com.idega.block.finance.data.Cashier.class);
addAttribute(getNameColumnName(), "Name", true, true,
java.lang.String.class);
addAttribute(getLastUpdatedColumnName(), "Changed", true, true,
java.sql.Timestamp.class);
addAttribute(getBalanceColumnName(), "Balance", true, true,
java.lang.Float.class);
addAttribute(getCreationDateColumnName(), "Created", true, true,
java.sql.Timestamp.class);
addAttribute(getInfoColumnName(), "Info", true, true,
java.lang.String.class);
addAttribute(getValidColumnName(), "Valid", true, true,
java.lang.Boolean.class);
addAttribute(getTypeColumnName(), "TYPE", true, true,
java.lang.String.class);
}
public String getEntityName() {
return getEntityTableName();
}
public static String getEntityTableName() {
return "FIN_ACCOUNT";
}
public static String getUserIdColumnName() {
return "IC_USER_ID";
}
public static String getCashierIdColumnName() {
return "FIN_CASHIER_ID";
}
public static String getNameColumnName() {
return "NAME";
}
public static String getLastUpdatedColumnName() {
return "LAST_UPDATED";
}
public static String getBalanceColumnName() {
return "BALANCE";
}
public static String getCreationDateColumnName() {
return "CREATION_DATE";
}
public static String getInfoColumnName() {
return "EXTRA_INFO";
}
public static String getValidColumnName() {
return "VALID";
}
public static String getColumnTypeId() {
return "FIN_ACCT_TYPE_ID";
}
public static String getTypeColumnName() {
return "ACCOUNT_TYPE";
}
public static String typeFinancial = "FINANCE";
public static String typePhone = "PHONE";
public int getUserId() {
return getIntColumnValue(getUserIdColumnName());
}
public User getUser() {
return (User) getColumnValue(getUserIdColumnName());
}
public void setUserId(Integer user_id) {
setColumn(getUserIdColumnName(), user_id);
}
public void setUserId(int user_id) {
setColumn(getUserIdColumnName(), user_id);
}
public String getName() {
return getStringColumnValue(getNameColumnName());
}
public void setName(String name) {
setColumn(getNameColumnName(), name);
}
public Timestamp getLastUpdated() {
return (Timestamp) getColumnValue(getLastUpdatedColumnName());
}
public void setLastUpdated(Timestamp last_updated) {
setColumn(getLastUpdatedColumnName(), last_updated);
}
public int getCashierId() {
return getIntColumnValue(getCashierIdColumnName());
}
public void setCashierId(Integer cashier_id) {
setColumn(getCashierIdColumnName(), cashier_id);
}
public void setCashierId(int cashier_id) {
setColumn(getCashierIdColumnName(), cashier_id);
}
public float getBalance() {
// return getFloatColumnValue(getBalanceColumnName());
return 0;
}
public void setBalance(Float balance) {
setColumn(getBalanceColumnName(), balance);
}
public void setBalance(float balance) {
setColumn(getBalanceColumnName(), balance);
}
public Timestamp getCreationDate() {
return (Timestamp) getColumnValue(getCreationDateColumnName());
}
public void setCreationDate(Timestamp creation_date) {
setColumn(getCreationDateColumnName(), creation_date);
}
public String getExtraInfo() {
return getStringColumnValue(getInfoColumnName());
}
public void setExtraInfo(String extra_info) {
setColumn(getInfoColumnName(), extra_info);
}
public void addKredit(float amount) {
this.setBalance(this.getBalance() - amount);
}
public void addKredit(Float amount) {
this.setBalance(this.getBalance() - amount.intValue());
}
public void addDebet(float amount) {
this.setBalance(this.getBalance() + amount);
}
public void addDebet(Float amount) {
this.setBalance(this.getBalance() + amount.intValue());
}
public void addAmount(Float amount) {
this.setBalance(this.getBalance() + amount.intValue());
}
public void addAmount(float amount) {
this.setBalance(this.getBalance() + amount);
}
public void setValid(boolean valid) {
setColumn(getValidColumnName(), valid);
}
public boolean getValid() {
return getBooleanColumnValue(getValidColumnName());
}
public void setType(String type) {
setColumn(getTypeColumnName(), type);
}
public String getType() {
return getStringColumnValue(getTypeColumnName());
}
public void setTypeFinancial() {
setType(typeFinancial);
}
public void setTypePhone() {
setType(typePhone);
}
public int getAccountTypeId() {
return getIntColumnValue(getColumnTypeId());
}
public void setAccountTypeId(int typeId) {
setColumn(getColumnTypeId(), typeId);
}
public String getAccountType() {
return getType();
}
public String getAccountName() {
return getName();
}
public Integer getAccountId() {
return ((Integer) getPrimaryKey());
}
// Finders
public Collection ejbFindAllByUserId(int userId)
throws javax.ejb.FinderException {
return super.idoFindPKsBySQL("select * from " + getEntityTableName()
+ " where " + getUserIdColumnName() + " = " + userId);
}
public Collection ejbFindAllByUserIdAndType(int userId, String type)
throws javax.ejb.FinderException {
return super.idoFindPKsBySQL("select * from " + getEntityTableName()
+ " where " + getUserIdColumnName() + " = " + userId + " and "
+ getTypeColumnName() + " = '" + type + "'");
}
public Object ejbFindByUserAndType(User user, String type) throws FinderException {
IDOQuery query = idoQuery();
query.appendSelectAllFrom(this);
query.appendWhereEquals(getUserIdColumnName(), user);
query.appendAndEqualsQuoted(getTypeColumnName(), type);
System.out.println("query = " + query.toString());
return idoFindOnePKByQuery(query);
}
public Collection ejbFindBySearch(String id, String name, String pid,
String type, int iCategoryId) throws javax.ejb.FinderException {
StringBuffer sql = new StringBuffer("select * from ");
sql.append(com.idega.block.finance.data.AccountBMPBean
.getEntityTableName());
sql.append(" a,ic_user u ");
sql.append(" where a.ic_user_id = u.ic_user_id");
sql.append(" and a.");
sql.append(CategoryEntityBMPBean
.getColumnCategoryId());
sql.append(" = ");
sql.append(iCategoryId);
if (id != null && !"".equals(id)) {
sql.append(" and a.name like '%");
sql.append(id);
sql.append("%' ");
}
Name nm = new Name(name);
String first = nm.getFirstName();
String middle = nm.getMiddleName();
String last = nm.getLastName();
if (first != null && !"".equals(first)) {
sql.append(" and u.first_name like '%");
sql.append(first);
sql.append("%' ");
}
if (middle != null && !"".equals(middle)) {
sql.append(" and u.middle_name like '%");
sql.append(middle);
sql.append("%' ");
}
if (last != null && !"".equals(last)) {
sql.append(" and u.last_name like '%");
sql.append(last);
sql.append("%' ");
}
if (pid != null && !"".equals(pid)) {
sql.append(" and u.personal_id like '%");
sql.append(pid);
sql.append("%' ");
}
if (type != null && !"".equals(type)) {
sql.append(" and a.account_type like '");
sql.append(type);
sql.append("' ");
}
// System.err.println(sql.toString());
return super.idoFindPKsBySQL(sql.toString());
}
public Collection ejbFindByAssessmentRound(int roundid)
throws FinderException {
return super.idoFindPKsBySQL(getByRoundSQL(new Integer(roundid)));
}
public Collection ejbFindBySQL(String sql) throws javax.ejb.FinderException {
return super.idoFindPKsBySQL(sql);
}
public int ejbHomeCountByTypeAndCategory(String type, Integer categoryID)
throws IDOException {
IDOQuery query = super.idoQueryGetSelectCount()
.appendWhereEqualsQuoted(getTypeColumnName(), type)
.appendAndEquals(getColumnCategoryId(), categoryID);
System.out.println(query.toString());
return super.idoGetNumberOfRecords(query);
}
public int ejbHomeCountByAssessmentRound(Integer roundID)
throws IDOException {
return super.idoGetNumberOfRecords(getCountByRoundSQL(roundID));
}
private String getCountByRoundSQL(Integer roundID) {
return getByRoundEndingSQL(roundID,
"select count(distinct a.fin_account_id ) ");
}
private String getByRoundSQL(Integer roundID) {
return getByRoundEndingSQL(roundID, " select distinct a.* ");
}
private String getByRoundEndingSQL(Integer roundID, String start) {
StringBuffer sql = new StringBuffer(start);
sql.append(" from fin_account a,fin_acc_entry e ");
sql.append(" where a.fin_account_id = e.fin_account_id ");
sql.append(" and e.fin_assessment_round_id = ");
sql.append(roundID.toString());
return sql.toString();
}
public Collection ejbFindByAssessmentRound(Integer roundID, int resultSize,
int startindex) throws FinderException {
return super.idoFindPKsBySQL(getByRoundSQL(roundID), resultSize,
startindex);
}
}