/** * BirthData.java * * Created on December 14, 2002, 12:08 PM * * @author E. Rajasekar */ package app.astrosoft.beans; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import app.astrosoft.consts.Sex; import app.astrosoft.consts.WeekDay; import app.astrosoft.consts.XmlConsts; import app.astrosoft.export.XMLHelper; import app.astrosoft.util.AstroUtil; import swisseph.SweDate; public class BirthData { private String personName; private Sex sex; private Place birthPlace; private int birthYear; private int birthMonth; private int birthDate; private int birthHour; private int birthMinutes; private int birthSeconds; private SweDate birthSD; private double birthTime; private double birthGMT; private Calendar birthDay; private WeekDay birthWeekDay; /** Creates a new instance of BirthData */ public BirthData( String name, Sex sex, int date, int month, int year, int hr, int min, int secs, Place place) { personName = name; this.sex = sex; birthDate = date; birthMonth = month; birthYear = year; birthHour = hr; birthMinutes = min; birthSeconds = secs; birthPlace = place; birthTime = AstroUtil.decimal(hr, min, 0); birthGMT = AstroUtil.decimal(hr, min, 0) - birthPlace.timeZone(); birthSD = new SweDate(year, month, date, birthGMT); birthDay = new GregorianCalendar(year, month - 1, date, birthHour, birthMinutes, birthSeconds); birthWeekDay = WeekDay.ofDay(year, month, date); } public BirthData( String name, int date, int month, int year, int hr, int min, int secs, Place place){ this(name,null,date,month,year,hr,min,secs,place); } public BirthData(String name, Sex sex, Calendar birthDay, Place place) { this(name, sex, birthDay.get(Calendar.DATE), birthDay.get(Calendar.MONTH) + 1, birthDay.get(Calendar.YEAR), birthDay.get(Calendar.HOUR_OF_DAY), birthDay.get(Calendar.MINUTE),birthDay.get(Calendar.SECOND), place); } public BirthData(String name, Calendar birthDay, Place place){ this(name, null, birthDay, place); } public String name() { return personName; } public int year() { return birthYear; } public int month() { return birthMonth; } public int date() { return birthDate; } public int hour() { return birthHour; } public int minutes() { return birthMinutes; } public double latitude() { return birthPlace.latitude(); } public double longitude() { return birthPlace.longitude(); } public String place() { return birthPlace.city(); } public double timeZone() { return birthPlace.timeZone(); } public SweDate birthSD() { return birthSD; } public double birthTime() { return birthTime; } public double birthGMT() { return birthGMT; } public Calendar birthDay() { return birthDay; } public WeekDay weekDay() { return birthWeekDay; } public Place getBirthPlace() { return birthPlace; } public String birthDayString(){ return AstroUtil.formatDate(birthDay.getTime()); } public Sex sex(){ return sex; } public Element toXMLElement(Document doc, String elementName){ Element bdElement = doc.createElement(elementName); XMLHelper.addElement(doc, bdElement, XmlConsts.Name, this.personName); if (this.sex != null){ XMLHelper.addElement(doc, bdElement, XmlConsts.Sex, this.sex.name()); } XMLHelper.addElement(doc, bdElement, XmlConsts.DateTime, AstroUtil.formatDateTime(this.birthDay.getTime())); bdElement.appendChild(birthPlace.toXMLElement(doc)); return bdElement; } public Element toXMLElement(Document doc){ return toXMLElement(doc, XmlConsts.BirthData); } public static BirthData valueOfXMLNode(Node bdNode){ String name = null; Calendar birthDay = null; Place place = null; Sex sex = null; NodeList children = bdNode.getChildNodes(); for(int i = 0; i < children.getLength(); i++){ Node child = children.item(i); if (child.getNodeName().equals(XmlConsts.Name)){ name = child.getTextContent(); } else if (child.getNodeName().equals(XmlConsts.Sex)){ sex = Enum.valueOf(Sex.class, child.getTextContent()); } else if (child.getNodeName().equals(XmlConsts.DateTime)){ birthDay = AstroUtil.getCalendar(AstroUtil.parseDateTime(child.getTextContent())); } else if(child.getNodeName().equals(XmlConsts.Place)){ place = Place.valueOfXMLNode(child); } } return new BirthData(name, sex, birthDay, place); } }