1 package org.kuali.ole.serviceimpl;
2
3 import org.kuali.ole.OleSRUConstants;
4 import org.kuali.ole.bo.explain.*;
5 import org.kuali.ole.handler.OleSRUExplainOperationHandler;
6 import org.kuali.ole.service.OleDiagnosticsService;
7 import org.kuali.ole.service.OleExplainOperationService;
8 import org.kuali.rice.core.api.config.property.Config;
9 import org.kuali.rice.core.api.config.property.ConfigContext;
10
11 import java.util.Map;
12
13
14
15
16
17
18
19
20 public class OleExplainOperationServiceImpl implements OleExplainOperationService {
21
22
23 public OleSRUExplainOperationHandler oleSRUExplainOperationHandler;
24 public OleDiagnosticsService oleDiagnosticsService;
25 private Config currentContextConfig;
26
27 public OleExplainOperationServiceImpl() {
28 oleSRUExplainOperationHandler = new OleSRUExplainOperationHandler();
29 oleDiagnosticsService = new OleDiagnosticsServiceImpl();
30 }
31
32
33
34
35
36
37
38 public String getExplainResponse(Map reqParamMap) {
39 OleSRUExplainResponse oleSRUExplainResponse = new OleSRUExplainResponse();
40 oleSRUExplainResponse.setVersion((String) reqParamMap.get(OleSRUConstants.VERSION));
41 OleSRUExplainRecord oleSRUExplainRecord = getExplainRecord(reqParamMap);
42 oleSRUExplainResponse.setRecord(oleSRUExplainRecord);
43 if (OleSRUConstants.RECORD_PACK_XML.equalsIgnoreCase((String) reqParamMap.get(OleSRUConstants.RECORD_PACKING))) {
44 String explainXML = oleSRUExplainOperationHandler.toXML(oleSRUExplainResponse);
45 String styleSheet = (String) reqParamMap.get(OleSRUConstants.STYLE_SHEET);
46 if (styleSheet != null) {
47 explainXML = explainXML.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n <?xml-stylesheet type=\"text/xsl\" href=\"" + styleSheet + "\"?>");
48 }
49 return explainXML;
50 } else if (OleSRUConstants.RECORD_PACK_STRING.equalsIgnoreCase((String) reqParamMap.get(OleSRUConstants.RECORD_PACKING))) {
51 return oleSRUExplainResponse.toString();
52 }
53 return null;
54 }
55
56
57
58
59
60
61 public OleSRUExplainRecord getExplainRecord(Map reqParamMap) {
62 OleSRUExplainRecord oleSRUExplainRecord = new OleSRUExplainRecord();
63 oleSRUExplainRecord.setRecordPacking(OleSRUConstants.RECORD_PACK_XML);
64 oleSRUExplainRecord.setRecordSchema(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_RECORD_SCHEMA));
65 OleSRUExplainRecordData oleSRUExplainRecordData = getExplainRecordData(reqParamMap);
66 oleSRUExplainRecord.setRecordData(oleSRUExplainRecordData);
67 return oleSRUExplainRecord;
68 }
69
70 private Config getCurrentContextConfig() {
71 if (null == currentContextConfig) {
72 currentContextConfig = ConfigContext.getCurrentContextConfig();
73 }
74 return currentContextConfig;
75 }
76
77 public void setCurrentContextConfig(Config currentContextConfig) {
78 this.currentContextConfig = currentContextConfig;
79 }
80
81
82
83
84
85
86 public OleSRUExplainRecordData getExplainRecordData(Map reqParamMap) {
87 OleSRUExplainRecordData oleSRUExplainRecordData = new OleSRUExplainRecordData();
88 OleSRUExplainOperation oleSRUExplainOperation = new OleSRUExplainOperation();
89 OleSRUExplainServerInfo oleSRUExplainServerInfo = getExplainServerInfo();
90 OleSRUExplainDatabaseInfo oleSRUExplainDatabaseInfo = getExplainDatabaseInfo();
91 OleSRUExplainConfigurationInfo oleSRUExplainConfigurationInfo = getExplainConfigInfo();
92 OleSRUExplainIndexInfo oleSRUExplainIndexInfo = getExplainIndexInfo();
93 OleSRUExplainSchemaInfo oleSRUExplainSchemaInfo = getExplainSchemaInfo();
94 oleSRUExplainOperation.setServerInfo(oleSRUExplainServerInfo);
95 oleSRUExplainOperation.setDatabaseInfo(oleSRUExplainDatabaseInfo);
96 oleSRUExplainOperation.setIndexInfo(oleSRUExplainIndexInfo);
97 oleSRUExplainOperation.setSchemaInfo(oleSRUExplainSchemaInfo);
98 oleSRUExplainOperation.setConfigInfo(oleSRUExplainConfigurationInfo);
99 if (reqParamMap.containsKey(OleSRUConstants.EXTRA_REQ_DATA_KEY))
100 oleSRUExplainOperation.setExtraRequestData(getExtraReqDataInfo(reqParamMap));
101 oleSRUExplainRecordData.setExplain(oleSRUExplainOperation);
102 return oleSRUExplainRecordData;
103 }
104
105
106
107
108
109
110 public OleSRUExplainServerInfo getExplainServerInfo() {
111 OleSRUExplainServerInfo oleSRUExplainServerInfo = new OleSRUExplainServerInfo();
112 oleSRUExplainServerInfo.setDatabase(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SERVER_DATABASE_INFO));
113 oleSRUExplainServerInfo.setHost(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SERVER_HOST));
114 oleSRUExplainServerInfo.setMethod(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SERVER_METHOD));
115 oleSRUExplainServerInfo.setPort(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SERVER_PORT));
116 oleSRUExplainServerInfo.setProtocol(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SERVER_PROTOCOL));
117 oleSRUExplainServerInfo.setTransport(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SERVER_TRANSPORT));
118 oleSRUExplainServerInfo.setVersion(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SERVER_VERSION));
119 oleSRUExplainServerInfo.setValue("");
120 return oleSRUExplainServerInfo;
121 }
122
123
124
125
126
127
128 public OleSRUExplainDatabaseInfo getExplainDatabaseInfo() {
129 OleSRUExplainDatabaseInfo oleSRUExplainDatabaseInfo = new OleSRUExplainDatabaseInfo();
130 OleSRUExplainDatabaseTitle oleSRUExplainDatabaseTitle = new OleSRUExplainDatabaseTitle();
131 oleSRUExplainDatabaseTitle.setLang(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_DATABASE_LANG));
132 oleSRUExplainDatabaseTitle.setPrimary(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_DATABASE_PRIMARY));
133 oleSRUExplainDatabaseTitle.setValue("");
134 oleSRUExplainDatabaseInfo.setTitle(oleSRUExplainDatabaseTitle);
135 return oleSRUExplainDatabaseInfo;
136 }
137
138
139
140
141
142
143 public OleSRUExplainIndexInfo getExplainIndexInfo() {
144 OleSRUExplainIndexInfo oleSRUExplainIndexInfo = new OleSRUExplainIndexInfo();
145 OleSRUExplainIndex oleSRUExplainIndex = new OleSRUExplainIndex();
146 OleSRUExplainIndexSet oleSRUExplainIndexSet = new OleSRUExplainIndexSet();
147 oleSRUExplainIndexSet.setName(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_INDEX_SET_NAME));
148 oleSRUExplainIndexSet.setIdentifier(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_INDEX_SET_IDENTIFIER));
149 OleSRUExplainIndexMapName oleSRUExplainIndexMapName = new OleSRUExplainIndexMapName();
150 oleSRUExplainIndexMapName.setSet(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_INDEX_MAP_NAME_SET));
151 oleSRUExplainIndexMapName.setValue(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_INDEX_MAP_NAME_VALUE));
152 OleSRUExplainIndexMap oleSRUExplainIndexMap = new OleSRUExplainIndexMap();
153 oleSRUExplainIndexMap.setName(oleSRUExplainIndexMapName);
154 oleSRUExplainIndex.setIndexMap(oleSRUExplainIndexMap);
155 oleSRUExplainIndexInfo.setIndex(oleSRUExplainIndex);
156 oleSRUExplainIndexInfo.setSet(oleSRUExplainIndexSet);
157
158
159 oleSRUExplainIndexSet.setValue("");
160 return oleSRUExplainIndexInfo;
161 }
162
163
164
165
166
167
168 public OleSRUExplainSchemaInfo getExplainSchemaInfo() {
169 OleSRUExplainSchemaInfo oleSRUExplainSchemaInfo = new OleSRUExplainSchemaInfo();
170 OleSRUExplainSchema oleSRUExplainSchema = new OleSRUExplainSchema();
171 oleSRUExplainSchema.setTitle(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SCHEMA_TITLE));
172 oleSRUExplainSchema.setName(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SCHEMA_NAME));
173 oleSRUExplainSchema.setIdentifier(getCurrentContextConfig().getProperty(OleSRUConstants.EXPLAIN_SCHEMA_IDENTIFIER));
174 oleSRUExplainSchema.setValue("");
175 oleSRUExplainSchemaInfo.setSchema(oleSRUExplainSchema);
176 return oleSRUExplainSchemaInfo;
177 }
178
179
180
181
182
183
184 public OleSRUExplainConfigurationInfo getExplainConfigInfo() {
185 OleSRUExplainConfigurationInfo oleSRUExplainConfigurationInfo = new OleSRUExplainConfigurationInfo();
186 OleSRUExplainConfigDefaultTagField oleSRUExplainConfigDefaultTagField = new OleSRUExplainConfigDefaultTagField();
187 OleSRUExplainConfigSettingTagField oleSRUExplainConfigSettingTagField = new OleSRUExplainConfigSettingTagField();
188 OleSRUExplainConfigSupportTagField oleSRUExplainConfigSupportTagField = new OleSRUExplainConfigSupportTagField();
189 oleSRUExplainConfigDefaultTagField.setType("numberOfRecords");
190 oleSRUExplainConfigDefaultTagField.setValue(Integer.parseInt(getCurrentContextConfig().getProperty(OleSRUConstants.STARTRECORD)));
191 oleSRUExplainConfigurationInfo.setDefaultValue(oleSRUExplainConfigDefaultTagField);
192 oleSRUExplainConfigSettingTagField.setType("maximumRecords");
193 oleSRUExplainConfigSettingTagField.setValue(Integer.parseInt(getCurrentContextConfig().getProperty(OleSRUConstants.MAXRECORD)));
194 oleSRUExplainConfigurationInfo.setSetting(oleSRUExplainConfigSettingTagField);
195 oleSRUExplainConfigSupportTagField.setType("proximity");
196 oleSRUExplainConfigSupportTagField.setValue("");
197 oleSRUExplainConfigurationInfo.setSupports(oleSRUExplainConfigSupportTagField);
198 return oleSRUExplainConfigurationInfo;
199 }
200
201 public String getExtraReqDataInfo(Map reqParamMap) {
202
203 return "<theo:" + reqParamMap.get(OleSRUConstants.EXTRA_REQ_DATA_KEY) + " xmlns:theo=\"" + getCurrentContextConfig().getProperty(OleSRUConstants.EXTRA_REQ_DATA_XML_NAMESPACE) + "\">\n" +
204 reqParamMap.get(OleSRUConstants.EXTRA_REQ_DATA_VALUE) + "\n" +
205 "</theo:" + reqParamMap.get(OleSRUConstants.EXTRA_REQ_DATA_KEY) + ">";
206 }
207
208 }