SDL_Android/SmartDeviceLinkAndroidProxy - added the correct version of the proxy
[profile/ivi/smartdevicelink.git] / SDL_Android / SmartDeviceLinkProxyAndroid / src / com / smartdevicelink / util / DebugTool.java
1 package com.smartdevicelink.util;\r
2 \r
3 import java.util.Vector;\r
4 \r
5 import android.util.Log;\r
6 \r
7 import com.smartdevicelink.exception.SmartDeviceLinkException;\r
8 import com.smartdevicelink.proxy.Version;\r
9 import com.smartdevicelink.transport.SiphonServer;\r
10 \r
11 public class DebugTool {\r
12         \r
13 \r
14         public static final String TAG = "SmartDeviceLinkProxy";\r
15 \r
16         private static boolean isErrorEnabled = false;\r
17         private static boolean isWarningEnabled = false;\r
18         private static boolean isInfoEnabled = false;\r
19         \r
20         public static void enableDebugTool() {\r
21                 isErrorEnabled = true;\r
22                 isWarningEnabled = true;\r
23                 isInfoEnabled = true;\r
24         }\r
25 \r
26         public static void disableDebugTool() {\r
27                 isErrorEnabled = true;\r
28                 isWarningEnabled = false;\r
29                 isInfoEnabled = false;\r
30         }\r
31         \r
32         public static boolean isDebugEnabled() \r
33         {\r
34                 if (isWarningEnabled && isInfoEnabled) return true;\r
35                 \r
36                 return false;           \r
37         }\r
38         \r
39         private static String prependProxyVersionNumberToString(String string) {\r
40                 if (Version.VERSION != null && string != null) {\r
41                         string = Version.VERSION + ": " + string;\r
42                 }\r
43                 \r
44                 return string;\r
45         }\r
46 \r
47         public static void logError(String msg) {\r
48                 \r
49                 Boolean wasWritten = false;\r
50                 \r
51                 msg = prependProxyVersionNumberToString(msg);\r
52                 \r
53                 wasWritten = logToSiphon(msg);\r
54                 \r
55                 if (isErrorEnabled && !wasWritten) {\r
56                         NativeLogTool.logError(TAG, msg);\r
57                 }\r
58         }\r
59 \r
60         public static void logError(String msg, Throwable ex) {\r
61                 Boolean wasWritten = false;\r
62                 \r
63                 msg = prependProxyVersionNumberToString(msg);\r
64                 \r
65                 if (ex != null) {\r
66                         wasWritten = logToSiphon(msg + " Exception String: " + ex.toString());\r
67                 } else {\r
68                         wasWritten = logToSiphon(msg);\r
69                 }\r
70                 \r
71                 if (isErrorEnabled && !wasWritten) {\r
72                         NativeLogTool.logError(TAG, msg, ex);\r
73                 }\r
74         }\r
75         \r
76         public static void logWarning(String msg) {\r
77                 Boolean wasWritten = false;\r
78                 \r
79                 msg = prependProxyVersionNumberToString(msg);\r
80                 \r
81                 wasWritten = logToSiphon(msg);\r
82                 \r
83                 if (isWarningEnabled && !wasWritten) {\r
84                         NativeLogTool.logWarning(TAG, msg);\r
85                 }\r
86         }\r
87 \r
88         public static void logInfo(String msg) {\r
89                 Boolean wasWritten = false;\r
90                 \r
91                 msg = prependProxyVersionNumberToString(msg);\r
92                 \r
93                 wasWritten = logToSiphon(msg);\r
94                 \r
95                 if (isInfoEnabled && !wasWritten) {\r
96                         NativeLogTool.logInfo(TAG, msg);\r
97                 }\r
98         }\r
99 \r
100         public static void logInfo(String msg, boolean bPrependVersion) {\r
101                 Boolean wasWritten = false;\r
102                 \r
103                 if (bPrependVersion) msg = prependProxyVersionNumberToString(msg);\r
104                 \r
105                 wasWritten = logToSiphon(msg);\r
106                 \r
107                 if (isInfoEnabled && !wasWritten) {\r
108                         NativeLogTool.logInfo(TAG, msg);\r
109                 }\r
110         }\r
111         \r
112         protected static Boolean logToSiphon(String msg) {\r
113                 // Initialize the SiphonServer, will be ignored if already initialized\r
114                 SiphonServer.init();\r
115                 \r
116                 // Write to the SiphonServer\r
117                 return SiphonServer.sendSiphonLogData(msg);\r
118         }\r
119 \r
120         protected static String getLine(Throwable ex) {\r
121                 if (ex == null) { return null; }\r
122                 String toPrint = ex.toString() + " :" + ex.getMessage();\r
123                 for (int i=0; i<ex.getStackTrace().length; i++) {\r
124                         StackTraceElement elem = ex.getStackTrace()[i];\r
125                         toPrint += "\n  " + elem.toString();\r
126                 }\r
127                 \r
128                 if (ex instanceof SmartDeviceLinkException) {\r
129                         SmartDeviceLinkException smartDeviceLinkEx = (SmartDeviceLinkException) ex;\r
130                         if (smartDeviceLinkEx.getInnerException() != null && smartDeviceLinkEx != smartDeviceLinkEx.getInnerException()) {\r
131                                 toPrint += "\n  nested:\n";\r
132                                 toPrint += getLine(smartDeviceLinkEx.getInnerException());\r
133                         }\r
134                 }\r
135                 \r
136                 return toPrint;\r
137         }\r
138 \r
139 \r
140         protected static Vector<IConsole> consoleListenerList = new Vector<IConsole>();\r
141 \r
142         protected final static boolean isTransportEnabled = false;\r
143         protected final static boolean isRPCEnabled = false;\r
144 \r
145         public static void addConsole(IConsole console) {\r
146                 synchronized(consoleListenerList) {\r
147                         consoleListenerList.addElement(console);\r
148                 }\r
149         }\r
150 \r
151         public static void removeConsole(IConsole console) {\r
152                 synchronized(consoleListenerList) {\r
153                         consoleListenerList.removeElement(console);\r
154                 }\r
155         }\r
156 \r
157         public static void clearConsoles() {\r
158                 synchronized(consoleListenerList) {\r
159                         consoleListenerList.removeAllElements();\r
160                 }\r
161         }\r
162         \r
163         public static void logTransport(String msg) {\r
164                 if (isTransportEnabled) {\r
165                         Log.d(TAG, msg);\r
166                         logInfoToConsole(msg);\r
167                 }\r
168         }\r
169 \r
170         public static void logRPCSend(String rpcMsg) {\r
171                 if (isRPCEnabled) {\r
172                         Log.d(TAG, "Sending RPC message: " + rpcMsg);\r
173                         logRPCSendToConsole(rpcMsg);\r
174                 }\r
175         }\r
176 \r
177         public static void logRPCReceive(String rpcMsg) {\r
178                 if (isRPCEnabled) {\r
179                         Log.d(TAG, "Received RPC message: " + rpcMsg);\r
180                         logRPCSendToConsole(rpcMsg);\r
181                 }\r
182         }\r
183 \r
184         protected static void logInfoToConsole(String msg) {\r
185                 Vector<IConsole> localList;\r
186                 synchronized(consoleListenerList) {\r
187                         localList = (Vector<IConsole>) consoleListenerList.clone();\r
188                 }\r
189                 \r
190                 for (int i = 0; i < localList.size(); i++) {\r
191                         IConsole consoleListener = (IConsole) localList.elementAt(i);\r
192                         try {\r
193                                 consoleListener.logInfo(msg);\r
194                         } catch (Exception ex) {\r
195                                 Log.e(TAG, "Failure propagating logInfo: " + ex.toString(), ex);\r
196                         } // end-catch\r
197                 }\r
198         }\r
199         \r
200         protected static void logErrorToConsole(String msg) {\r
201                 Vector<IConsole> localList;\r
202                 synchronized(consoleListenerList) {\r
203                         localList = (Vector<IConsole>) consoleListenerList.clone();\r
204                 }\r
205                 for (int i = 0; i < localList.size(); i++) {\r
206                         IConsole consoleListener = (IConsole) localList.elementAt(i);\r
207                         try {\r
208                                 consoleListener.logError(msg);\r
209                         } catch (Exception ex) {\r
210                                 Log.e(TAG, "Failure propagating logError: " + ex.toString(), ex);\r
211                         } // end-catch\r
212                 }\r
213         }\r
214         \r
215         protected static void logErrorToConsole(String msg, Throwable e) {\r
216                 Vector<IConsole> localList;\r
217                 synchronized(consoleListenerList) {\r
218                         localList = (Vector<IConsole>) consoleListenerList.clone();\r
219                 }\r
220                 \r
221                 for (int i = 0; i < localList.size(); i++) {\r
222                         IConsole consoleListener = (IConsole) localList.elementAt(i);\r
223                         try {\r
224                                 consoleListener.logError(msg, e);\r
225                         } catch (Exception ex) {\r
226                                 Log.e(TAG, "Failure propagating logError: " + ex.toString(), ex);\r
227                         } // end-catch\r
228                 }\r
229         }\r
230         \r
231         protected static void logRPCSendToConsole(String msg) {\r
232                 Vector<IConsole> localList;\r
233                 synchronized(consoleListenerList) {\r
234                         localList = (Vector<IConsole>) consoleListenerList.clone();\r
235                 }\r
236                 \r
237                 for (int i = 0; i < localList.size(); i++) {\r
238                         IConsole consoleListener = (IConsole) localList.elementAt(i);\r
239                         try {\r
240                                 consoleListener.logRPCSend(msg);\r
241                         } catch (Exception ex) {\r
242                                 Log.e(TAG, "Failure propagating logRPCSend: " + ex.toString(), ex);\r
243                         } // end-catch\r
244                 }\r
245         }\r
246         \r
247         protected static void logRPCReceiveToConsole(String msg) {\r
248                 Vector<IConsole> localList;\r
249                 synchronized(consoleListenerList) {\r
250                         localList = (Vector<IConsole>) consoleListenerList.clone();\r
251                 }\r
252                 \r
253                 for (int i = 0; i < localList.size(); i++) {\r
254                         IConsole consoleListener = (IConsole) localList.elementAt(i);\r
255                         try {\r
256                                 consoleListener.logRPCReceive(msg);\r
257                         } catch (Exception ex) {\r
258                                 Log.e(TAG, "Failure propagating logRPCReceive: " + ex.toString(), ex);\r
259                         } // end-catch\r
260                 }\r
261         }\r
262 }\r