package no.divvun.Analyzer.Communication; import java.util.HashMap; public class XMLRequestFactory { public XMLRequestFactory () {} public static String toXML(InitRequest request) { StringBuffer buffer = new StringBuffer(); printTagStart(buffer, XMLTags.TAG_PARAMETERS, null); printParameters(buffer, request.getParameters()); printTagEnd(buffer, XMLTags.TAG_PARAMETERS); return buffer.toString(); } public static String toXML(AnalyzeRequest request) { StringBuffer buffer = new StringBuffer(); HashMap attribute = new HashMap(); attribute.put(XMLTags.TAG_TOOL, XMLTags.TAG_ANALYZE); printTagStart(buffer, XMLTags.TAG_INPUT, attribute); attribute = new HashMap(); attribute.put(XMLTags.TAG_FORM, request.getWord()); printTagStartEnd(buffer, XMLTags.TAG_WORD, attribute); printTagEnd(buffer, XMLTags.TAG_INPUT); return buffer.toString(); } public static String toXML(ParadigmRequest request) { StringBuffer buffer = new StringBuffer(); HashMap attribute = new HashMap(); attribute.put(XMLTags.TAG_TOOL, XMLTags.TAG_PARADIGM); printTagStart(buffer, XMLTags.TAG_INPUT, attribute); attribute = new HashMap(); attribute.put(XMLTags.TAG_FORM, request.getWord() + " " + request.getPOS()); printTagStartEnd(buffer, XMLTags.TAG_WORD, attribute); printTagEnd(buffer, XMLTags.TAG_INPUT); return buffer.toString(); } public static String toXML(GenerateRequest request) { StringBuffer buffer = new StringBuffer(); HashMap attribute = new HashMap(); attribute.put(XMLTags.TAG_TOOL, XMLTags.TAG_GENERATE); printTagStart(buffer, XMLTags.TAG_INPUT, attribute); attribute = new HashMap(); attribute.put(XMLTags.TAG_FORM, request.getWord()); printTagStartEnd(buffer, XMLTags.TAG_WORD, attribute); printTagEnd(buffer, XMLTags.TAG_INPUT); return buffer.toString(); } public static String toXML(HyphenateRequest request) { StringBuffer buffer = new StringBuffer(); HashMap attributes = new HashMap(); attributes.put(XMLTags.TAG_TOOL, XMLTags.TAG_HYPHENATE); attributes.put(XMLTags.TAG_FILTER, "yes"); printTagStart(buffer, XMLTags.TAG_INPUT, attributes); attributes = new HashMap(); attributes.put(XMLTags.TAG_FORM, request.getWord()); printTagStartEnd(buffer, XMLTags.TAG_WORD, attributes); printTagEnd(buffer, XMLTags.TAG_INPUT); return buffer.toString(); } private static void printParameters(StringBuffer buffer, Parameters param) { if(param.isPreprocess()) { HashMap attributes = new HashMap(); attributes.put(XMLTags.TAG_TOOL, XMLTags.TAG_PREPROCESS); printTagStartEnd(buffer, XMLTags.TAG_ACTION, attributes); } if(param.isAnalyze()) { HashMap attributes = new HashMap(); attributes.put(XMLTags.TAG_TOOL, XMLTags.TAG_ANALYZE); printTagStartEnd(buffer, XMLTags.TAG_ACTION, attributes); } if(param.isHyphenate()) { HashMap attributes = new HashMap(); attributes.put(XMLTags.TAG_TOOL, XMLTags.TAG_HYPHENATE); if(param.isUseFilter()) attributes.put(XMLTags.TAG_FILTER, "yes"); printTagStartEnd(buffer, XMLTags.TAG_ACTION, attributes); } if(param.isDisamb()) { HashMap attributes = new HashMap(); attributes.put(XMLTags.TAG_TOOL, XMLTags.TAG_DISAMB); printTagStartEnd(buffer, XMLTags.TAG_ACTION, attributes); } if(param.isGenerate()) { HashMap attributes = new HashMap(); attributes.put(XMLTags.TAG_TOOL, XMLTags.TAG_GENERATE); if(param.getFst() != null) { attributes.put(XMLTags.TAG_FST, param.getFst()); } printTagStartEnd(buffer, XMLTags.TAG_ACTION, attributes); } if(param.isParadigm()) { HashMap attributes = new HashMap(); attributes.put(XMLTags.TAG_TOOL, XMLTags.TAG_PARADIGM); if(param.getFst() != null) { attributes.put(XMLTags.TAG_FST, param.getFst()); attributes.put(XMLTags.TAG_GRAMMAR, param.getGrammar()); attributes.put(XMLTags.TAG_TAGS, param.getTags()); } printTagStartEnd(buffer, XMLTags.TAG_ACTION, attributes); } if(param.getLang() != null) { printTagStart(buffer, XMLTags.TAG_LANG, null); printData(buffer, param.getLang()); printTagEnd(buffer, XMLTags.TAG_LANG); } // if(param.getFst() != null) { // printTagStart(buffer, XMLTags.TAG_FST, null); // printData(buffer, param.getFst()); // printTagEnd(buffer, XMLTags.TAG_FST); // } if(param.isXml_in()) printTagStartEnd(buffer, XMLTags.TAG_XML_IN, null); if(param.isXml_out()) printTagStartEnd(buffer, XMLTags.TAG_XML_OUT, null); } private static void printHeader(StringBuffer buffer) { buffer.append(XMLTags.TAG_HEADER); } private static void printTagStart(StringBuffer buffer, String tag, HashMap attributes) { buffer.append("<" + tag); if (attributes != null) printAttributes(buffer, attributes); buffer.append(">"); } private static void printTagStartEnd(StringBuffer buffer, String tag, HashMap attributes) { buffer.append("<" + tag); if (attributes != null) printAttributes(buffer, attributes); buffer.append("/>"); } private static void printTagEnd(StringBuffer buffer, String tag) { buffer.append("\n"); } private static void printAttributes(StringBuffer buffer, HashMap attributes) { for (String key : attributes.keySet()) { buffer.append(" " + key + "=\"" + (String)attributes.get(key) + "\""); } } public static void printData(StringBuffer buffer, String data) { buffer.append(data + "\n"); } }