/**
* PanchangList.java
* Created On 2007, Sep 14, 2007 1:52:34 PM
* @author E. Rajasekar
*/
package app.astrosoft.core;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Iterator;
import app.astrosoft.core.Ephemeris.Mode;
import app.astrosoft.export.Exportable;
import app.astrosoft.export.Exporter;
import app.astrosoft.util.AstroUtil;
public class PanchangList implements Iterable<Panchang>, Exportable {
private Calendar cal;
private Mode mode;
public static class PanchangIterator implements Iterator<Panchang>{
private Calendar start;
private Calendar current;
private Mode mode;
public PanchangIterator(Calendar start,Mode mode){
this.start = start;
this.current = AstroUtil.getCalendar(start.getTime());
this.mode = mode;
}
public boolean hasNext() {
return current.get(mode.parentCalField()) == start.get(mode.parentCalField());
}
public Panchang next() {
Panchang p = new Panchang(current);
current.add(Calendar.DATE, 1);
return p;
}
public void remove() {
throw new UnsupportedOperationException("remove not supported for PanchangIterator");
}
}
public PanchangList(int year){
this(new GregorianCalendar(year, Calendar.JANUARY, 1), Mode.Monthly);
}
public PanchangList(int year,int month){
this(new GregorianCalendar(year, month, 1), Mode.Daily);
}
private PanchangList(Calendar cal, Mode mode){
this.cal = cal;
this.mode = mode;
cal.set(Calendar.DATE, 1);
}
public Iterator<Panchang> iterator() {
return new PanchangIterator(cal,mode);
}
public void doExport(Exporter e) {
e.export(this);
}
public static void main(String[] args) {
PanchangList pl = new PanchangList(2007);
for(Panchang p : pl){
System.out.println(p);
System.out.println("------------------------------------------------------");
}
}
}