D:\NewZebra\JavaApplications\DesignPatternsProject\src\structural_patterns\composite_tree\StringArrayTreeServices.java
 1 /*
 2  * StringArrayTreeServices.java
 3  *
 4  */
 5 
 6 package structural_patterns.composite_tree;
 7 
 8 /**
 9  *
10  * @author Sam Eldin
11  */
12 
13 
14 import java.io.*;
15 import java.text.*;
16 import java.util.*;
17 
18 public class StringArrayTreeServices extends CompositeNodeServices{
19     
20     
21         String [] nodesNameList = {
22             "Level_1_A",
23             "Level_1_B/Level_2_B/Level_3_B",
24             "Level_1_C/Level_2_C",
25             "Level_1_D",
26             "Level_1_E",
27             "Level_1_F/Level_2_F/Level_3_F/Level_4_F",
28             "Level_1_G",
29             "Level_1_H/Level_2_H/Level_3_H"
30         };
31     
32     /** Creates a new instance of StringArrayTreeServices */
33     public StringArrayTreeServices() {
34     }
35     /*
36      *
37      */
38     public CompositeNode PollingTree(){
39         
40         pollRootNode();
41         //=================================================
42         for(int index = 0; index < nodesNameList.length; index++)
43         {
44             String nodeName = nodesNameList[index];
45             
46                 if(nodeName.indexOf("/") >= 0) {
47                     String childName = "";
48                     String currentParentNodeName = "";
49 
50                     StringTokenizer  stringTokenizerHandle = new StringTokenizer(nodeName, "/", false); 
51                     // the first level is already created
52                     currentParentNodeName = stringTokenizerHandle.nextToken();
53                     CompositeNode  currentParentNode = addNode(CompositeNodeBase.ROOT, 
54                                                         currentParentNodeName, 
55                                                         false, 
56                                                         CompositeNodeBase.DEFAULT_NODE_ID);
57                     CompositeNode tempParent = currentParentNode;
58                     while(stringTokenizerHandle.hasMoreTokens()) {
59                          childName = stringTokenizerHandle.nextToken();
60                          CompositeNode currentChildtNode = addNode(tempParent, 
61                                                                    childName, 
62                                                                    false, 
63                                                                    CompositeNodeBase.DEFAULT_NODE_ID);
64                          tempParent = currentChildtNode;
65                     }
66                 }
67                 else {
68                     CompositeNode aNode = addNode(CompositeNodeBase.ROOT, 
69                                                   nodeName, 
70                                                   false, 
71                                                   CompositeNodeBase.DEFAULT_NODE_ID);
72                 }
73         }        
74         
75         CompositeNode startCompositeNode = CompositeNodeBase.ROOT;
76         //=================================================
77         return(CompositeNodeBase.ROOT);
78     }    
79     /**
80      *
81      */
82      public static void main (String[] args)
83     {
84          StringArrayTreeServices stringArrayTreeServicesHandle   = new StringArrayTreeServices();
85          CompositeNode startCompositeNode = stringArrayTreeServicesHandle.PollingTree();
86          CompositeNode  seacrhNode =   stringArrayTreeServicesHandle.search4Node("Level_2_F", startCompositeNode);
87          int value = stringArrayTreeServicesHandle.deleteNode(seacrhNode);
88          int x = 0;
89          
90     }
91     
92 }
93 
94