28#include "OSCommonUtil.h"
39using std::ostringstream;
63 std::ostringstream outStr;
65 const char dirsep=
'\\';
67 const char dirsep=
'/';
71 xsltDir = dirsep ==
'/' ?
"../stylesheets/" :
"..\\stylesheets\\";
73 xsltDir =
"../stylesheets/";
76 cout <<
"in OSrLWriter" << endl;
79 outStr <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ;
80 outStr <<
"<?xml-stylesheet type=\"text/xsl\" href=\"";
82 outStr <<
"OSrL.xslt\"?>";
84 outStr <<
"<osrl xmlns=\"os.optimizationservices.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
85 outStr <<
"xsi:schemaLocation=\"os.optimizationservices.org http://www.optimizationservices.org/schemas/";
87 outStr <<
"/OSrL.xsd\" >" ;
90 cout <<
"output <general>" << endl;
93 outStr <<
"<general>" << endl;
94 if(
m_OSResult->general->generalStatus != NULL){
95 outStr <<
"<generalStatus " ;
96 if(
m_OSResult->general->generalStatus->type.length() > 0){
98 outStr <<
m_OSResult->general->generalStatus->type ;
101 if(
m_OSResult->general->generalStatus->description.length() > 0){
103 outStr <<
m_OSResult->general->generalStatus->description ;
106 outStr <<
"/>" << endl;
109 if(
m_OSResult->general->serviceURI.length() > 0){
110 outStr <<
"<serviceURI>" +
m_OSResult->general->serviceURI +
"</serviceURI>" << endl;
113 if(
m_OSResult->general->serviceName.length() > 0){
114 outStr <<
"<serviceName>" +
m_OSResult->general->serviceName +
"</serviceName>" << endl;
116 if(
m_OSResult->general->instanceName.length() > 0){
117 outStr <<
"<instanceName>" +
m_OSResult->general->instanceName +
"</instanceName>" << endl;
120 outStr <<
"<jobID>" +
m_OSResult->general->jobID +
"</jobID>" << endl;
122 if(
m_OSResult->general->message.length() > 0){
123 outStr <<
"<message>" +
m_OSResult->general->message +
"</message>" << endl;
125 outStr <<
"</general>" << endl;
128 cout <<
"output <system>" << endl;
133 cout <<
"output <service>" << endl;
138 cout <<
"output <job>" << endl;
141 outStr <<
"<job>" << endl;
142 if (
m_OSResult->job->timingInformation != NULL)
143 if (
m_OSResult->job->timingInformation->numberOfTimes > 0)
144 { outStr <<
"<timingInformation numberOfTimes=\"";
145 outStr <<
m_OSResult->job->timingInformation->numberOfTimes <<
"\">" << endl;
146 for (i=0; i<
m_OSResult->job->timingInformation->numberOfTimes; i++)
147 { outStr <<
"<time ";
148 if (
m_OSResult->job->timingInformation->time[i]->type !=
"")
149 outStr <<
"type=\"" <<
m_OSResult->job->timingInformation->time[i]->type <<
"\" ";
150 if (
m_OSResult->job->timingInformation->time[i]->unit !=
"")
151 outStr <<
"unit=\"" <<
m_OSResult->job->timingInformation->time[i]->unit <<
"\" ";
152 if (
m_OSResult->job->timingInformation->time[i]->category !=
"")
153 outStr <<
"category=\"" <<
m_OSResult->job->timingInformation->time[i]->category <<
"\" ";
154 if (
m_OSResult->job->timingInformation->time[i]->description !=
"")
155 outStr <<
"description=\"" <<
m_OSResult->job->timingInformation->time[i]->description <<
"\" ";
156 outStr <<
">" << endl;
158 outStr <<
"</time>" << endl;
160 outStr <<
"</timingInformation>" << endl;
162 outStr <<
"</job>" << endl;
165 cout <<
"output <optimization>" << endl;
168 outStr <<
"<optimization " ;
169 outStr <<
"numberOfSolutions=\"";
170 outStr <<
m_OSResult->optimization->numberOfSolutions ;
172 outStr <<
" numberOfVariables=\"";
173 outStr <<
m_OSResult->optimization->numberOfVariables ;
175 outStr <<
" numberOfConstraints=\"";
176 outStr <<
m_OSResult->optimization->numberOfConstraints ;
178 outStr <<
" numberOfObjectives=\"";
179 outStr <<
m_OSResult->optimization->numberOfObjectives ;
181 outStr <<
">" << endl;
183 for(i = 0; i <
m_OSResult->optimization->numberOfSolutions; i++){
184 if(
m_OSResult->optimization->solution[i] != NULL){
185 outStr <<
"<solution" ;
186 outStr <<
" targetObjectiveIdx=\"";
187 outStr <<
m_OSResult->optimization->solution[i]->targetObjectiveIdx ;
189 outStr <<
">" << endl;
190 if(
m_OSResult->optimization->solution[i]->status != NULL){
192 if(
m_OSResult->optimization->solution[i]->status->type.length() > 0){
193 outStr <<
" type=\"";
194 outStr <<
m_OSResult->optimization->solution[i]->status->type;
197 if(
m_OSResult->optimization->solution[i]->status->description.length() > 0){
198 outStr <<
" description=\"";
199 outStr <<
m_OSResult->optimization->solution[i]->status->description;
202 outStr <<
"/>" << endl;
204 if(
m_OSResult->optimization->solution[i]->message !=
""){
205 outStr <<
"<message>" << endl;
206 outStr <<
m_OSResult->optimization->solution[i]->message << endl;
207 outStr <<
"</message>" << endl;
209 if(
m_OSResult->optimization->solution[i]->variables != NULL){
210 outStr <<
"<variables ";
211 if (
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults > 0)
212 outStr <<
"numberOfOtherVariableResults=\"" <<
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults <<
"\"";
213 outStr <<
">" << endl;
214 if(
m_OSResult->optimization->solution[i]->variables->values != NULL){
216 cout <<
"output <variables> <values>" << endl;
218 outStr <<
"<values numberOfVar=\"" <<
m_OSResult->optimization->solution[i]->variables->values->numberOfVar <<
"\">" << endl;
219 for(j = 0; j <
m_OSResult->optimization->solution[i]->variables->values->numberOfVar; j++){
220 if(
m_OSResult->optimization->solution[i]->variables->values->var[j] != NULL){
226 outStr <<
"</var>" << endl;
229 outStr <<
"</values>" << endl;
232 cout <<
"output <variables> <other>" << endl;
234 if(
m_OSResult->optimization->solution[i]->variables->other != NULL){
235 if(
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults > 0){
236 for(
int k = 0; k <
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults; k++){
238 cout <<
" numberOfVar=\"";
239 cout <<
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfVar;
242 cout <<
m_OSResult->optimization->solution[i]->variables->other[k]->name;
245 cout <<
m_OSResult->optimization->solution[i]->variables->other[k]->value;
247 cout <<
" description=\"";
248 cout <<
m_OSResult->optimization->solution[i]->variables->other[k]->description;
253 outStr <<
" numberOfVar=\"";
254 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfVar;
256 if (
m_OSResult->optimization->solution[i]->variables->other[k]->name !=
"")
258 outStr <<
" name=\"";
259 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->name;
262 if (
m_OSResult->optimization->solution[i]->variables->other[k]->value !=
"")
264 outStr <<
" value=\"";
265 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->value;
268 if (
m_OSResult->optimization->solution[i]->variables->other[k]->description !=
"")
270 outStr <<
" description=\"";
271 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->description;
274 outStr <<
">" << endl;
275 if(
m_OSResult->optimization->solution[i]->variables->other[k]->var.size() > 0){
276 for(j = 0; j <
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfVar; j++){
277 if(
m_OSResult->optimization->solution[i]->variables->other[k]->var.size() > 0){
282 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->var[j]->value;
283 outStr <<
"</var>" << endl;
287 outStr <<
"</other>" << endl;
291 outStr <<
"</variables>" << endl;
296 if(
m_OSResult->optimization->solution[i]->objectives != NULL){
297 outStr <<
"<objectives ";
298 if (
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults > 0)
299 outStr <<
"numberOfOtherObjectiveResults=\"" <<
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults <<
"\"";
300 outStr <<
">" << endl;
302 cout <<
"output <objectives> <values>" << endl;
304 if(
m_OSResult->optimization->solution[i]->objectives->values != NULL){
305 outStr <<
"<values numberOfObj=\"" <<
m_OSResult->optimization->solution[i]->objectives->values->numberOfObj <<
"\">" << endl;
306 for(j = 0; j <
m_OSResult->optimization->solution[i]->objectives->values->numberOfObj; j++){
307 if(
m_OSResult->optimization->solution[i]->objectives->values->obj[j] != NULL){
313 outStr <<
"</obj>" << endl;
316 outStr <<
"</values>" << endl;
319 cout <<
"output <objectives> <other>" << endl;
321 if(
m_OSResult->optimization->solution[i]->objectives->other != NULL){
322 if(
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults > 0){
323 for(
int k = 0; k <
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults; k++){
325 outStr <<
" name=\"";\
326 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->name;
328 outStr <<
" description=\"";
329 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->description;
331 outStr <<
">" << endl;
332 if(
m_OSResult->optimization->solution[i]->objectives->other[k]->obj.size() > 0){
333 for(j = 0; j <
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfObj; j++){
334 if(
m_OSResult->optimization->solution[i]->objectives->other[k]->obj.size() > 0){
339 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->obj[j]->value;
340 outStr <<
"</obj>" << endl;
344 outStr <<
"</other>" << endl;
348 outStr <<
"</objectives>" << endl;
350 if(
m_OSResult->optimization->solution[i]->constraints != NULL){
351 outStr <<
"<constraints ";
352 if (
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults > 0)
353 outStr <<
"numberOfOtherConstraintResults=\"" <<
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults <<
"\"";
354 outStr <<
">" << endl;
356 cout <<
"output <constraints> <dualValues>" << endl;
358 if(
m_OSResult->optimization->solution[i]->constraints->dualValues != NULL){
359 outStr <<
"<dualValues numberOfCon=\"" <<
m_OSResult->optimization->solution[i]->constraints->dualValues->numberOfCon <<
"\">" << endl;
360 for(j = 0; j <
m_OSResult->optimization->solution[i]->constraints->dualValues->numberOfCon; j++){
361 if(
m_OSResult->optimization->solution[i]->constraints->dualValues->con[j] != NULL){
367 outStr <<
"</con>" << endl;
370 outStr <<
"</dualValues>" << endl;
373 cout <<
"output <constraints> <other>" << endl;
375 if(
m_OSResult->optimization->solution[i]->constraints->other != NULL){
376 if(
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults > 0){
377 for(
int k = 0; k <
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults; k++){
379 outStr <<
" name=\"";\
380 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->name;
382 outStr <<
" description=\"";
383 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->description;
385 outStr <<
">" << endl;
386 if(
m_OSResult->optimization->solution[i]->constraints->other[k]->con.size() > 0){
387 for(j = 0; j <
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfCon; j++){
388 if(
m_OSResult->optimization->solution[i]->constraints->other[k]->con.size() > 0){
393 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->con[j]->value;
394 outStr <<
"</con>" << endl;
398 outStr <<
"</other>" << endl;
402 outStr <<
"</constraints>" << endl;
404 outStr <<
"</solution>" << endl;
407 outStr <<
"</optimization>" << endl;
410 cout <<
"done" << endl;
412 outStr <<
"</osrl>" << endl ;
std::string os_dtoa_format(double x)
std::string writeOSrL(OSResult *theosresult)
create an osrl string from an OSResult object
OSResult * m_OSResult
m_OSResult is an object in the class OSResult, the data in m_OSResult are written to a string that va...
~OSrLWriter()
Class destructor.
OSrLWriter()
Default constructor.
#define OS_SCHEMA_VERSION