Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.util.*;
- public class MyStructure implements IMyStructure {
- private List<INode> nodes;
- public MyStructure() {
- this.nodes = new LinkedList<>();
- }
- @Override
- public INode findByCode(String code) {
- for(INode node : nodes){
- if(node instanceof ICompositeNode){
- if(node.getCode().equals(code))
- return node;
- else
- privFindByCode(code, node);
- }
- if(!(node instanceof ICompositeNode))
- if(node.getCode().equals(code))
- return node;
- }
- return null;
- }
- private INode privFindByCode(String code, INode node){
- if(node.getCode().equals(code)){
- return node;
- }
- if(node instanceof ICompositeNode) {
- ((ICompositeNode) node).getNodes().forEach( n->privFindByCode(code, n));
- }
- return null;
- }
- @Override
- public INode findByRenderer(String renderer) {
- Optional<INode> node = nodes.stream()
- .filter(n -> n.getRenderer().equals(renderer))
- .findFirst();
- if(node.isPresent())
- return node.get();
- else
- return null;
- }
- @Override
- public int count() {
- int size = 0;
- for(INode node : nodes){
- if(node instanceof ICompositeNode)
- size = size + ((ICompositeNode) node).count();
- if( !(node instanceof ICompositeNode))
- size++;
- }
- return size;
- }
- public void addCompositeNode(ICompositeNode node){
- nodes.add(node);
- }
- public void addNode(INode node){
- nodes.add(node);
- }
- public List<INode> getNodes() {
- return nodes;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement