package is.idega.idegaweb.golf.business;
import is.idega.idegaweb.golf.entity.Scorecard;
import is.idega.idegaweb.golf.entity.ScorecardHome;
import is.idega.idegaweb.golf.entity.Statistic;
import is.idega.idegaweb.golf.entity.StatisticHome;
import is.idega.idegaweb.golf.entity.Stroke;
import is.idega.idegaweb.golf.entity.StrokeHome;
import is.idega.idegaweb.golf.entity.Tee;
import is.idega.idegaweb.golf.entity.TeeColor;
import is.idega.idegaweb.golf.entity.TeeColorHome;
import is.idega.idegaweb.golf.entity.TeeHome;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Collection;
import javax.ejb.FinderException;
import com.idega.business.IBOServiceBean;
import com.idega.data.IDOException;
import com.idega.data.IDOLookup;
import com.idega.data.IDOLookupException;
import com.idega.data.query.MatchCriteria;
/**
* @author Anna
*/
public class StatisticsBusinessBean extends IBOServiceBean implements StatisticsBusiness{
private static NumberFormat nf = NumberFormat.getPercentInstance();
private static DecimalFormat iif = new DecimalFormat("0.00");
public double getNumberOnFairwayByTeeID(Collection teeIDs){
double fairwayPercent = 0;
try {
int totalCount = getHome().getCountByTeeId(teeIDs);
int fairwayCount = getHome().getNumberOnFairwayByTeeID(teeIDs);
fairwayPercent = ((double) fairwayCount / (double) totalCount);
return fairwayPercent;
} catch (Exception e) {
e.printStackTrace();
}
return fairwayPercent;
}
public double getNumberOnGreenByTeeID(Collection teeIDs){
double greenPercent = 0;
try {
int totalCount = getHome().getCountByTeeId(teeIDs);
int greenCount = getHome().getNumberOnGreenByTeeID(teeIDs);
greenPercent = ((double) greenCount / (double) totalCount);
return greenPercent;
} catch (Exception e) {
e.printStackTrace();
}
return greenPercent;
}
public double getPuttAverageByTeeID(Collection teeIDs){
try {
return getHome().getPuttAverageByTeeID(teeIDs);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public Collection getStatisticsByTeeID(Collection teeIDs){
try {
return getHome().findByTeeID(teeIDs);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
return null;
}
public Collection getTeeFromFieldIDAndHoleNumber(int fieldID, int holeNumber) {
try {
return getTeeHome().findByFieldAndHoleNumber(fieldID, holeNumber);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
return null;
}
public TeeColor getTeeColor(Tee tee) {
try {
return getTeeColorHome().findByPrimaryKey(tee.getTeeColorID());
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
return null;
}
public int getNumberOnFairwayByMember(int member){
try {
return getHome().getNumberOnFairwayByMember(member);
}
catch (IDOException ie) {
return 0;
}
catch (IDOLookupException e) {
return 0;
}
}
public double getFairwayAverageByMember(int member){
double fairwayPercent = 0;
try {
int totalCount = getHome().getCountFairwaysByMember(member);
int fairwayCount = getHome().getNumberOnFairwayByMember(member);
fairwayPercent = ((double) fairwayCount / (double) totalCount);
return fairwayPercent;
} catch (Exception e) {
e.printStackTrace();
}
return fairwayPercent;
}
public int getNumberOnGreenByMember(int member) {
try {
return getHome().getNumberOnGreenByMember(member);
}
catch (IDOException ie) {
return 0;
}
catch (IDOLookupException e) {
return 0;
}
}
public double getOnGreenAverageByMember(int member){
double greenPercent = 0;
try {
int totalCount = getHome().getCountOnGreenByMember(member);
int greenCount = getHome().getNumberOnGreenByMember(member);
greenPercent = ((double) greenCount / (double) totalCount);
return greenPercent;
} catch (Exception e) {
e.printStackTrace();
}
return greenPercent;
}
public double getPuttAverageByMember(int member){
try {
return getHome().getPuttAverageByMember(member);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getNumberOfEaglesByMember(int member){
try {
return getStrokesHome().getCountDifferenceByMember(member, -2, MatchCriteria.LESSEQUAL);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getNumberOfBirdiesByMember(int member){
try {
return getStrokesHome().getCountDifferenceByMember(member, -1, MatchCriteria.EQUALS);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getNumberOfParsByMember(int member){
try {
return getStrokesHome().getCountDifferenceByMember(member, 0, MatchCriteria.EQUALS);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getNumberOfBogeysByMember(int member){
try {
return getStrokesHome().getCountDifferenceByMember(member, 1, MatchCriteria.EQUALS);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getNumberOfDoubleBogeysByMember(int member){
try {
return getStrokesHome().getCountDifferenceByMember(member, 2, MatchCriteria.GREATEREQUAL);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getNumberOfRoundsByMember(int member){
try {
return getScorecardHome().getCountRoundsPlayedByMember(member);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getSumOfStrokesByMember(int member) {
try {
return getStrokesHome().getSumOfStrokesByMember(member);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getSumOfPointsByMember(int member) {
try {
return getScorecardHome().getSumPointsByMember(member);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
log(e);
}
return 0;
}
public int getNumberOfHolesPlayedByMember(int member) {
try {
return getStrokesHome().getCountOfHolesPlayedByMember(member);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getSumOfPuttsByMember(int member) {
try {
return getHome().getPuttSumByMember(member);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public int getHolesPlayedByMember(int member) {
try {
return getStrokesHome().getCountOfHolesPlayedByMember(member);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (IDOException e) {
e.printStackTrace();
}
return 0;
}
public String getPercentText(double number) {
if (Double.isNaN(number)) {
number = 0.0;
}
return nf.format(number);
}
public String getDecimalText(double number) {
if (Double.isNaN(number)) {
number = 0.0;
}
return iif.format(number);
}
private StatisticHome getHome()throws IDOLookupException{
return (StatisticHome) IDOLookup.getHome(Statistic.class);
}
private TeeHome getTeeHome()throws IDOLookupException{
return (TeeHome) IDOLookup.getHome(Tee.class);
}
private TeeColorHome getTeeColorHome()throws IDOLookupException{
return (TeeColorHome) IDOLookup.getHome(TeeColor.class);
}
private StrokeHome getStrokesHome()throws IDOLookupException{
return (StrokeHome) IDOLookup.getHome(Stroke.class);
}
private ScorecardHome getScorecardHome()throws IDOLookupException{
return (ScorecardHome) IDOLookup.getHome(Scorecard.class);
}
}