/** * YogaCombination.java * Created On 2007, Oct 22, 2007 2:51:25 PM * @author E. Rajasekar */ package app.astrosoft.consts; import java.util.EnumSet; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Node; import org.xml.sax.InputSource; import app.astrosoft.export.XMLHelper; import app.astrosoft.html.Attribute; import app.astrosoft.html.Tag; public enum YogaCombination { AmalaYoga, AnaphaYoga, SunaphaYoga, GajakesariYoga, KemadrumaYoga, ChandraManglaYoga, DhurdhuraYoga, AdhiYoga, ChatussagaraYoga, VasumathiYoga, RajalakshanaYoga, SakataYoga, SubhaVesiYoga, PapaVesiYoga, SubhaVasiYoga, PapaVasiYoga, ObhayachariYoga, HamsaYoga, MalavyaYoga, SasaYoga, RuchakaYoga, BhadraYoga, KusumaYoga, JayaYoga, SivaYoga, ChapaYoga, KahalaYoga, LakshmiYoga, MahabhagyaYoga, BudhaAdityaYoga, SankhaYoga, BheriYoga, SreenathaYoga, GajaYoga, AmsavataraYoga, DevendraYoga, MakutaYoga, VidyutYoga, IndraYoga, RaviYoga, GoYoga, ThrilochanaYoga; private static Set<YogaCombination> negativeYogas = EnumSet.of(SakataYoga,KemadrumaYoga,PapaVesiYoga); private static final Logger log = Logger.getLogger(YogaCombination.class.getName()); private static final String XML_SOURCE = "/resources/YogaCombinations.xml"; private static XPath xpath = XPathFactory.newInstance().newXPath(); private static final Attribute titleColorAttr = new Attribute("color", "#0000FF"); public String getDefinition(){ return getXmlNode(XmlConsts.Definition).getTextContent(); } public String getResults(){ return getXmlNode(XmlConsts.Results).getTextContent(); } private Node getXmlNode(String nodeName){ String expression = "//Astrosoft/YogaCombinations/YogaCombination[@Name='"+ name() + "']"; InputSource inputSource = new InputSource(YogaCombination.class.getResourceAsStream(XML_SOURCE)); Node node = null; try { node = (Node) xpath.evaluate(expression, inputSource, XPathConstants.NODE); } catch (XPathExpressionException e) { log.log(Level.SEVERE, "Exception in queryin xml", e); } if (node != null) { return XMLHelper.getChildNode(node, nodeName); }else{ throw new IllegalArgumentException(nodeName + "is not found in XML"); } } public boolean isPosition(){ return !negativeYogas.contains(this); } public boolean isNegative(){ return negativeYogas.contains(this); } @SuppressWarnings("unchecked") public String getHtmlString(){ Tag html = new Tag("html"); Tag head = new Tag("head"); head.add(generateStyleTag()); html.add(head); Tag body = new Tag("body"); String definition = getDefinition(); String results = getResults(); Tag p1 = new Tag("p"); p1.add(generateTitleTag("Definition:-")); p1.add(definition); Tag p2 = new Tag("p"); p2.add(generateTitleTag("Results:-")); p2.add(results); body.add(p1); body.add(p2); html.add(body); System.out.println(html); return html.toString(); } @SuppressWarnings("unchecked") private static Tag generateStyleTag(){ Tag style = new Tag("style"); style.addAttribute(new Attribute("type" , "text/css")); StringBuffer sb = new StringBuffer(); sb.append("body { \n"); sb.append(" font-family: Tahoma; \n"); sb.append(" font-size: 12pt; \n"); sb.append(" color:#000000; \n"); sb.append(" background:#FFFFFC; \n"); sb.append(" } \n"); style.add(sb.toString()); return style; } @SuppressWarnings("unchecked") private static Tag generateTitleTag(String title){ Tag tf = new Tag("font"); tf.addAttribute(titleColorAttr); Tag b = new Tag("b"); b.add(title); tf.add(b); return tf; } public static void main(String[] args) { System.out.println(AmalaYoga.getResults()); } }