Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
4.7 kB
2
Indexable
Never
import java.util.ArrayList;
import java.util.List;

class E090hrpComGer {
    E090pes e090pes;
    Integer comSup;
    E090hrpComGer repSup;
    E070fil e070fil;
}

class E090pes {
    Integer id;
    E001pes e001pes;
}

class E001pes {
    Integer codPes;
    String apePes;
}

class E070fil {
    Integer id;
}

class HierarchicalTreeNode {
    Representative representative;
    Integer superiorCommissionPercentage;
    List<HierarchicalTreeNode> subordinates = new ArrayList<>();
}

class Representative {
    Integer id;
    Integer code;
    String description;
}

public class HierarchicalTreeBuilder {

    public List<HierarchicalTreeNode> buildHierarchy(Integer representativeId, Integer branchId) {
        // Retrieve root representative based on input representativeId and branchId
        E090hrpComGer rootRecord = retrieveRepresentative(representativeId, branchId);

        // Build hierarchical tree
        List<HierarchicalTreeNode> hierarchy = new ArrayList<>();
        buildSubordinates(rootRecord, hierarchy);

        return hierarchy;
    }

    private void buildSubordinates(E090hrpComGer representativeRecord, List<HierarchicalTreeNode> hierarchy) {
        HierarchicalTreeNode node = new HierarchicalTreeNode();
        node.representative = new Representative();
        node.representative.id = representativeRecord.e090pes.id;
        node.representative.code = representativeRecord.e090pes.e001pes.codPes;
        node.representative.description = representativeRecord.e090pes.e001pes.apePes;
        node.superiorCommissionPercentage = representativeRecord.comSup;

        // Retrieve and add subordinates
        List<E090hrpComGer> subordinatesRecords = retrieveSubordinates(representativeRecord.e090pes.id, representativeRecord.e070fil.id);
        for (E090hrpComGer subRecord : subordinatesRecords) {
            buildSubordinates(subRecord, node.subordinates);
        }

        hierarchy.add(node);

        // If representative has a superior, add its representation
        if (representativeRecord.repSup != null) {
            HierarchicalTreeNode superiorNode = new HierarchicalTreeNode();
            superiorNode.representative = new Representative();
            superiorNode.representative.id = representativeRecord.repSup.e090pes.id;
            superiorNode.representative.code = representativeRecord.repSup.e090pes.e001pes.codPes;
            superiorNode.representative.description = representativeRecord.repSup.e090pes.e001pes.apePes;
            superiorNode.superiorCommissionPercentage = representativeRecord.repSup.comSup;
            superiorNode.subordinates.add(node);

            hierarchy.add(superiorNode);

            // Build superior's superiors
            buildSuperiors(representativeRecord.repSup, superiorNode.subordinates);
        }
    }

    private void buildSuperiors(E090hrpComGer representativeRecord, List<HierarchicalTreeNode> hierarchy) {
        if (representativeRecord.repSup != null) {
            HierarchicalTreeNode node = new HierarchicalTreeNode();
            node.representative = new Representative();
            node.representative.id = representativeRecord.repSup.e090pes.id;
            node.representative.code = representativeRecord.repSup.e090pes.e001pes.codPes;
            node.representative.description = representativeRecord.repSup.e090pes.e001pes.apePes;
            node.superiorCommissionPercentage = representativeRecord.repSup.comSup;
            node.subordinates.addAll(hierarchy);

            hierarchy.clear();
            hierarchy.add(node);

            buildSuperiors(representativeRecord.repSup, node.subordinates);
        }
    }

    private E090hrpComGer retrieveRepresentative(Integer representativeId, Integer branchId) {
        // Code to retrieve the representative based on representativeId and branchId
        // Replace this with your actual data retrieval logic
        return new E090hrpComGer(); // Placeholder
    }

    private List<E090hrpComGer> retrieveSubordinates(Integer representativeId, Integer branchId) {
        // Code to retrieve the list of subordinates based on representativeId and branchId
        // Replace this with your actual data retrieval logic
        return new ArrayList<>(); // Placeholder
    }

    public static void main(String[] args) {
        HierarchicalTreeBuilder builder = new HierarchicalTreeBuilder();
        List<HierarchicalTreeNode> hierarchy = builder.buildHierarchy(123, 456); // Provide representativeId and branchId

        // Print or manipulate the hierarchical tree as needed
    }
}