package com.idega.block.trade.stockroom.data; import java.sql.SQLException; import java.util.Collection; import javax.ejb.FinderException; import com.idega.core.location.data.Address; import com.idega.data.IDOQuery; import com.idega.data.query.Column; import com.idega.data.query.MatchCriteria; import com.idega.data.query.SelectQuery; import com.idega.data.query.Table; import com.idega.data.query.WildCardColumn; /** * Title: IW Trade * Description: * Copyright: Copyright (c) 2001 * Company: idega.is * @author 2000 - idega team - <br><a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson</a><br><a href="mailto:gimmi@idega.is">Gr�mur J�nsson</a> * @version 1.0 */ public class PriceCategoryBMPBean extends com.idega.data.GenericEntity implements PriceCategory{ public static final String PRICETYPE_PRICE = "sr_pricetype_price"; public static final String PRICETYPE_DISCOUNT = "sr_pricetype_discount"; public static final int PRICE_VISIBILITY_PRIVATE = 1; public static final int PRICE_VISIBILITY_PUBLIC = 2; public static final int PRICE_VISIBILITY_BOTH_PRIVATE_AND_PUBLIC = 3; public PriceCategoryBMPBean(){ super(); } public PriceCategoryBMPBean(int id)throws SQLException{ super(id); } public void initializeAttributes(){ addAttribute(getIDColumnName()); addAttribute(getColumnNameName(), "Name", true, true, String.class, 255); addAttribute(getColumnNameDescription(), "L�sing", true, true, String.class, 255); addAttribute(getColumnNameType(),"Type",true,true,String.class,255); addAttribute(getColumnNameExtraInfo(), "A�rar upplysingar", true, true, String.class, 255); addAttribute(getColumnNameNetbookingCategory(), "Ver�flokkur fyrir netb�kun", true, true, Boolean.class, 255); addAttribute(getColumnNameSupplierId(),"supplier_id (owner)", true, true, Integer.class, "many_to_one", Supplier.class); addAttribute(getColumnNameParentId(),"parent_id", true, true, Integer.class, "many_to_one", PriceCategory.class); addAttribute(getColumnNameIsValid(), "is valid", true, true, Boolean.class); addAttribute(getColumnNameCountAsPerson(), "count as person", true, true, Boolean.class); /** added 20.11.2002 by gimmi */ addAttribute(getColumnNameVisibility(), "visibility", true, true, Integer.class); addAttribute(getColumnNameKey(), "key", true, true, String.class); this.addManyToManyRelationShip(Address.class); this.addTreeRelationShip(); addIndex("IDX_PRICECAT_1", new String[]{getIDColumnName(), getColumnNameType()}); addIndex("IDX_PRICECAT_2", new String[]{getIDColumnName(), getColumnNameType(), getColumnNameIsValid()}); addIndex("IDX_PRICECAT_3", new String[]{getIDColumnName(), getColumnNameType(), getColumnNameIsValid(), getColumnNameParentId()}); addIndex(getColumnNameType()); addIndex("IDX_PRICECAT_5", new String[]{getColumnNameType(), getColumnNameIsValid()}); } public void delete() { try { setColumn(getColumnNameIsValid(), false); this.update(); }catch (SQLException sql) { sql.printStackTrace(System.err); } } public void setDefaultValues() { setColumn(getColumnNameIsValid(), true); setColumn(getColumnNameCountAsPerson(), "true"); } public String getEntityName(){ return getPriceCategoryTableName(); } public String getName(){ return getStringColumnValue(getColumnNameName()); } public void setName(String name){ setColumn(getColumnNameName(),name); } public String getDescription() { return getStringColumnValue(getColumnNameDescription()); } public void setDescription(String description) { setColumn(getColumnNameDescription(),description); } public String getExtraInfo(){ return getStringColumnValue(getColumnNameExtraInfo()); } public void setExtraInfo(String extraInfo){ setColumn(getColumnNameExtraInfo(),extraInfo); } public String getType(){ return getStringColumnValue(getColumnNameType()); } public void setType(String type){ setColumn(getColumnNameType(),type); } public void isNetbookingCategory(boolean value){ setColumn(getColumnNameNetbookingCategory(), value); } public boolean isNetbookingCategory(){ return getBooleanColumnValue(getColumnNameNetbookingCategory()); } public void setSupplierId(int id){ setColumn(getColumnNameSupplierId(), id); } public int getSupplierId(){ return getIntColumnValue(getColumnNameSupplierId()); } public void setParentId(int id){ setColumn(getColumnNameParentId(), id); } public int getParentId(){ return getIntColumnValue(getColumnNameParentId()); } public void setKey(String key) { setColumn(getColumnNameKey(), key); } public String getKey() { return getStringColumnValue(getColumnNameKey()); } public void setCountAsPerson(boolean countAsPerson) { setColumn(getColumnNameCountAsPerson(), countAsPerson); } public boolean getCountAsPerson() { return getBooleanColumnValue(getColumnNameCountAsPerson(), true); } public int getVisibility() { int vis = this.getIntColumnValue(getColumnNameVisibility()); if (vis < 1) { try { isNetbookingCategory(false); if (isNetbookingCategory()) { setVisibility(PRICE_VISIBILITY_BOTH_PRIVATE_AND_PUBLIC); update(); System.out.println("[PriceCategoryBMPBean] backward compatability for visibility"); return PRICE_VISIBILITY_BOTH_PRIVATE_AND_PUBLIC; }else { setVisibility(PRICE_VISIBILITY_PRIVATE); update(); System.out.println("[PriceCategoryBMPBean] backward compatability for visibility"); return PRICE_VISIBILITY_PRIVATE; } } catch (SQLException e) { System.out.println("[PriceCategoryBMPBean] backward compatability for visibility FAILED ("+e.getMessage()+")"); // e.printStackTrace(System.err); } } return vis; } public Object ejbFindByKey(String key) throws FinderException { IDOQuery query = idoQuery(); query.appendSelectAllFrom(this).appendWhereEqualsWithSingleQuotes(getColumnNameIsValid(), "Y") .appendAndEqualsQuoted(getColumnNameKey(), key); return this.idoFindOnePKByQuery(query); } public void setVisibility(int visibility) { this.setColumn(getColumnNameVisibility(), visibility); } public Collection ejbFindBySupplierAndCountAsPerson(int supplierID, boolean countAsPerson) throws FinderException { Table table = new Table(this); Column supplier = new Column(table, getColumnNameSupplierId()); Column valid = new Column(table, getColumnNameIsValid()); Column count = new Column(table, getColumnNameCountAsPerson()); SelectQuery query = new SelectQuery(table); query.addColumn(new WildCardColumn(table)); query.addCriteria(new MatchCriteria(supplier, MatchCriteria.EQUALS, supplierID)); query.addCriteria(new MatchCriteria(count, MatchCriteria.EQUALS, countAsPerson)); query.addCriteria(new MatchCriteria(valid, MatchCriteria.EQUALS, true)); return this.idoFindPKsBySQL(query.toString()); } public static String getColumnNameName() {return "CATEGORY_NAME";} public static String getColumnNameDescription() {return "DESCRIPTION";} public static String getColumnNameType(){return "CATEGORY_TYPE";} public static String getColumnNameExtraInfo() {return "EXTRA_INFO";} public static String getColumnNameSupplierId() {return "SUPPLIER_ID";} public static String getColumnNameParentId() {return "PARENT_ID";} public static String getColumnNameNetbookingCategory() {return "NETBOOKING_CATEGORY";} public static String getColumnNameIsValid() {return "IS_VALID";} public static String getColumnNameCountAsPerson() {return "COUNT_AS_PERSON";} public static String getPriceCategoryTableName() {return "SR_PRICE_CATEGORY";} public static String getColumnNameVisibility() {return "PRICE_VISIBILITY";} public static String getColumnNameKey() { return "CATEGORY_KEY";} }