返回列表 上一筆 下一筆

📄 資料內容

public List<TreeNodeBean> transformTree(String userType) throws Exception {

    WsGetTreeSubdirResponseWsGetTreeSubdirResult result =

            service.wsGetTreeSubdir(strValidCode, 1, channelMap.get(userType), 0);



    MessageElement[] anyArray = result.get_any();

    if (anyArray == null || anyArray.length == 0) {

        return List.of();

    }



    // 1) 取第一個 MessageElement (其實就是 <diffgr:diffgram>)

    MessageElement diffgram = anyArray[0];



    // 2) 找內層 <TreeSubdir>

    NodeList list = diffgram.getElementsByTagName("TreeSubdir");

    if (list == null || list.getLength() == 0) {

        LOGGER.warn("找不到任何 TreeSubdir 節點");

        return List.of();

    }



    // 3) flat list

    List<TreeNodeBean> flatList = new ArrayList<>(list.getLength());

    for (int i = 0; i < list.getLength(); i++) {

        Element e = (Element) list.item(i);



        String sftPath  = getChildText(e, "sft_path");

        String iftSid   = getChildText(e, "ift_sid");

        String sftName  = getChildText(e, "sft_name");

        String iKBCount = getChildText(e, "iKBCount");

        String dInit    = getChildText(e, "dinit_time");

        String dModi    = getChildText(e, "dmodi_time");

        String iftPrev  = getChildText(e, "ift_prev");



        TreeNodeBean child = new TreeNodeBean.Builder()

                .ftSid(iftSid)

                .ftName(sftName)

                .parent(iftPrev)

                .pathRaw(sftPath)

                .pathParts(splitPathSafe(sftPath))

                .kBCount(parseIntOrNull(iKBCount))

                .initTime(parseDateTimeSafely(dInit, FORMATTER))

                .modiTime(parseDateTimeSafely(dModi, FORMATTER))

                .build();



        flatList.add(child);

    }



    // 4) 建樹

    List<TreeNodeBean> roots = TreeUtils.buildTree(flatList);



    return roots.isEmpty() ? List.of() : roots.get(0).getChildren();

}

🔐 Base64 編碼內容

cHVibGljIExpc3Q8VHJlZU5vZGVCZWFuPiB0cmFuc2Zvcm1UcmVlKFN0cmluZyB1c2VyVHlwZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CgogICAgV3NHZXRUcmVlU3ViZGlyUmVzcG9uc2VXc0dldFRyZWVTdWJkaXJSZXN1bHQgcmVzdWx0ID0KCiAgICAgICAgICAgIHNlcnZpY2Uud3NHZXRUcmVlU3ViZGlyKHN0clZhbGlkQ29kZSwgMSwgY2hhbm5lbE1hcC5nZXQodXNlclR5cGUpLCAwKTsKCgoKICAgIE1lc3NhZ2VFbGVtZW50W10gYW55QXJyYXkgPSByZXN1bHQuZ2V0X2FueSgpOwoKICAgIGlmIChhbnlBcnJheSA9PSBudWxsIHx8IGFueUFycmF5Lmxlbmd0aCA9PSAwKSB7CgogICAgICAgIHJldHVybiBMaXN0Lm9mKCk7CgogICAgfQoKCgogICAgLy8gMSkg5Y+W56ys5LiA5YCLIE1lc3NhZ2VFbGVtZW50ICjlhbblr6blsLHmmK8gPGRpZmZncjpkaWZmZ3JhbT4pCgogICAgTWVzc2FnZUVsZW1lbnQgZGlmZmdyYW0gPSBhbnlBcnJheVswXTsKCgoKICAgIC8vIDIpIOaJvuWFp+WxpCA8VHJlZVN1YmRpcj4KCiAgICBOb2RlTGlzdCBsaXN0ID0gZGlmZmdyYW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRyZWVTdWJkaXIiKTsKCiAgICBpZiAobGlzdCA9PSBudWxsIHx8IGxpc3QuZ2V0TGVuZ3RoKCkgPT0gMCkgewoKICAgICAgICBMT0dHRVIud2Fybigi5om+5LiN5Yiw5Lu75L2VIFRyZWVTdWJkaXIg56+A6bueIik7CgogICAgICAgIHJldHVybiBMaXN0Lm9mKCk7CgogICAgfQoKCgogICAgLy8gMykgZmxhdCBsaXN0CgogICAgTGlzdDxUcmVlTm9kZUJlYW4+IGZsYXRMaXN0ID0gbmV3IEFycmF5TGlzdDw+KGxpc3QuZ2V0TGVuZ3RoKCkpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5nZXRMZW5ndGgoKTsgaSsrKSB7CgogICAgICAgIEVsZW1lbnQgZSA9IChFbGVtZW50KSBsaXN0Lml0ZW0oaSk7CgoKCiAgICAgICAgU3RyaW5nIHNmdFBhdGggID0gZ2V0Q2hpbGRUZXh0KGUsICJzZnRfcGF0aCIpOwoKICAgICAgICBTdHJpbmcgaWZ0U2lkICAgPSBnZXRDaGlsZFRleHQoZSwgImlmdF9zaWQiKTsKCiAgICAgICAgU3RyaW5nIHNmdE5hbWUgID0gZ2V0Q2hpbGRUZXh0KGUsICJzZnRfbmFtZSIpOwoKICAgICAgICBTdHJpbmcgaUtCQ291bnQgPSBnZXRDaGlsZFRleHQoZSwgImlLQkNvdW50Iik7CgogICAgICAgIFN0cmluZyBkSW5pdCAgICA9IGdldENoaWxkVGV4dChlLCAiZGluaXRfdGltZSIpOwoKICAgICAgICBTdHJpbmcgZE1vZGkgICAgPSBnZXRDaGlsZFRleHQoZSwgImRtb2RpX3RpbWUiKTsKCiAgICAgICAgU3RyaW5nIGlmdFByZXYgID0gZ2V0Q2hpbGRUZXh0KGUsICJpZnRfcHJldiIpOwoKCgogICAgICAgIFRyZWVOb2RlQmVhbiBjaGlsZCA9IG5ldyBUcmVlTm9kZUJlYW4uQnVpbGRlcigpCgogICAgICAgICAgICAgICAgLmZ0U2lkKGlmdFNpZCkKCiAgICAgICAgICAgICAgICAuZnROYW1lKHNmdE5hbWUpCgogICAgICAgICAgICAgICAgLnBhcmVudChpZnRQcmV2KQoKICAgICAgICAgICAgICAgIC5wYXRoUmF3KHNmdFBhdGgpCgogICAgICAgICAgICAgICAgLnBhdGhQYXJ0cyhzcGxpdFBhdGhTYWZlKHNmdFBhdGgpKQoKICAgICAgICAgICAgICAgIC5rQkNvdW50KHBhcnNlSW50T3JOdWxsKGlLQkNvdW50KSkKCiAgICAgICAgICAgICAgICAuaW5pdFRpbWUocGFyc2VEYXRlVGltZVNhZmVseShkSW5pdCwgRk9STUFUVEVSKSkKCiAgICAgICAgICAgICAgICAubW9kaVRpbWUocGFyc2VEYXRlVGltZVNhZmVseShkTW9kaSwgRk9STUFUVEVSKSkKCiAgICAgICAgICAgICAgICAuYnVpbGQoKTsKCgoKICAgICAgICBmbGF0TGlzdC5hZGQoY2hpbGQpOwoKICAgIH0KCgoKICAgIC8vIDQpIOW7uuaouQoKICAgIExpc3Q8VHJlZU5vZGVCZWFuPiByb290cyA9IFRyZWVVdGlscy5idWlsZFRyZWUoZmxhdExpc3QpOwoKCgogICAgcmV0dXJuIHJvb3RzLmlzRW1wdHkoKSA/IExpc3Qub2YoKSA6IHJvb3RzLmdldCgwKS5nZXRDaGlsZHJlbigpOwoKfQo=
返回列表 上一筆 下一筆