/*
* $Id: DistanceBMPBean.java,v 1.12 2007/12/13 20:02:00 civilis Exp $
* Created on May 22, 2005
*
* Copyright (C) 2005 Idega Software hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*/
package is.idega.idegaweb.marathon.data;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import com.idega.user.data.Group;
import com.idega.user.data.GroupBMPBean;
import com.idega.util.LocaleUtil;
/**
* Last modified: $Date: 2007/12/13 20:02:00 $ by $Author: civilis $
*
* @author <a href="mailto:laddi@idega.com">laddi</a>
* @version $Revision: 1.12 $
*/
public class DistanceBMPBean extends GroupBMPBean implements Group, Distance{
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = -2348766615544079846L;
private static final String METADATA_USE_CHIP = "use_chip";
//private static final String METADATA_TRANSPORT_OFFERED = "transport_offered";
private static final String METADATA_ASK_QUESTIONS = "ask_questions";
private static final String METADATA_PRICE_ISK = "price_isk";
private static final String METADATA_PRICE_EUR = "price_eur";
private static final String METADATA_FAMILY_DISCOUNT = "family_discount";
private static final String METADATA_CHILDREN_PRICE_ISK = "children_price_isk";
private static final String METADATA_CHILDREN_PRICE_EUR = "children_price_eur";
private static final String METADATA_PRICE_FOR_TRANSPORT_ISK = "price_for_transport_isk";
private static final String METADATA_PRICE_FOR_TRANSPORT_EUR = "price_for_transport_eur";
private static final String METADATA_ALLOWS_GROUPS = "allows_groups";
private static final String METADATA_NEXT_PARTICIPANT_NUMBER = "next_participant_number";
private static final String METADATA_NUMBER_OF_SPLITS = "number_of_splits";
public static final String METADATA_MINIMUM_AGE_FOR_DISTANCE = "minimum_age_for_distance";
public static final String METADATA_MAXIMUM_AGE_FOR_DISTANCE = "maximum_age_for_distance";
public static final String METADATA_MINIMUM_PARTICIPANT_NUMBER_FOR_DISTANCE = "minimum_part_numb_for_distance";
public static final String METADATA_MAXIMUM_PARTICIPANT_NUMBER_FOR_DISTANCE = "maximum_part_numb_for_distance";
public static final String METADATA_IS_RELAY_DISTANCE = "is_relay_distance";
//Suffix that all distance groups are suffixed with in their name
public static final String KM_SUFFIX="_km";
private Year year;
public boolean isUseChip() {
String useChip = this.getMetaData(METADATA_USE_CHIP);
if (useChip != null) {
return new Boolean(useChip).booleanValue();
}
return true;
}
public void setUseChip(boolean useChip) {
setMetaData(METADATA_USE_CHIP, String.valueOf(useChip), "java.lang.Boolean");
}
/* public boolean isTransportOffered() {
String transportOffered = this.getMetaData(METADATA_TRANSPORT_OFFERED);
if (transportOffered != null) {
return new Boolean(transportOffered).booleanValue();
}
return false;
}*/
public boolean isAskQuestions() {
String askQuestions = this.getMetaData(METADATA_ASK_QUESTIONS);
if (askQuestions != null) {
return new Boolean(askQuestions).booleanValue();
}
return false;
}
public void setAskQuestions(boolean askQuestions) {
setMetaData(METADATA_ASK_QUESTIONS, String.valueOf(askQuestions), "java.lang.Boolean");
}
/*public void setTransportOffered(boolean transportOffered) {
setMetaData(METADATA_TRANSPORT_OFFERED, String.valueOf(transportOffered), "java.lang.Boolean");
}*/
public float getPrice(Locale locale) {
String price = null;
if (locale.equals(LocaleUtil.getIcelandicLocale())) {
price = getMetaData(METADATA_PRICE_ISK);
}
else {
price = getMetaData(METADATA_PRICE_EUR);
}
if (price != null) {
return Float.parseFloat(price);
}
return 0;
}
public void setPriceInISK(float price) {
setMetaData(METADATA_PRICE_ISK, String.valueOf(price), "java.lang.Float");
}
public void setPriceInEUR(float price) {
setMetaData(METADATA_PRICE_EUR, String.valueOf(price), "java.lang.Float");
}
public float getChildrenPrice(Locale locale) {
String price = null;
if (locale.equals(LocaleUtil.getIcelandicLocale())) {
price = getMetaData(METADATA_CHILDREN_PRICE_ISK);
}
else {
price = getMetaData(METADATA_CHILDREN_PRICE_EUR);
}
if (price != null) {
return Float.parseFloat(price);
}
else {
return getPrice(locale);
}
}
public void setChildrenPriceInISK(float price) {
setMetaData(METADATA_CHILDREN_PRICE_ISK, String.valueOf(price), "java.lang.Float");
}
public void setChildrenPriceInEUR(float price) {
setMetaData(METADATA_CHILDREN_PRICE_EUR, String.valueOf(price), "java.lang.Float");
}
public float getPriceForTransport(Locale locale) {
String price = null;
if (locale.equals(LocaleUtil.getIcelandicLocale())) {
price = getMetaData(METADATA_PRICE_FOR_TRANSPORT_ISK);
}
else {
price = getMetaData(METADATA_PRICE_FOR_TRANSPORT_EUR);
}
if (price != null) {
return Float.parseFloat(price);
}
return 0;
}
public void setPriceForTransportInISK(float price) {
setMetaData(METADATA_PRICE_FOR_TRANSPORT_ISK, String.valueOf(price), "java.lang.Float");
}
public void setPriceForTransportInEUR(float price) {
setMetaData(METADATA_PRICE_FOR_TRANSPORT_EUR, String.valueOf(price), "java.lang.Float");
}
public boolean isFamilyDiscount() {
String discount = this.getMetaData(METADATA_FAMILY_DISCOUNT);
if (discount != null) {
return new Boolean(discount).booleanValue();
}
return false;
}
public void setFamilyDiscount(boolean discount) {
setMetaData(METADATA_FAMILY_DISCOUNT, String.valueOf(discount), "java.lang.Boolean");
}
public boolean isAllowsGroups() {
String allowsGroups = this.getMetaData(METADATA_ALLOWS_GROUPS);
if (allowsGroups != null) {
return new Boolean(allowsGroups).booleanValue();
}
return true;
}
public void setAllowsGroups(boolean allowsGroups) {
setMetaData(METADATA_ALLOWS_GROUPS, String.valueOf(allowsGroups), "java.lang.Boolean");
}
public int getNextAvailableParticipantNumber() {
String number = this.getMetaData(METADATA_NEXT_PARTICIPANT_NUMBER);
if (number != null) {
return Integer.parseInt(number.trim());
}
return -1;
}
public void setNextAvailableParticipantNumber(int number) {
setMetaData(METADATA_NEXT_PARTICIPANT_NUMBER, String.valueOf(number), "java.lang.Integer");
}
public int getNumberOfSplits() {
String number = this.getMetaData(METADATA_NUMBER_OF_SPLITS);
if (number != null) {
return Integer.parseInt(number);
}
return 0;
}
public void setNumberOfSplits(int number) {
setMetaData(METADATA_NUMBER_OF_SPLITS, String.valueOf(number), "java.lang.Integer");
}
/**
* <p>
* Returns the distance set on the group in KiloMeters.
* Returns -1 when an error occurs or distance not decipherable.
* </p>
* @return
*/
public int getDistanceInKms(){
String name = getName();
int kmIndex = name.indexOf(KM_SUFFIX);
if(kmIndex!=-1){
String distStr = name.substring(0,kmIndex);
try{
int distance = Integer.parseInt(distStr);
return distance;
}
catch(NumberFormatException nfe){
nfe.printStackTrace();
}
}
return -1;
}
public Year getYear(){
if(year==null){
List parentGroups = getParentGroups();
for (Iterator iter = parentGroups.iterator(); iter.hasNext();) {
Group group = (Group) iter.next();
Object pk = group.getPrimaryKey();
YearHome yHome;
try {
yHome = (YearHome) getIDOHome(Year.class);
year = (Year) yHome.findByPrimaryKey(pk);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return year;
}
public int getMinimumAgeForDistance() {
String sMinimumAge = getMetaData(METADATA_MINIMUM_AGE_FOR_DISTANCE);
int minimumAge=-1;
try{
minimumAge = Integer.parseInt(sMinimumAge);
}
catch(Exception e){}
return minimumAge;
}
public void setMinimumAgeForDistance(int minimumAgeForDistance) {
setMetaData(METADATA_MINIMUM_AGE_FOR_DISTANCE, String.valueOf(minimumAgeForDistance));
}
public int getMaximumAgeForDistance() {
String sMaximumAge = getMetaData(METADATA_MAXIMUM_AGE_FOR_DISTANCE);
int maximumAge=-1;
try{
maximumAge = Integer.parseInt(sMaximumAge);
}
catch(Exception e){}
return maximumAge;
}
public void setMaximumAgeForDistance(int maximumAgeForDistance) {
setMetaData(METADATA_MAXIMUM_AGE_FOR_DISTANCE, String.valueOf(maximumAgeForDistance));
}
public int getMinimumParticipantNumberForDistance() {
String sMinimumNumber = getMetaData(METADATA_MINIMUM_PARTICIPANT_NUMBER_FOR_DISTANCE);
int minimumNumber=-1;
try{
minimumNumber = Integer.parseInt(sMinimumNumber);
}
catch(Exception e){}
return minimumNumber;
}
public void setMinimumParticipantNumberForDistance(int minimumParticipantForDistance) {
setMetaData(METADATA_MINIMUM_PARTICIPANT_NUMBER_FOR_DISTANCE, String.valueOf(minimumParticipantForDistance));
}
public int getMaximumParticipantNumberForDistance() {
String sMaximumNumber = getMetaData(METADATA_MAXIMUM_PARTICIPANT_NUMBER_FOR_DISTANCE);
int maximumNumber=-1;
try{
maximumNumber = Integer.parseInt(sMaximumNumber);
}
catch(Exception e){}
return maximumNumber;
}
public void setMaximumParticipantNumberForDistance(int maximumParticipantForDistance) {
setMetaData(METADATA_MAXIMUM_PARTICIPANT_NUMBER_FOR_DISTANCE, String.valueOf(maximumParticipantForDistance));
}
public boolean isRelayDistance() {
String isRelayDistance = this.getMetaData(METADATA_IS_RELAY_DISTANCE);
if (isRelayDistance != null) {
return new Boolean(isRelayDistance).booleanValue();
}
return false;
}
public void setIsRelayDistance(boolean isRelayDistance) {
setMetaData(METADATA_IS_RELAY_DISTANCE, String.valueOf(isRelayDistance), "java.lang.Boolean");
}}