/** * Compactibility.java * * Created on October 11, 2003, 12:31 PM * * @author E. Rajasekar */ package app.astrosoft.core; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import app.astrosoft.beans.BirthData; import app.astrosoft.beans.PlanetaryInfo; import app.astrosoft.consts.AstroConsts; import app.astrosoft.consts.AstrosoftTableColumn; import app.astrosoft.consts.DisplayStrings; import app.astrosoft.consts.Kuta; import app.astrosoft.consts.Nakshathra; import app.astrosoft.consts.Planet; import app.astrosoft.consts.Rasi; import app.astrosoft.consts.XmlConsts; import app.astrosoft.export.Exportable; import app.astrosoft.export.Exporter; import app.astrosoft.export.XMLHelper; import app.astrosoft.util.AstroUtil; import app.astrosoft.ui.AstroSoft; import app.astrosoft.ui.table.DefaultColumnMetaData; import app.astrosoft.ui.table.ColumnMetaData; import app.astrosoft.ui.table.MapTableRow; import app.astrosoft.ui.table.MapTableRowHelper; import app.astrosoft.ui.table.TableData; import app.astrosoft.ui.table.TableDataFactory; import app.astrosoft.ui.table.TableRowData; import app.astrosoft.util.FileOps; public class Compactibility implements Exportable { private static enum KutaFile { RasiKuta, YoniKuta, NadiKuta; public String file(){ return name() + ".txt"; } }; private String boyName; private String girlName; private int boyNak; private int girlNak; private int boyRasi; private int girlRasi; private BirthData boyBirthData; private BirthData girlBirthData; private EnumMap<Kuta, Integer> kutas; private TableData<? extends TableRowData> kutaTableData; private TableData<? extends TableRowData> boyInfo; private TableData<? extends TableRowData> girlInfo; private static DefaultColumnMetaData kutaTableColumnMetaData; private static DefaultColumnMetaData infoTableColumnMetaData; private TableData<? extends TableRowData> doshaTableData; private static DefaultColumnMetaData doshaTableColumnMetaData; private int totalKutaGained = 0; private PlanetaryInfo boyPlanetaryInfo; private PlanetaryInfo girlPlanetaryInfo; private EnumMap<Planet, Double> boyDosha; private EnumMap<Planet, Double> girlDosha; private double bDoshaTotal = 0; private double gDoshaTotal = 0; private String bCurPeriod; private String gCurPeriod; private Rasi beejaRasi; private Rasi kshetraRasi; private double beejaPos; private double kshetraPos; private boolean hasHoroscope = false; /** * Creates a new instance of Compactibility */ public Compactibility(String boyName, String girlName, Nakshathra boyNak, Nakshathra girlNak, Rasi boyRasi, Rasi girlRasi) { this.boyName = boyName; this.girlName = girlName; this.boyNak = boyNak.ordinal(); this.girlNak = girlNak.ordinal(); this.boyRasi = boyRasi.ordinal(); this.girlRasi = girlRasi.ordinal(); kutas = new EnumMap<Kuta, Integer>(Kuta.class); totalKutaGained = 0; calcKutas(); for (Kuta k : Kuta.values()) { totalKutaGained = totalKutaGained + kutas.get(k); } constructColumnMetaData(); } public Compactibility(Horoscope b, Horoscope g) { this(b.getBirthData().name(), g.getBirthData().name(), b.getNakshathra().getNak(), g.getNakshathra().getNak(), b.getRasi(), g.getRasi()); this.boyBirthData = b.getBirthData(); this.girlBirthData = g.getBirthData(); this.bCurPeriod = b.getCurrentDasa(); this.gCurPeriod = g.getCurrentDasa(); this.boyPlanetaryInfo = b.getPlanetaryInfo(); this.girlPlanetaryInfo = g.getPlanetaryInfo(); calcDoshas(); calcBeejaKshetra(); hasHoroscope = true; } public void saveToXML(String fileName){ Document doc = XMLHelper.createDOM(); Element compElement = XMLHelper.addRootElement(doc, XmlConsts.Compactibility); XMLHelper.addAttribute(compElement, XmlConsts.hasHoroscope, "true"); if (hasHoroscope){ compElement.appendChild(boyBirthData.toXMLElement(doc, XmlConsts.BoyData)); compElement.appendChild(girlBirthData.toXMLElement(doc, XmlConsts.GirlData)); XMLHelper.addAttribute(compElement, XmlConsts.hasHoroscope, "true"); }else{ XMLHelper.addAttribute(compElement, XmlConsts.hasHoroscope, "false"); Element boyElement = doc.createElement(XmlConsts.BoyData); Element girlElement = doc.createElement(XmlConsts.GirlData); XMLHelper.addElement(doc, boyElement, XmlConsts.Name, boyName); XMLHelper.addElement(doc, boyElement, XmlConsts.Name, girlName); XMLHelper.addElement(doc, boyElement, XmlConsts.Rasi, boyRasi().name()); XMLHelper.addElement(doc, boyElement, XmlConsts.Nakshathra, boyNak().name()); XMLHelper.addElement(doc, girlElement, XmlConsts.Rasi, girlRasi().name()); XMLHelper.addElement(doc, girlElement, XmlConsts.Nakshathra, girlNak().name()); compElement.appendChild(boyElement); compElement.appendChild(girlElement); } XMLHelper.saveXML(doc, fileName); } public static Compactibility createFromXML(String fileName){ Document doc = XMLHelper.parseXML(fileName); Element compElement = (Element) doc.getChildNodes().item(0); boolean hasHorosocope = Boolean.valueOf(compElement.getAttribute(XmlConsts.hasHoroscope)); Node boy = compElement.getChildNodes().item(0); Node girl = compElement.getChildNodes().item(1); Compactibility c; if (hasHorosocope){ c = new Compactibility(new Horoscope(BirthData.valueOfXMLNode(boy)), new Horoscope(BirthData.valueOfXMLNode(girl))); }else{ Map<String, String> boyElements = XMLHelper.getChildElements(boy); Map<String, String> girlElements = XMLHelper.getChildElements(girl); c = new Compactibility( boyElements.get(XmlConsts.Name), girlElements.get(XmlConsts.Name), Nakshathra.valueOf(boyElements.get(XmlConsts.Nakshathra)), Nakshathra.valueOf(girlElements.get(XmlConsts.Nakshathra)), Rasi.valueOf(boyElements.get(XmlConsts.Rasi)), Rasi.valueOf(girlElements.get(XmlConsts.Rasi)) ); } return c; } private void calcKutas() { kutas.put(Kuta.Dina, calcDinaKuta()); kutas.put(Kuta.Gana, calcGanaKuta()); kutas.put(Kuta.Mahendra, calcMahendraKuta()); kutas.put(Kuta.StreeDeergha, calcStreeDeerghaKuta()); kutas.put(Kuta.Yoni, calcYoniKuta()); kutas.put(Kuta.Rasi, calcRasiKuta()); kutas.put(Kuta.RasiAdhipathi, calcRasiAdhipathiKuta()); kutas.put(Kuta.Vasya, calcVasyaKuta()); kutas.put(Kuta.Rajju, calcRajjuKuta()); kutas.put(Kuta.Vedha, calcVedhaKuta()); kutas.put(Kuta.Varna, calcVarnaKuta()); kutas.put(Kuta.Nadi, calcNadiKuta()); } private int calcDinaKuta() { int count = (boyNak - girlNak + 1); if (count <= 0) { count = count + 27; } count = count % 9; // System.out.println(boyNak + " - " + girlNak + " Count : " + count); if ((count % 2) == 0) { return 3; } else { return 0; } } private int calcGanaKuta() { int boyGana = findGana(boyNak); int girlGana = findGana(girlNak); // System.out.println(" BG: " + boyGana + " GG: " + girlGana); int gana = 0; if ((boyGana == girlGana) || ((boyGana == 1) && (girlGana == 2))) { gana = 6; } else if (((boyGana == 2) && (girlGana == 1))) { gana = 4; } else if ((boyGana == 3) && ((girlGana == 1) || (girlGana == 2))) { gana = 3; } else if ((girlGana == 3) && ((boyGana == 1) || (boyGana == 2))) { int count = (girlNak - boyNak + 1); if (count <= 0) { count = count + 27; } if (count > 14) { gana = 3; } else { gana = 0; } } return gana; } private int findGana(int nak) { int gana = 0; switch (nak) { case 0: case 4: case 6: case 7: case 12: case 14: case 16: case 21: case 26: gana = 1; break; case 1: case 3: case 5: case 10: case 11: case 19: case 20: case 24: case 25: gana = 2; break; case 2: case 8: case 9: case 13: case 15: case 17: case 18: case 22: case 23: gana = 3; break; } return gana; } private int calcMahendraKuta() { int count = (boyNak - girlNak + 1); if (count <= 0) { count = count + 27; } if ((count == 4) || (count == 7) || (count == 10) || (count == 13) || (count == 16) || (count == 19) || (count == 22) || (count == 25)) { return 1; } else { return 0; } } private int calcStreeDeerghaKuta() { int count = (boyNak - girlNak + 1); if (count <= 0) { count = count + 27; } if (count > 9) { return 1; } else { return 0; } } private int calcYoniKuta() { int boyYoni = findYoni(boyNak); int girlYoni = findYoni(girlNak); int yoni = FileOps.getFromFile(KutaFile.YoniKuta.file(), boyYoni, girlYoni); return yoni; } private int findYoni(int nak) { int yoni = 0; switch (nak) { case 0: case 23: yoni = 1; break; case 1: case 26: yoni = 2; break; case 7: case 2: yoni = 3; break; case 3: case 4: yoni = 4; break; case 18: case 5: yoni = 5; break; case 8: case 6: yoni = 6; break; case 9: case 10: yoni = 7; break; case 11: case 25: yoni = 8; break; case 14: case 12: yoni = 9; break; case 15: case 13: yoni = 10; break; case 17: case 16: yoni = 11; break; case 19: case 21: yoni = 12; break; case 20: yoni = 13; break; case 24: case 22: yoni = 14; break; } return yoni; } private int calcRasiKuta() { int kuta = FileOps.getFromFile(KutaFile.RasiKuta.file(), girlRasi + 1, boyRasi + 1); return kuta; } private int calcRasiAdhipathiKuta() { int kuta = 0; Planet boyLord = Rasi.ofIndex(boyRasi).owner(); Planet girlLord = Rasi.ofIndex(girlRasi).owner(); // System.out.println("BL: " + boyLord + " GL: " + girlLord); if (boyLord == girlLord) { kuta = 5; return kuta; } int boy_girl_rel = AstroConsts.permanentRel(boyLord,girlLord); int girl_boy_rel = AstroConsts.permanentRel(girlLord,boyLord); // System.out.println("BR: " + boy_girl_rel + " GR: " + girl_boy_rel); if ((boy_girl_rel < 0) || (girl_boy_rel < 0)) { kuta = 0; } else if ((boy_girl_rel == 0) && (girl_boy_rel == 0)) { kuta = 2; } else if ((boy_girl_rel == 1) && (girl_boy_rel == 1)) { kuta = 5; } else if (((boy_girl_rel == 1) && (girl_boy_rel == 0)) || ((boy_girl_rel == 0) && (girl_boy_rel == 1))) { kuta = 4; } return kuta; } private int calcVasyaKuta() { int vasya = 0; switch (girlRasi) { case 0: if ((boyRasi == 0) || (boyRasi == 4) || (boyRasi == 7)) { vasya = 2; } break; case 1: if ((boyRasi == 1) || (boyRasi == 3) || (boyRasi == 6)) { vasya = 2; } break; case 2: if ((boyRasi == 2) || (boyRasi == 5)) { vasya = 2; } break; case 3: if ((boyRasi == 3) || (boyRasi == 7) || (boyRasi == 8)) { vasya = 2; } break; case 4: if ((boyRasi == 4) || (boyRasi == 6)) { vasya = 2; } break; case 5: if ((boyRasi == 5) || (boyRasi == 2) || (boyRasi == 11)) { vasya = 2; } break; case 6: if ((boyRasi == 6) || (boyRasi == 5) || (boyRasi == 9)) { vasya = 2; } break; case 7: if ((boyRasi == 7) || (boyRasi == 3)) { vasya = 2; } break; case 8: if ((boyRasi == 8) || (boyRasi == 11)) { vasya = 2; } break; case 9: if ((boyRasi == 9) || (boyRasi == 0) || (boyRasi == 10)) { vasya = 2; } break; case 10: if ((boyRasi == 10) || (boyRasi == 0)) { vasya = 2; } break; case 11: if ((boyRasi == 11) || (boyRasi == 9)) { vasya = 2; } break; } return vasya; } private int calcRajjuKuta() { int[] pada = { 0, 8, 9, 17, 18, 26 }; int[] kati = { 1, 7, 10, 16, 19, 25 }; int[] nabhi = { 2, 6, 11, 15, 20, 24 }; int[] kanta = { 3, 5, 12, 14, 21, 23 }; int[] siro = { 4, 13, 22 }; if (found(pada, boyNak) && found(pada, girlNak)) { return 0; } if (found(kati, boyNak) && found(kati, girlNak)) { return 0; } if (found(nabhi, boyNak) && found(nabhi, girlNak)) { return 0; } if (found(kanta, boyNak) && found(kanta, girlNak)) { return 0; } if (found(siro, boyNak) && found(siro, girlNak)) { return 0; } return 1; } private boolean found(int[] arr, int val) { for (int i = 0; i < arr.length; i++) { if (arr[i] == val) { return true; } } return false; } private int calcVedhaKuta() { if (((boyNak == 0) && (girlNak == 17)) || ((boyNak == 17) && (girlNak == 0))) { return 0; } if (((boyNak == 1) && (girlNak == 16)) || ((boyNak == 16) && (girlNak == 1))) { return 0; } if (((boyNak == 2) && (girlNak == 15)) || ((boyNak == 15) && (girlNak == 2))) { return 0; } if (((boyNak == 3) && (girlNak == 14)) || ((boyNak == 14) && (girlNak == 3))) { return 0; } if (((boyNak == 5) && (girlNak == 21)) || ((boyNak == 21) && (girlNak == 5))) { return 0; } if (((boyNak == 6) && (girlNak == 20)) || ((boyNak == 20) && (girlNak == 6))) { return 0; } if (((boyNak == 7) && (girlNak == 19)) || ((boyNak == 19) && (girlNak == 7))) { return 0; } if (((boyNak == 8) && (girlNak == 18)) || ((boyNak == 18) && (girlNak == 8))) { return 0; } if (((boyNak == 9) && (girlNak == 26)) || ((boyNak == 26) && (girlNak == 9))) { return 0; } if (((boyNak == 10) && (girlNak == 25)) || ((boyNak == 25) && (girlNak == 10))) { return 0; } if (((boyNak == 11) && (girlNak == 24)) || ((boyNak == 24) && (girlNak == 11))) { return 0; } if (((boyNak == 12) && (girlNak == 23)) || ((boyNak == 12) && (girlNak == 23))) { return 0; } if (((boyNak == 4) && (girlNak == 22)) || ((boyNak == 22) && (girlNak == 4))) { return 0; } return 1; } private int calcVarnaKuta() { int bg = findGrade(boyRasi); int gg = findGrade(girlRasi); if (gg > bg) { return 0; } return 1; } private int findGrade(int rasi) { int grade = 0; switch (rasi) { case 11: case 7: case 3: grade = 4; break; case 4: case 8: case 6: grade = 3; break; case 0: case 2: case 10: grade = 2; break; case 1: case 5: case 9: grade = 1; break; } return grade; } private int calcNadiKuta() { int nadi = FileOps.getFromFile(KutaFile.NadiKuta.file(), girlNak + 1, boyNak + 1); return nadi; } private void calcDoshas() { EnumMap<Planet, Integer> boyPos = boyPlanetaryInfo.getPlanetLocation(); EnumMap<Planet, Integer> girlPos = girlPlanetaryInfo.getPlanetLocation(); EnumMap<Planet, Rasi> boyPlanetRasis = boyPlanetaryInfo.getPlanetRasi(); EnumMap<Planet, Rasi> girlPlanetRasis = girlPlanetaryInfo.getPlanetRasi(); boyDosha = new EnumMap<Planet, Double>(Planet.class); girlDosha = new EnumMap<Planet, Double>(Planet.class); boyDosha.put(Planet.Mars, calcMarsDosha(boyPos.get(Planet.Mars), boyPlanetRasis.get(Planet.Mars))); boyDosha.put(Planet.Sun, calcSunDosha(boyPos.get(Planet.Sun), boyPlanetRasis.get(Planet.Sun))); boyDosha.put(Planet.Saturn, calcSatDosha(boyPos.get(Planet.Saturn), boyPlanetRasis.get(Planet.Saturn))); boyDosha.put(Planet.Ra_Ke, calcRahuKetuDosha(boyPos.get(Planet.Rahu), boyPos.get(Planet.Ketu), boyPlanetRasis.get(Planet.Rahu), boyPlanetRasis.get(Planet.Ketu))); girlDosha.put(Planet.Mars, calcMarsDosha(girlPos.get(Planet.Mars), girlPlanetRasis.get(Planet.Mars))); girlDosha.put(Planet.Sun, calcSunDosha(girlPos.get(Planet.Sun), girlPlanetRasis.get(Planet.Sun))); girlDosha.put(Planet.Saturn, calcSatDosha(girlPos.get(Planet.Saturn), girlPlanetRasis.get(Planet.Saturn))); girlDosha.put(Planet.Ra_Ke, calcRahuKetuDosha(girlPos.get(Planet.Rahu), girlPos.get(Planet.Ketu), girlPlanetRasis.get(Planet.Rahu), girlPlanetRasis.get(Planet.Ketu))); for (Double v : boyDosha.values()) { bDoshaTotal = bDoshaTotal + v; } for (Double v : girlDosha.values()) { gDoshaTotal = gDoshaTotal + v; } } private double calcMarsDosha(int pos, Rasi rasi) { double dosha = 0; if ((pos == 7) || (pos == 8) || (pos == 2) || (pos == 4) || (pos == 12)) { switch (rasi) { case Mesha: case Vrichika: dosha = 60; break; case Vrishabha: case Thula: case Kumbha: dosha = 80; break; case Mithuna: case Kanya: dosha = 90; break; case Kataka: dosha = 100; break; case Simha: case Dhanus: case Meena: dosha = 70; break; case Makara: dosha = 50; break; } if ((pos == 2) || (pos == 4) || (pos == 12)) { dosha = dosha / 2; } } else { dosha = 0; } return dosha; } private double calcSunDosha(int pos, Rasi rasi) { double dosha = 0; if ((pos == 7) || (pos == 8) || (pos == 2) || (pos == 4) || (pos == 12)) { switch (rasi) { case Vrichika: case Dhanus: case Meena: dosha = 35; break; case Vrishabha: case Makara: case Kumbha: dosha = 45; break; case Mesha: dosha = 25; break; case Thula: dosha = 50; break; case Mithuna: case Kataka: case Kanya: dosha = 40; break; case Simha: dosha = 30; break; } if ((pos == 2) || (pos == 4) || (pos == 12)) { dosha = dosha / 2; } } else { dosha = 0; } return dosha; } private double calcSatDosha(int pos, Rasi rasi) { double dosha = 0; if ((pos == 7) || (pos == 8) || (pos == 2) || (pos == 4) || (pos == 12)) { switch (rasi) { case Vrishabha: case Mithuna: case Kanya: dosha = 52.50; break; case Kataka: case Simha: case Vrichika: dosha = 67.50; break; case Mesha: dosha = 75; break; case Thula: dosha = 37.50; break; case Dhanus: case Meena: dosha = 60; break; case Makara: case Kumbha: dosha = 45; break; } if ((pos == 2) || (pos == 4) || (pos == 12)) { dosha = dosha / 2; } } else { dosha = 0; } return dosha; } private double calcRahuKetuDosha(int posRa, int posKe, Rasi rasiRa, Rasi rasiKe) { double rahuDosha = 0; double ketuDosha = 0; if ((posRa == 7) || (posRa == 8) || (posRa == 2) || (posRa == 4) || (posRa == 12)) { switch (rasiRa) { case Mesha: case Kataka: case Simha: case Kumbha: rahuDosha = 67.50; break; case Mithuna: case Kanya: case Dhanus: case Makara: case Meena: case Thula: rahuDosha = 52.50; break; case Vrishabha: rahuDosha = 75; break; case Vrichika: rahuDosha = 37.50; break; } if ((posRa == 2) || (posRa == 4) || (posRa == 12)) { rahuDosha = rahuDosha / 2; } } if ((posKe == 7) || (posKe == 8) || (posKe == 2) || (posKe == 4) || (posKe == 12)) { switch (rasiKe) { case Mesha: case Kataka: case Simha: case Kumbha: ketuDosha = 67.50; break; case Mithuna: case Kanya: case Dhanus: case Makara: case Meena: case Thula: ketuDosha = 52.50; break; case Vrishabha: ketuDosha = 75; break; case Vrichika: ketuDosha = 37.50; break; } if ((posKe == 2) || (posKe == 4) || (posKe == 12)) { ketuDosha = ketuDosha / 2; } } return (rahuDosha + ketuDosha); } private void calcBeejaKshetra() { EnumMap<Planet, Double> boyPlanetPos = boyPlanetaryInfo.getPlanetPosition(); EnumMap<Planet, Double> girlPlanetPos = girlPlanetaryInfo.getPlanetPosition(); double beeja = (boyPlanetPos.get(Planet.Sun) + boyPlanetPos.get(Planet.Venus) + boyPlanetPos.get(Planet.Jupiter)); double kshetra = (girlPlanetPos.get(Planet.Moon) + girlPlanetPos.get(Planet.Mars) + girlPlanetPos.get(Planet.Jupiter)); beejaRasi = Rasi.ofDeg(beeja); beejaPos = beeja % 30; kshetraRasi = Rasi.ofDeg(kshetra); kshetraPos = kshetra % 30; } private Rasi boyRasi() { return Rasi.ofIndex(boyRasi); } private Rasi girlRasi() { return Rasi.ofIndex(girlRasi); } private Nakshathra boyNak() { return Nakshathra.ofIndex(boyNak); } private Nakshathra girlNak() { return Nakshathra.ofIndex(girlNak); } public EnumMap<Kuta, Integer> getKutas() { return kutas; } public PlanetaryInfo getBoyPlanetaryInfo() { return boyPlanetaryInfo; } public PlanetaryInfo getGirlPlanetaryInfo() { return girlPlanetaryInfo; } public BirthData getBoyBirthData() { return boyBirthData; } public BirthData getGirlBirthData() { return girlBirthData; } public String getBoyName() { return boyName; } public String getGirlName() { return girlName; } public Rasi getBoyRasi() { return Rasi.ofIndex(boyRasi); } public Rasi getGirlRasi() { return Rasi.ofIndex(girlRasi); } public Nakshathra getBoyNak() { return Nakshathra.ofIndex(boyNak); } public Nakshathra getGirlNak() { return Nakshathra.ofIndex(girlNak); } public TableData<? extends TableRowData> getKutaTableData() { if (kutaTableData == null) { TableData<TableRowData> kutaData = TableDataFactory.getTableData( constructKutaRows(), Kuta.class); TableData<TableRowData> totalRowData = TableDataFactory .getTableData(constructTotalRow()); kutaTableData = TableDataFactory.getTableData(kutaData, totalRowData); } return kutaTableData; } public boolean hasHoroscope() { return hasHoroscope; } private void constructColumnMetaData() { kutaTableColumnMetaData = new DefaultColumnMetaData( AstrosoftTableColumn.Kuta, AstrosoftTableColumn.KutaGained, AstrosoftTableColumn.MaxKuta){ public Class getColumnClass(AstrosoftTableColumn col) { if (col == AstrosoftTableColumn.Kuta){ return Kuta.class; }else{ return Number.class; } } }; kutaTableColumnMetaData.localizeColumns(); doshaTableColumnMetaData = new DefaultColumnMetaData( AstrosoftTableColumn.Dosha, AstrosoftTableColumn.Boy, AstrosoftTableColumn.Girl){ public Class getColumnClass(AstrosoftTableColumn col) { if (col == AstrosoftTableColumn.Dosha){ return Planet.class; }else{ return Number.class; } } }; doshaTableColumnMetaData.localizeColumns(); infoTableColumnMetaData = new DefaultColumnMetaData( AstrosoftTableColumn.Key, AstrosoftTableColumn.Value, AstrosoftTableColumn.Beeja, AstrosoftTableColumn.Kshetra); infoTableColumnMetaData.setHiddenColumnCount(2); infoTableColumnMetaData.localizeColumns(); } private EnumMap<Kuta, TableRowData> constructKutaRows() { EnumMap<Kuta, TableRowData> rows = new EnumMap<Kuta, TableRowData>( Kuta.class); MapTableRowHelper helper = new MapTableRowHelper( kutaTableColumnMetaData); for (Kuta kuta : Kuta.values()) { rows.put(kuta, helper.createRow(kuta, kutas.get(kuta), kuta .maxValue())); } return rows; } private List<TableRowData> constructTotalRow() { MapTableRow totalRow = new MapTableRow(); totalRow.addColumn(AstrosoftTableColumn.Kuta, DisplayStrings.TOTAL_STR); totalRow.addColumn(AstrosoftTableColumn.KutaGained, totalKutaGained); totalRow.addColumn(AstrosoftTableColumn.MaxKuta, Kuta.totalValue()); List<TableRowData> totalRowData = new ArrayList<TableRowData>(); totalRowData.add(totalRow); return totalRowData; } public static ColumnMetaData getKutaTableColumnMetaData() { return kutaTableColumnMetaData; } public TableData<? extends TableRowData> getBoyInfo() { MapTableRowHelper helper = new MapTableRowHelper( AstrosoftTableColumn.Key, AstrosoftTableColumn.Value, AstrosoftTableColumn.Beeja); if (boyInfo == null) { List<TableRowData> rows = new ArrayList<TableRowData>(); rows.add(helper.createRow(DisplayStrings.BOY_STR, boyName)); if (hasHoroscope) { rows.add(helper.createRow(DisplayStrings.DOB_STR, boyBirthData.birthDayString())); rows.add(helper.createRow(DisplayStrings.TOB_STR, AstroUtil.timeFormat(boyBirthData.birthTime(),true))); rows.add(helper.createRow(DisplayStrings.PLACE_STR, boyBirthData.place())); } rows.add(helper.createRow(DisplayStrings.NAK_STR, boyNak())); rows.add(helper.createRow(DisplayStrings.RASI_STR, boyRasi())); // We have horoscope details if (hasHoroscope) { rows.add(helper.createRow(DisplayStrings.CURR_PD_STR, this.bCurPeriod)); rows.add(helper.createRow(AstrosoftTableColumn.Beeja, this.beejaRasi, this.beejaPos)); } boyInfo = TableDataFactory.getTableData(rows); } return boyInfo; } public TableData<? extends TableRowData> getGirlInfo() { MapTableRowHelper helper = new MapTableRowHelper( AstrosoftTableColumn.Key, AstrosoftTableColumn.Value, AstrosoftTableColumn.Kshetra); if (girlInfo == null) { List<TableRowData> rows = new ArrayList<TableRowData>(); rows.add(helper.createRow(DisplayStrings.GIRL_STR, girlName)); if (hasHoroscope) { rows.add(helper.createRow(DisplayStrings.DOB_STR, girlBirthData.birthDayString())); rows.add(helper.createRow(DisplayStrings.TOB_STR, AstroUtil.timeFormat(girlBirthData.birthTime(),true))); rows.add(helper.createRow(DisplayStrings.PLACE_STR, girlBirthData.place())); } rows.add(helper.createRow(DisplayStrings.NAK_STR, girlNak())); rows.add(helper.createRow(DisplayStrings.RASI_STR, girlRasi())); // We have horoscope details if (hasHoroscope) { rows.add(helper.createRow(DisplayStrings.CURR_PD_STR, gCurPeriod)); rows.add(helper.createRow(AstrosoftTableColumn.Kshetra, kshetraRasi, this.kshetraPos)); } girlInfo = TableDataFactory.getTableData(rows); } return girlInfo; } public static ColumnMetaData getInfoTableColumnMetaData() { return infoTableColumnMetaData; } public TableData<? extends TableRowData> getDoshaTableData() { MapTableRowHelper helper = new MapTableRowHelper( doshaTableColumnMetaData); if (doshaTableData == null) { List<TableRowData> rows = new ArrayList<TableRowData>(); for(Planet p : Planet.doshaPlanets()){ rows.add(helper.createRow(p, this.boyDosha .get(p), this.girlDosha .get(p))); } rows.add(helper.createRow(DisplayStrings.TOTAL_STR, this.bDoshaTotal, this.gDoshaTotal)); doshaTableData = TableDataFactory.getTableData(rows); } return doshaTableData; } public static ColumnMetaData getDoshaTableColumnMetaData() { return doshaTableColumnMetaData; } public void doExport(Exporter e) { e.export(this); } public String getTitle(){ return "Compactibility Report of " + boyName + " and " + girlName; } public String createDocumentName() { return AstroSoft.getPreferences().getAstrosoftFilesDir() + boyName + "_" + girlName + "_" + "_Compactibility.pdf"; } public static void main(String[] args) { /* * Horoscope b = new * Horoscope("Raja",11,12,1980,1,44,77+(44.00/60.00),11+(22.00/60.00),5.5,"Erode"); * Horoscope g = new * Horoscope("V",6,7,1983,2,25,77+(44.00/60.00),11+(22.00/60.00),5.5,"Erode"); Horoscope b = new Horoscope("Elango", 17, 4, 1957, 7, 10, 77 + (44.00 / 60.00), 11 + (22.00 / 60.00), 5.5, "Erode"); // Horoscope b = new // Horoscope("Venkat",29,10,1978,18,0,77+(44.00/60.00),11+(22.00/60.00),5.5,"Erode"); Horoscope g = new Horoscope("Mani", 10, 8, 1960, 5, 30, 77 + (44.00 / 60.00), 11 + (22.00 / 60.00), 5.5, "Erode"); Compactibility c = new Compactibility(b, g); for (Kuta k : Kuta.values()) { System.out.println(k + " Kuta: " + c.kutas.get(k)); } System.out.println("Total Kutas: " + c.totalKutaGained); System.out.println("\n Boy Dosha"); for (Map.Entry e : c.boyDosha.entrySet()) { System.out.println(e.getKey() + " : " + e.getValue()); } System.out.println("\n Girl Dosha"); for (Map.Entry e : c.girlDosha.entrySet()) { System.out.println(e.getKey() + " : " + e.getValue()); } */ int cnt = 0; for (int r1 = 0; r1 < 12; r1++) { int s1 = (r1 / 4) + (r1 * 2); for (int c1 = s1; c1 < (s1 + 3); c1++) { System.out.print(Nakshathra.ofIndex(c1) + " , "); // if (Rasi.ofIndex(r1).equals(Rasi.Makara) && Nakshathra.ofIndex(c1).equals(Nakshathra.Uththiradam)) { if (Rasi.ofIndex(r1).equals(Rasi.Kataka) && Nakshathra.ofIndex(c1).equals(Nakshathra.Ayilyam)) { for (int r2 = 0; r2 < 12; r2++) { int s2 = (r2 / 4) + (r2 * 2); for (int c2 = s2; c2 < (s2 + 3); c2++) { // System.out.println(cnt++ + " - [ " + r1 + " , " + c1 // + " ] [ " + r2 + " , " + c2 + " ]"); Compactibility c = new Compactibility(null, null, Nakshathra .ofIndex(c1), Nakshathra.ofIndex(c2), Rasi .ofIndex(r1), Rasi.ofIndex(r2)); /*for (Kuta k : Kuta.values()) { System.out.print(c.kutas.get(k) + "\n"); }*/ System.out.print(c.totalKutaGained+ " , "); //System.out.print(","); /*if (c.totalKutaGained >= 25){ if (c.totalKutaGained >= 30){ System.out.print("Very Good: "); }else{ System.out.print("Good: "); } System.out.println( Rasi.ofIndex(r2) + " , " + Nakshathra.ofIndex(c2)); }*/ } } } System.out.println(); } } } }