import org.apache.axis.message.MessageElement;
import org.w3c.dom.*;
import java.util.*;
public List<KBAttachDTO> getKBAttachList(int ifqSid, String userType) throws Exception {
List<KBAttachDTO> listOut = new ArrayList<>();
IQKB_XMLSoapProxy service = new IQKB_XMLSoapProxy();
WsGetKBAttachResponseWsGetKBAttachResult result =
service.wsGetKBAttach(strValidCode, 1, channelMap.get(userType), ifqSid);
MessageElement[] anyArr = result.get_any();
// keep original logs
LOGGER.info(vaildLog("### method:getKBAttachList, webservice:wsGetKBAttach"));
LOGGER.info(vaildLog("### req:" + "wsGetKBAttach(" + strValidCode + ", 1, "
+ channelMap.get(userType) + ", " + ifqSid + ")"));
LOGGER.info(vaildLog("### anyData:" + (anyArr != null && anyArr.length > 0 ? anyArr[0] : "null")));
if (anyArr == null || anyArr.length == 0) return listOut;
// 1) find <diffgram>
Element diffgram = null;
for (MessageElement me : anyArr) {
String ln = me.getLocalName();
if ("diffgram".equalsIgnoreCase(ln)) { diffgram = me; break; }
}
if (diffgram == null) return listOut;
// 2) enter <IQKB>
Element dataRoot = firstChildElementByLocalName(diffgram, "IQKB");
if (dataRoot == null) dataRoot = diffgram;
// 3) each row is <KBAttach>
NodeList rows = dataRoot.getElementsByTagName("KBAttach");
if (rows == null || rows.getLength() == 0) return listOut;
for (int i = 0; i < rows.getLength(); i++) {
Element row = (Element) rows.item(i);
KBAttachDTO dto = new KBAttachDTO.Builder()
.ifaaSid(getChildText(row, "ifaa_sid"))
.source(getChildText(row, "sfaa_source"))
.name(getChildText(row, "sfaa_name"))
.webFile(getChildText(row, "sWebFile"))
.size(getChildText(row, "ifaa_size"))
.build();
listOut.add(dto);
}
LOGGER.info("getKBAttachList: rows=" + rows.getLength() + ", mapped=" + listOut.size());
return listOut;
}
aW1wb3J0IG9yZy5hcGFjaGUuYXhpcy5tZXNzYWdlLk1lc3NhZ2VFbGVtZW50OwoKaW1wb3J0IG9yZy53M2MuZG9tLio7CgppbXBvcnQgamF2YS51dGlsLio7CgoKCnB1YmxpYyBMaXN0PEtCQXR0YWNoRFRPPiBnZXRLQkF0dGFjaExpc3QoaW50IGlmcVNpZCwgU3RyaW5nIHVzZXJUeXBlKSB0aHJvd3MgRXhjZXB0aW9uIHsKCiAgICBMaXN0PEtCQXR0YWNoRFRPPiBsaXN0T3V0ID0gbmV3IEFycmF5TGlzdDw+KCk7CgoKCiAgICBJUUtCX1hNTFNvYXBQcm94eSBzZXJ2aWNlID0gbmV3IElRS0JfWE1MU29hcFByb3h5KCk7CgogICAgV3NHZXRLQkF0dGFjaFJlc3BvbnNlV3NHZXRLQkF0dGFjaFJlc3VsdCByZXN1bHQgPQoKICAgICAgICAgICAgc2VydmljZS53c0dldEtCQXR0YWNoKHN0clZhbGlkQ29kZSwgMSwgY2hhbm5lbE1hcC5nZXQodXNlclR5cGUpLCBpZnFTaWQpOwoKCgogICAgTWVzc2FnZUVsZW1lbnRbXSBhbnlBcnIgPSByZXN1bHQuZ2V0X2FueSgpOwoKCgogICAgLy8ga2VlcCBvcmlnaW5hbCBsb2dzCgogICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyBtZXRob2Q6Z2V0S0JBdHRhY2hMaXN0LCB3ZWJzZXJ2aWNlOndzR2V0S0JBdHRhY2giKSk7CgogICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyByZXE6IiArICJ3c0dldEtCQXR0YWNoKCIgKyBzdHJWYWxpZENvZGUgKyAiLCAxLCAiCgogICAgICAgICAgICArIGNoYW5uZWxNYXAuZ2V0KHVzZXJUeXBlKSArICIsICIgKyBpZnFTaWQgKyAiKSIpKTsKCiAgICBMT0dHRVIuaW5mbyh2YWlsZExvZygiIyMjIGFueURhdGE6IiArIChhbnlBcnIgIT0gbnVsbCAmJiBhbnlBcnIubGVuZ3RoID4gMCA/IGFueUFyclswXSA6ICJudWxsIikpKTsKCgoKICAgIGlmIChhbnlBcnIgPT0gbnVsbCB8fCBhbnlBcnIubGVuZ3RoID09IDApIHJldHVybiBsaXN0T3V0OwoKCgogICAgLy8gMSkgZmluZCA8ZGlmZmdyYW0+CgogICAgRWxlbWVudCBkaWZmZ3JhbSA9IG51bGw7CgogICAgZm9yIChNZXNzYWdlRWxlbWVudCBtZSA6IGFueUFycikgewoKICAgICAgICBTdHJpbmcgbG4gPSBtZS5nZXRMb2NhbE5hbWUoKTsKCiAgICAgICAgaWYgKCJkaWZmZ3JhbSIuZXF1YWxzSWdub3JlQ2FzZShsbikpIHsgZGlmZmdyYW0gPSBtZTsgYnJlYWs7IH0KCiAgICB9CgogICAgaWYgKGRpZmZncmFtID09IG51bGwpIHJldHVybiBsaXN0T3V0OwoKCgogICAgLy8gMikgZW50ZXIgPElRS0I+CgogICAgRWxlbWVudCBkYXRhUm9vdCA9IGZpcnN0Q2hpbGRFbGVtZW50QnlMb2NhbE5hbWUoZGlmZmdyYW0sICJJUUtCIik7CgogICAgaWYgKGRhdGFSb290ID09IG51bGwpIGRhdGFSb290ID0gZGlmZmdyYW07CgoKCiAgICAvLyAzKSBlYWNoIHJvdyBpcyA8S0JBdHRhY2g+CgogICAgTm9kZUxpc3Qgcm93cyA9IGRhdGFSb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJLQkF0dGFjaCIpOwoKICAgIGlmIChyb3dzID09IG51bGwgfHwgcm93cy5nZXRMZW5ndGgoKSA9PSAwKSByZXR1cm4gbGlzdE91dDsKCgoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93cy5nZXRMZW5ndGgoKTsgaSsrKSB7CgogICAgICAgIEVsZW1lbnQgcm93ID0gKEVsZW1lbnQpIHJvd3MuaXRlbShpKTsKCgoKICAgICAgICBLQkF0dGFjaERUTyBkdG8gPSBuZXcgS0JBdHRhY2hEVE8uQnVpbGRlcigpCgogICAgICAgICAgICAgICAgLmlmYWFTaWQoZ2V0Q2hpbGRUZXh0KHJvdywgImlmYWFfc2lkIikpCgogICAgICAgICAgICAgICAgLnNvdXJjZShnZXRDaGlsZFRleHQocm93LCAic2ZhYV9zb3VyY2UiKSkKCiAgICAgICAgICAgICAgICAubmFtZShnZXRDaGlsZFRleHQocm93LCAic2ZhYV9uYW1lIikpCgogICAgICAgICAgICAgICAgLndlYkZpbGUoZ2V0Q2hpbGRUZXh0KHJvdywgInNXZWJGaWxlIikpCgogICAgICAgICAgICAgICAgLnNpemUoZ2V0Q2hpbGRUZXh0KHJvdywgImlmYWFfc2l6ZSIpKQoKICAgICAgICAgICAgICAgIC5idWlsZCgpOwoKCgogICAgICAgIGxpc3RPdXQuYWRkKGR0byk7CgogICAgfQoKCgogICAgTE9HR0VSLmluZm8oImdldEtCQXR0YWNoTGlzdDogcm93cz0iICsgcm93cy5nZXRMZW5ndGgoKSArICIsIG1hcHBlZD0iICsgbGlzdE91dC5zaXplKCkpOwoKICAgIHJldHVybiBsaXN0T3V0OwoKfQo=