Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.90 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.*;
  4.  
  5. public class MyStructure implements IMyStructure {
  6.     private List<INode> nodes;
  7.  
  8.     public MyStructure() {
  9.         this.nodes = new LinkedList<>();
  10.     }
  11.  
  12.     @Override
  13.     public INode findByCode(String code) {
  14.  
  15.         for(INode node : nodes){
  16.  
  17.             if(node instanceof ICompositeNode){
  18.                 if(node.getCode().equals(code))
  19.                     return node;
  20.                 else
  21.                     privFindByCode(code, node);
  22.             }
  23.  
  24.             if(!(node instanceof ICompositeNode))
  25.                 if(node.getCode().equals(code))
  26.                     return node;
  27.         }
  28.  
  29.         return null;
  30.     }
  31.  
  32.     private INode privFindByCode(String code, INode node){
  33.  
  34.             if(node.getCode().equals(code)){
  35.                 return node;
  36.             }
  37.  
  38.             if(node instanceof ICompositeNode) {
  39.                 ((ICompositeNode) node).getNodes().forEach( n->privFindByCode(code, n));
  40.             }
  41.  
  42.         return null;
  43.     }
  44.  
  45.     @Override
  46.     public INode findByRenderer(String renderer) {
  47.         Optional<INode> node = nodes.stream()
  48.                 .filter(n -> n.getRenderer().equals(renderer))
  49.                 .findFirst();
  50.  
  51.         if(node.isPresent())
  52.             return node.get();
  53.         else
  54.             return null;
  55.     }
  56.  
  57.     @Override
  58.     public int count() {
  59.         int size = 0;
  60.         for(INode node : nodes){
  61.  
  62.             if(node instanceof ICompositeNode)
  63.                 size = size + ((ICompositeNode) node).count();
  64.  
  65.             if( !(node instanceof ICompositeNode))
  66.                 size++;
  67.         }
  68.  
  69.         return size;
  70.  
  71.     }
  72.  
  73.     public void addCompositeNode(ICompositeNode node){
  74.         nodes.add(node);
  75.     }
  76.  
  77.     public void addNode(INode node){
  78.         nodes.add(node);
  79.     }
  80.  
  81.     public List<INode> getNodes() {
  82.         return nodes;
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement