import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
public class TreeNodeBean {
private String iftSid;
private String ftName;
private String iftPrev;
private String ftPathRaw;
private List<String> ftPathParts;
private Integer kBCount;
private LocalDateTime initTime;
private LocalDateTime modiTime;
private List<TreeNodeBean> children;
private TreeNodeBean() {
this.children = new ArrayList<>();
}
// --- Builder ---
public static class Builder {
private final TreeNodeBean node;
public Builder() {
node = new TreeNodeBean();
}
public Builder id(String iftSid) {
node.iftSid = iftSid;
return this;
}
public Builder name(String ftName) {
node.ftName = ftName;
return this;
}
public Builder parent(String iftPrev) {
node.iftPrev = iftPrev;
return this;
}
public Builder pathRaw(String ftPathRaw) {
node.ftPathRaw = ftPathRaw;
return this;
}
public Builder pathParts(List<String> ftPathParts) {
node.ftPathParts = ftPathParts;
return this;
}
public Builder kbCount(Integer kBCount) {
node.kBCount = kBCount;
return this;
}
public Builder initTime(LocalDateTime initTime) {
node.initTime = initTime;
return this;
}
public Builder modiTime(LocalDateTime modiTime) {
node.modiTime = modiTime;
return this;
}
public TreeNodeBean build() {
return node;
}
}
// --- 方便操作樹狀結構 ---
public TreeNodeBean addChild(TreeNodeBean child) {
this.children.add(child);
return this;
}
public List<TreeNodeBean> getChildren() {
return children;
}
public String getIftSid() { return iftSid; }
public String getFtName() { return ftName; }
public String getIftPrev() { return iftPrev; }
public LocalDateTime getInitTime() { return initTime; }
public LocalDateTime getModiTime() { return modiTime; }
}
aW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVUaW1lOwoKaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CgppbXBvcnQgamF2YS51dGlsLkxpc3Q7CgoKCnB1YmxpYyBjbGFzcyBUcmVlTm9kZUJlYW4gewoKICAgIHByaXZhdGUgU3RyaW5nIGlmdFNpZDsKCiAgICBwcml2YXRlIFN0cmluZyBmdE5hbWU7CgogICAgcHJpdmF0ZSBTdHJpbmcgaWZ0UHJldjsKCiAgICBwcml2YXRlIFN0cmluZyBmdFBhdGhSYXc7CgogICAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gZnRQYXRoUGFydHM7CgogICAgcHJpdmF0ZSBJbnRlZ2VyIGtCQ291bnQ7CgogICAgcHJpdmF0ZSBMb2NhbERhdGVUaW1lIGluaXRUaW1lOwoKICAgIHByaXZhdGUgTG9jYWxEYXRlVGltZSBtb2RpVGltZTsKCgoKICAgIHByaXZhdGUgTGlzdDxUcmVlTm9kZUJlYW4+IGNoaWxkcmVuOwoKCgogICAgcHJpdmF0ZSBUcmVlTm9kZUJlYW4oKSB7CgogICAgICAgIHRoaXMuY2hpbGRyZW4gPSBuZXcgQXJyYXlMaXN0PD4oKTsKCiAgICB9CgoKCiAgICAvLyAtLS0gQnVpbGRlciAtLS0KCiAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEJ1aWxkZXIgewoKICAgICAgICBwcml2YXRlIGZpbmFsIFRyZWVOb2RlQmVhbiBub2RlOwoKCgogICAgICAgIHB1YmxpYyBCdWlsZGVyKCkgewoKICAgICAgICAgICAgbm9kZSA9IG5ldyBUcmVlTm9kZUJlYW4oKTsKCiAgICAgICAgfQoKCgogICAgICAgIHB1YmxpYyBCdWlsZGVyIGlkKFN0cmluZyBpZnRTaWQpIHsKCiAgICAgICAgICAgIG5vZGUuaWZ0U2lkID0gaWZ0U2lkOwoKICAgICAgICAgICAgcmV0dXJuIHRoaXM7CgogICAgICAgIH0KCgoKICAgICAgICBwdWJsaWMgQnVpbGRlciBuYW1lKFN0cmluZyBmdE5hbWUpIHsKCiAgICAgICAgICAgIG5vZGUuZnROYW1lID0gZnROYW1lOwoKICAgICAgICAgICAgcmV0dXJuIHRoaXM7CgogICAgICAgIH0KCgoKICAgICAgICBwdWJsaWMgQnVpbGRlciBwYXJlbnQoU3RyaW5nIGlmdFByZXYpIHsKCiAgICAgICAgICAgIG5vZGUuaWZ0UHJldiA9IGlmdFByZXY7CgogICAgICAgICAgICByZXR1cm4gdGhpczsKCiAgICAgICAgfQoKCgogICAgICAgIHB1YmxpYyBCdWlsZGVyIHBhdGhSYXcoU3RyaW5nIGZ0UGF0aFJhdykgewoKICAgICAgICAgICAgbm9kZS5mdFBhdGhSYXcgPSBmdFBhdGhSYXc7CgogICAgICAgICAgICByZXR1cm4gdGhpczsKCiAgICAgICAgfQoKCgogICAgICAgIHB1YmxpYyBCdWlsZGVyIHBhdGhQYXJ0cyhMaXN0PFN0cmluZz4gZnRQYXRoUGFydHMpIHsKCiAgICAgICAgICAgIG5vZGUuZnRQYXRoUGFydHMgPSBmdFBhdGhQYXJ0czsKCiAgICAgICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgICB9CgoKCiAgICAgICAgcHVibGljIEJ1aWxkZXIga2JDb3VudChJbnRlZ2VyIGtCQ291bnQpIHsKCiAgICAgICAgICAgIG5vZGUua0JDb3VudCA9IGtCQ291bnQ7CgogICAgICAgICAgICByZXR1cm4gdGhpczsKCiAgICAgICAgfQoKCgogICAgICAgIHB1YmxpYyBCdWlsZGVyIGluaXRUaW1lKExvY2FsRGF0ZVRpbWUgaW5pdFRpbWUpIHsKCiAgICAgICAgICAgIG5vZGUuaW5pdFRpbWUgPSBpbml0VGltZTsKCiAgICAgICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgICB9CgoKCiAgICAgICAgcHVibGljIEJ1aWxkZXIgbW9kaVRpbWUoTG9jYWxEYXRlVGltZSBtb2RpVGltZSkgewoKICAgICAgICAgICAgbm9kZS5tb2RpVGltZSA9IG1vZGlUaW1lOwoKICAgICAgICAgICAgcmV0dXJuIHRoaXM7CgogICAgICAgIH0KCgoKICAgICAgICBwdWJsaWMgVHJlZU5vZGVCZWFuIGJ1aWxkKCkgewoKICAgICAgICAgICAgcmV0dXJuIG5vZGU7CgogICAgICAgIH0KCiAgICB9CgoKCiAgICAvLyAtLS0g5pa55L6/5pON5L2c5qi554uA57WQ5qeLIC0tLQoKICAgIHB1YmxpYyBUcmVlTm9kZUJlYW4gYWRkQ2hpbGQoVHJlZU5vZGVCZWFuIGNoaWxkKSB7CgogICAgICAgIHRoaXMuY2hpbGRyZW4uYWRkKGNoaWxkKTsKCiAgICAgICAgcmV0dXJuIHRoaXM7CgogICAgfQoKCgogICAgcHVibGljIExpc3Q8VHJlZU5vZGVCZWFuPiBnZXRDaGlsZHJlbigpIHsKCiAgICAgICAgcmV0dXJuIGNoaWxkcmVuOwoKICAgIH0KCgoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0SWZ0U2lkKCkgeyByZXR1cm4gaWZ0U2lkOyB9CgogICAgcHVibGljIFN0cmluZyBnZXRGdE5hbWUoKSB7IHJldHVybiBmdE5hbWU7IH0KCiAgICBwdWJsaWMgU3RyaW5nIGdldElmdFByZXYoKSB7IHJldHVybiBpZnRQcmV2OyB9CgogICAgcHVibGljIExvY2FsRGF0ZVRpbWUgZ2V0SW5pdFRpbWUoKSB7IHJldHVybiBpbml0VGltZTsgfQoKICAgIHB1YmxpYyBMb2NhbERhdGVUaW1lIGdldE1vZGlUaW1lKCkgeyByZXR1cm4gbW9kaVRpbWU7IH0KCn0K