void appendSingleResult(IConstWorkUnit *wu, const char *resultname, const char *username, const char *pw) { StringBufferAdaptor resultXML(buffer); Owned<IResultSetFactory> factory = getResultSetFactory(username, pw); Owned<INewResultSet> nr = factory->createNewResultSet(wu->queryWuid(), 0, resultname); getResultXml(resultXML, nr.get(), resultname, 0, 0, NULL); }
bool WsEclWuInfo::getWsResource(const char *name, StringBuffer &out) { if (strieq(name, "SOAP")) { out.appendf("<message name=\"%s\">", queryname.sget()); IConstWUResultIterator &vars = ensureWorkUnit()->getVariables(); Owned<IResultSetFactory> resultSetFactory(getResultSetFactory(username, password)); ForEach(vars) { IConstWUResult &var = vars.query(); SCMStringBuffer varname; var.getResultName(varname); int seq = var.getResultSequence(); WUResultFormat fmt = var.getResultFormat(); SCMStringBuffer eclschema; var.getResultEclSchema(eclschema); SCMStringBuffer s; Owned<IResultSetMetaData> meta = resultSetFactory->createResultSetMeta(&var); if (!var.isResultScalar()) { meta->getXmlSchema(s, false); out.appendf("<part name=\"%s\" type=\"tns:XmlDataSet\" />", varname.str()); } else { meta->getColumnEclType(s, 0); DisplayType dt = meta->getColumnDisplayType(0); StringAttr ptype; switch (dt) { case TypeBoolean: ptype.set("xsd:boolean"); break; case TypeInteger: ptype.set("xsd:integer"); break; case TypeUnsignedInteger: ptype.set("xsd:integer"); break; case TypeReal: ptype.set("xsd:real"); break; case TypeSet: ptype.set("tns:EspStringArray"); break; case TypeDataset: case TypeData: ptype.set("tns:XmlDataSet"); break; case TypeUnicode: case TypeString: ptype.set("xsd:string"); break; case TypeUnknown: case TypeBeginIfBlock: case TypeEndIfBlock: case TypeBeginRecord: default: ptype.set("xsd:string"); break; } out.appendf("<part name=\"%s\" type=\"%s\" />", varname.str(), ptype.sget()); } } out.append("</message>"); }