1   package org.kuali.ole.handler;
2   
3   import com.thoughtworks.xstream.XStream;
4   import org.kuali.ole.bo.explain.*;
5   import org.kuali.ole.converters.*;
6   
7   
8   
9   
10  
11  
12  
13  
14  public class OleSRUExplainOperationHandler {
15  
16      
17  
18  
19  
20  
21  
22      public String toXML(OleSRUExplainResponse oleSRUExplainResponse) {
23  
24          StringBuffer stringBuffer = new StringBuffer();
25          stringBuffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
26          stringBuffer.append("\n");
27          XStream xStream = new XStream();
28          xStream.alias("sru:explainResponse", OleSRUExplainResponse.class);
29          xStream.aliasField("sru:version", OleSRUExplainResponse.class, "version");
30          xStream.aliasField("sru:record", OleSRUExplainResponse.class, "record");
31          xStream.aliasField("sru:recordPacking", OleSRUExplainRecord.class, "recordPacking");
32          xStream.aliasField("sru:recordSchema", OleSRUExplainRecord.class, "recordSchema");
33          xStream.aliasField("sru:recordData", OleSRUExplainRecord.class, "recordData");
34          xStream.aliasField("zr:explain", OleSRUExplainRecordData.class, "explain");
35          xStream.aliasField("zr:serverInfo", OleSRUExplainOperation.class, "serverInfo");
36          xStream.aliasField("zr:databaseInfo", OleSRUExplainOperation.class, "databaseInfo");
37          xStream.aliasField("zr:indexInfo", OleSRUExplainOperation.class, "indexInfo");
38          xStream.aliasField("zr:schemaInfo", OleSRUExplainOperation.class, "schemaInfo");
39          xStream.aliasField("zr:configInfo", OleSRUExplainOperation.class, "configInfo");
40          xStream.aliasField("zr:host", OleSRUExplainServerInfo.class, "host");
41          xStream.aliasField("zr:port", OleSRUExplainServerInfo.class, "port");
42          xStream.aliasField("zr:database", OleSRUExplainServerInfo.class, "database");
43          
44          xStream.aliasField("zr:index", OleSRUExplainIndexInfo.class, "index");
45          xStream.aliasField("zr:set", OleSRUExplainIndexInfo.class, "set");
46          xStream.aliasField("zr:map", OleSRUExplainIndex.class, "indexMap");
47          xStream.aliasField("zr:name", OleSRUExplainIndexMap.class, "name");
48          xStream.aliasField("zr:schema", OleSRUExplainSchemaInfo.class, "schema");
49          xStream.aliasField("zr:title", OleSRUExplainSchema.class, "title");
50          xStream.aliasField("zr:default", OleSRUExplainConfigurationInfo.class, "defaultValue");
51          xStream.aliasField("zr:setting", OleSRUExplainConfigurationInfo.class, "setting");
52          xStream.aliasField("zr:supports", OleSRUExplainConfigurationInfo.class, "supports");
53          xStream.registerConverter(new OleSRUExplainServerInfoConverter());
54          xStream.registerConverter(new OleSRUExplainDatabaseInfoConverter());
55          xStream.registerConverter(new OleSRUExplainIndexInfoConverter());
56          xStream.registerConverter(new OleSRUExplainSchemaInfoConverter());
57          xStream.registerConverter(new OleSRUExplainIndexMapNameConverter());
58          xStream.registerConverter(new OleSRUExplainConfigInfoSupportConverter());
59          xStream.registerConverter(new OleSRUExplainConfigInfoSettingConverter());
60          xStream.registerConverter(new OleSRUExplainConfigInfoDefaultConverter());
61          String xml = xStream.toXML(oleSRUExplainResponse);
62          xml = xml.replaceAll("<sru:explainResponse>", "<sru:explainResponse xmlns:sru=\"http://www.loc.gov/zing/srw/\">");
63          xml = xml.replaceAll("<zr:explain>", " <zr:explain xmlns:zr=\"http://explain.z3950.org/dtd/2.1/\">");
64          stringBuffer.append(xml);
65          return stringBuffer.toString();
66      }
67  
68  
69  }