/** * YogaFacts.java * Created On 2007, Nov 12, 2007 2:30:00 PM * @author E. Rajasekar */ package app.astrosoft.xps.beans; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.EnumSet; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import java.util.logging.Logger; import app.astrosoft.beans.PlanetCharacter; import app.astrosoft.consts.Planet; import app.astrosoft.consts.Sex; import app.astrosoft.core.Horoscope; public class YogaFacts { private static final Logger log = Logger.getLogger(YogaFacts.class.getName()); private static final double POWERFUL_PLANET_THRESHOLD = 75.0; private static final NumberFormat format = new DecimalFormat("000"); private PlanetCharacter character; private Set<Planet> powerfulPlanets; private Map<Planet, Double> planetStrength; private boolean isBirthAtDay; private Sex personSex; public YogaFacts() { } public YogaFacts(Horoscope h) { PlanetCharacter character = new PlanetCharacter(h.getPlanetaryInfo().getPlanetCharacter()); setCharacter(character); setPlanetStrength(h.getShadBala().getStrengthPer()); setPowerfulPlanets(planetStrength); setBirthAtDay(h.isBirthAtDay()); setPersonSex(h.getPersonSex()); } public void setPlanetStrength(Map<Planet, Double> planetStrength) { this.planetStrength = planetStrength; } public void setCharacter(PlanetCharacter character) { this.character = character; } public PlanetCharacter character() { return character; } public void setPowerfulPlanets(Map<Planet, Double> strengthPercent){ powerfulPlanets = EnumSet.noneOf(Planet.class); for(Entry<Planet,Double> entry : strengthPercent.entrySet()){ if (entry.getValue().doubleValue() >= POWERFUL_PLANET_THRESHOLD){ powerfulPlanets.add(entry.getKey()); } } log.fine(powerfulPlanets.toString()); } public void setPowerfulPlanets(Set<Planet> powerfulPlanets) { this.powerfulPlanets = powerfulPlanets; } public Set<Planet> powerfulPlanets() { return powerfulPlanets; } public boolean isPlanetPowerful(Planet planet){ return powerfulPlanets.contains(planet); } public boolean isAnyPlanetPowerful(Set<Planet> planets){ for(Planet p : planets){ if (isPlanetPowerful(p)){ return true; } } return false; } public void setBirthAtDay(boolean isBirthAtDay) { this.isBirthAtDay = isBirthAtDay; } public boolean isBirthAtDay() { System.out.println("isBirthAtDay--> " + isBirthAtDay); return isBirthAtDay; } public void setPersonSex(Sex sex) { this.personSex = sex; } public boolean isMale() { if (personSex != null){ return personSex.isMale(); } return false; } public boolean isFemale() { if (personSex != null){ return personSex.isFemale(); } return false; } public String getPlanetStrength(Planet planet){ if (planetStrength == null){ return "100%"; } return format.format(planetStrength.get(planet)) + "%"; } }