package fr.orsay.lri.varna.utils; import java.awt.Color; import java.awt.Font; import java.util.ArrayList; import java.util.Formatter; import javax.xml.transform.sax.TransformerHandler; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; import fr.orsay.lri.varna.models.rna.ModeleBase; import fr.orsay.lri.varna.models.rna.RNA; public class XMLUtils { public static String toHTMLNotation(Color c) { Formatter f = new Formatter(); f.format("#%02X%02X%02X", c.getRed(),c.getGreen(),c.getBlue()); return f.toString(); } public static void toXML(TransformerHandler hd, Font f) throws SAXException { toXML(hd, f,""); } public static String XML_BASELIST_ELEMENT_NAME = "baselist"; public static String XML_FONT_ELEMENT_NAME = "font"; public static String XML_ROLE_NAME = "role"; public static String XML_NAME_NAME = "name"; public static String XML_FAMILY_NAME = "family"; public static String XML_STYLE_NAME = "style"; public static String XML_SIZE_NAME = "size"; public static void toXML(TransformerHandler hd, Font f, String role) throws SAXException { AttributesImpl atts = new AttributesImpl(); if (!role.equals("")) atts.addAttribute("","",XML_ROLE_NAME,"CDATA",""+role); atts.addAttribute("","",XML_NAME_NAME,"CDATA",""+f.getName()); //atts.addAttribute("","",XML_FAMILY_NAME,"CDATA",""+f.getFamily()); atts.addAttribute("","",XML_STYLE_NAME,"CDATA",""+f.getStyle()); atts.addAttribute("","",XML_SIZE_NAME,"CDATA",""+f.getSize2D()); hd.startElement("","",XML_FONT_ELEMENT_NAME,atts); hd.endElement("","",XML_FONT_ELEMENT_NAME); } public static Font getFont(String qName, Attributes attributes) { if (qName.equals(XMLUtils.XML_FONT_ELEMENT_NAME)){ int style = Integer.parseInt(attributes.getValue(XMLUtils.XML_STYLE_NAME)); String name = (attributes.getValue(XMLUtils.XML_NAME_NAME)); double size = Double.parseDouble(attributes.getValue(XMLUtils.XML_SIZE_NAME)); Font f = new Font(name, style, (int)size); return f.deriveFont((float)size); } return null; } public static void toXML(TransformerHandler hd, ModeleBase mb) throws SAXException { ArrayList m = new ArrayList(); m.add(mb); toXML(hd, m); } public static void toXML(TransformerHandler hd, ArrayList m) throws SAXException { AttributesImpl atts = new AttributesImpl(); String result = ""; for (ModeleBase mb: m) { if (!result.equals("")) result+= ","; result += mb.getIndex(); } hd.startElement("","",XML_BASELIST_ELEMENT_NAME,atts); exportCDATAString(hd, result); hd.endElement("","",XML_BASELIST_ELEMENT_NAME); } public static ArrayList toModeleBaseArray(String baselist, RNA rna) { ArrayList result = new ArrayList(); String[] data = baselist.trim().split(","); for(int i=0;i