/**
* MuhurthaHelper.java
* Created On 2005, Oct 15, 2005 5:09:03 PM
* @author Rajasekar E.
*/
package app.astrosoft.util;
import java.util.EnumMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import app.astrosoft.beans.Interval;
import app.astrosoft.beans.MuhurthaBean;
import app.astrosoft.consts.MuhurthaRank;
import app.astrosoft.consts.Planet;
/**
* Helper class for computing muhurtha.
*/
public class MuhurthaHelper {
private static final Logger log = Logger.getLogger(MuhurthaHelper.class.getName());
private EnumMap <MuhurthaRank, List<Interval>> tLongitudes;
private TransitHelper transitHelper;
public MuhurthaHelper(EnumMap <MuhurthaRank, List<Interval>>longs){
tLongitudes = longs;
transitHelper = new SwissHelper().getTransitHelper(Planet.Moon);
}
public void setTransitLongitudes(EnumMap <MuhurthaRank, List<Interval>> longs) {
tLongitudes = longs;
}
//TODO: Make this to run in seperate thread.
public List<MuhurthaBean> getTransists(Interval period) {
List<MuhurthaBean> mTransists = new java.util.ArrayList<MuhurthaBean>();
for(MuhurthaRank r : tLongitudes.keySet()) {
for(Interval tLongitude : tLongitudes.get(r)) {
double startJT = period.getStart();
double endJT = period.getEnd();
//System.out.println("S -> " + SweDate.getDate(startJT));
//System.out.println("E -> "+ SweDate.getDate(endJT));
while (startJT <= endJT) {
//System.out.println("Period " + new Interval(startJT,endJT));
//System.out.println("startJT " + startJT);
//System.out.println("endJT " + endJT);
try {
/*tc.setOffset(tLongitude.getStart());
double transitStart = sw.getTransitUT(tc, startJT, false);
tc.setOffset(tLongitude.getEnd());
double transitEnd = sw.getTransitUT(tc, transitStart, false);*/
//System.out.println("tLongitude.getStart() " + tLongitude);
double transitStart = transitHelper.getTransit(tLongitude.getStart(), startJT);
double transitEnd = transitHelper.getTransit(tLongitude.getEnd(), transitStart);
//System.out.println("transitStart " + transitStart + " - " + tLongitude.getStart());
//System.out.println("transitEnd " + transitEnd+ " - " + tLongitude.getEnd());
if (transitStart <= endJT ) {
MuhurthaBean mTransit = new MuhurthaBean(new Interval(transitStart, transitEnd),tLongitude , r);
mTransists.add(mTransit);
}
startJT = transitEnd ;//+ 0.1;
}catch(swisseph.SwissephException ex){
log.log(Level.SEVERE, "Exception in calculating transists " , ex);
};
}
}
}
return mTransists;
}
}