9e50059972cd96a477f926465c6dc53754a9e578
[controller.git] / opendaylight / sal / yang-prototype / sal / sal-core-demo / src / main / java / org / opendaylight / controller / sal / demo / SALDemo.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.controller.sal.demo;\r
9 \r
10 import java.io.BufferedReader;\r
11 import java.io.IOException;\r
12 import java.io.InputStreamReader;\r
13 \r
14 import org.opendaylight.controller.sal.core.impl.BrokerImpl;\r
15 import org.opendaylight.controller.sal.core.impl.NotificationModule;\r
16 \r
17 \r
18 import org.slf4j.Logger;\r
19 import org.slf4j.LoggerFactory;\r
20 \r
21 public class SALDemo {\r
22     protected static final Logger logger = LoggerFactory\r
23         .getLogger(SALDemo.class);\r
24 \r
25     static BrokerImpl broker;\r
26     static DemoProviderImpl provider;\r
27     static DemoConsumerImpl consumer1;\r
28     static DemoConsumerImpl consumer2;\r
29 \r
30     public static void main(String[] args) {\r
31 \r
32         initialize();\r
33         initializeProvider();\r
34         displayHelp();\r
35 \r
36         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));\r
37         String s;\r
38         try {\r
39             while (true) {\r
40 \r
41                 System.out.print("\nEnter your choice (0 - list): ");\r
42                 s = in.readLine();\r
43                 int choice = Integer.parseInt(s.trim());\r
44                 try {\r
45                     switch (choice) {\r
46                     case 0:\r
47                         displayHelp();\r
48                         break;\r
49                     case 1:\r
50                         registerProvider();\r
51                         break;\r
52                     case 2:\r
53                         registerConsumer1();\r
54                         break;\r
55                     case 3:\r
56                         registerConsumer2();\r
57                         break;\r
58                     case 4:\r
59                         sendAlert(in);\r
60                         break;\r
61                     case 5:\r
62                         sendChange(in);\r
63                         break;\r
64                     case 6:\r
65                         unregisterConsumer1();\r
66                         break;\r
67                     case 7:\r
68                         unregisterConsumer2();\r
69                         break;\r
70                     case 8:\r
71                         unregisterProvider();\r
72                         break;\r
73                     case 9:\r
74                         return;\r
75                     default:\r
76                         System.out.println("Please enter valid input.");\r
77                         break;\r
78                     }\r
79                 } catch (Exception e) {\r
80                     System.out\r
81                             .println("Operation failed. Reason exception raised: "\r
82                                     + e.getClass().getSimpleName());\r
83                     System.out.println("   Message: " + e.getMessage());\r
84                 }\r
85 \r
86             }\r
87         } catch (IOException e) {\r
88 \r
89             logger.error("",e);\r
90         }\r
91     }\r
92 \r
93     private static void registerConsumer1() {\r
94         broker.registerConsumer(consumer1);\r
95     }\r
96 \r
97     private static void registerConsumer2() {\r
98         broker.registerConsumer(consumer2);\r
99     }\r
100 \r
101     private static void sendAlert(BufferedReader in) throws IOException {\r
102         System.out.print("Please enter notification content:");\r
103         String content = in.readLine();\r
104         provider.sendAlertNotification(content);\r
105     }\r
106 \r
107     private static void sendChange(BufferedReader in) throws IOException {\r
108         System.out.print("Please enter notification content:");\r
109         String content = in.readLine();\r
110         provider.sendChangeNotification(content);\r
111     }\r
112 \r
113     private static void unregisterConsumer1() {\r
114         consumer1.closeSession();\r
115     }\r
116 \r
117     private static void unregisterConsumer2() {\r
118         consumer2.closeSession();\r
119     }\r
120 \r
121     private static void unregisterProvider() {\r
122         provider.closeSession();\r
123     }\r
124 \r
125     private static void displayHelp() {\r
126         System.out.println("Usage: ");\r
127         System.out.println("  0) Display Help");\r
128         System.out.println("  1) Register Provider");\r
129         System.out.println("  2) Register Consumer 1 (listening on alert)");\r
130         System.out\r
131                 .println("  3) Register Consumer 2 (listening on alert,change)");\r
132         System.out.println("  4) Send Alert Notification");\r
133         System.out.println("  5) Send Change Notification");\r
134         System.out.println("  6) Unregister Consumer 1");\r
135         System.out.println("  7) Unregister Consumer 2");\r
136         System.out.println("  8) Unregister Provider");\r
137         System.out.println("  9) Exit");\r
138 \r
139     }\r
140 \r
141     private static void initializeProvider() {\r
142         provider = new DemoProviderImpl();\r
143     }\r
144 \r
145     private static void initialize() {\r
146         System.out.println("Initializing broker");\r
147         broker = new BrokerImpl();\r
148         NotificationModule notifyModule = new NotificationModule();\r
149         broker.addModule(notifyModule);\r
150 \r
151         consumer1 = new DemoConsumerImpl("Consumer 1");\r
152         consumer2 = new DemoConsumerImpl("Consumer 2");\r
153         consumer2.setChangeAware(true);\r
154     }\r
155 \r
156     private static void registerProvider() {\r
157         broker.registerProvider(provider);\r
158     }\r
159 }\r