diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java | 59 | ||||
-rw-r--r-- | client/trunk/src/com/fourisland/instadisc/Item/SubscriptionFile.java | 69 |
2 files changed, 87 insertions, 41 deletions
diff --git a/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java b/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java index 5895c10..07b5b28 100644 --- a/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java +++ b/client/trunk/src/com/fourisland/instadisc/InstaDiscThread.java | |||
@@ -27,26 +27,32 @@ public class InstaDiscThread implements Runnable { | |||
27 | } | 27 | } |
28 | 28 | ||
29 | public void run() { | 29 | public void run() { |
30 | try { | 30 | try |
31 | { | ||
31 | ServerSocket svr = new ServerSocket(); | 32 | ServerSocket svr = new ServerSocket(); |
32 | java.net.InetSocketAddress addr = new java.net.InetSocketAddress(4444); | 33 | java.net.InetSocketAddress addr = new java.net.InetSocketAddress(4444); |
33 | svr.bind(addr); | 34 | svr.bind(addr); |
34 | Runtime.getRuntime().addShutdownHook(new Thread(new CloseServerSocketThread(svr))); | 35 | Runtime.getRuntime().addShutdownHook(new Thread(new CloseServerSocketThread(svr))); |
35 | while (!cancelled) { | 36 | while (!cancelled) |
36 | try { | 37 | { |
38 | try | ||
39 | { | ||
37 | Socket s = svr.accept(); | 40 | Socket s = svr.accept(); |
38 | HandleItemThread hit = new HandleItemThread(s); | 41 | HandleItemThread hit = new HandleItemThread(s); |
39 | Thread hitt = new Thread(hit); | 42 | Thread hitt = new Thread(hit); |
40 | hitt.start(); | 43 | hitt.start(); |
41 | } catch (SocketException ex) { | 44 | } catch (SocketException ex) |
45 | { | ||
42 | cancel(); | 46 | cancel(); |
43 | } catch (Exception ex) { | 47 | } catch (Exception ex) |
48 | { | ||
44 | cancel(); | 49 | cancel(); |
45 | Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex); | 50 | Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex); |
46 | } | 51 | } |
47 | } | 52 | } |
48 | svr.close(); | 53 | svr.close(); |
49 | } catch (IOException ex) { | 54 | } catch (IOException ex) |
55 | { | ||
50 | Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex); | 56 | Logger.getLogger(InstaDiscThread.class.getName()).log(Level.SEVERE, null, ex); |
51 | } | 57 | } |
52 | 58 | ||
@@ -56,62 +62,77 @@ public class InstaDiscThread implements Runnable { | |||
56 | class HandleItemThread implements Runnable { | 62 | class HandleItemThread implements Runnable { |
57 | 63 | ||
58 | Socket s; | 64 | Socket s; |
59 | 65 | ||
60 | public HandleItemThread(Socket s) { | 66 | public HandleItemThread(Socket s) { |
61 | this.s = s; | 67 | this.s = s; |
62 | } | 68 | } |
63 | 69 | ||
64 | public void run() { | 70 | public void run() { |
65 | try { | 71 | try |
72 | { | ||
66 | InputStream is = s.getInputStream(); | 73 | InputStream is = s.getInputStream(); |
67 | int buffer[] = new int[1000]; | 74 | int buffer[] = new int[1000]; |
68 | int rs = 0; | 75 | int rs = 0; |
69 | int i = 0; | 76 | int i = 0; |
70 | 77 | ||
71 | while (rs != -1) { | 78 | while (rs != -1) |
72 | try { | 79 | { |
80 | try | ||
81 | { | ||
73 | rs = is.read(); | 82 | rs = is.read(); |
74 | 83 | ||
75 | if (rs != -1) { | 84 | if (rs != -1) |
85 | { | ||
76 | buffer[i] = rs; | 86 | buffer[i] = rs; |
77 | } | 87 | } |
78 | i++; | 88 | i++; |
79 | } catch (IOException ex) { | 89 | } catch (SocketException ex) |
90 | { | ||
91 | return; | ||
92 | } catch (IOException ex) | ||
93 | { | ||
80 | Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex); | 94 | Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex); |
81 | } | 95 | } |
82 | } | 96 | } |
83 | 97 | ||
84 | StringBuilder result = new StringBuilder(); | 98 | StringBuilder result = new StringBuilder(); |
85 | int j = 0; | 99 | int j = 0; |
86 | for (j = 0; j < i; j++) { | 100 | for (j = 0; j < i; j++) |
101 | { | ||
87 | result.append(Character.toString((char) buffer[j])); | 102 | result.append(Character.toString((char) buffer[j])); |
88 | } | 103 | } |
89 | 104 | ||
90 | String[] headers = result.toString().split("\n"); | 105 | String[] headers = result.toString().split("\n"); |
91 | HashMap<String, String> headerMap = new HashMap<String, String>(); | 106 | HashMap<String, String> headerMap = new HashMap<String, String>(); |
92 | i = 0; | 107 | i = 0; |
93 | while (1 == 1) { | 108 | while (1 == 1) |
94 | try { | 109 | { |
110 | try | ||
111 | { | ||
95 | String[] nameVal = headers[i].split(": "); | 112 | String[] nameVal = headers[i].split(": "); |
96 | String name = nameVal[0]; | 113 | String name = nameVal[0]; |
97 | String value = nameVal[1].trim().replace("__INSTADISC__", ": "); | 114 | String value = nameVal[1].trim().replace("__INSTADISC__", ": "); |
98 | headerMap.put(name, value); | 115 | headerMap.put(name, value); |
99 | } catch (Exception ex) { | 116 | } catch (Exception ex) |
117 | { | ||
100 | break; | 118 | break; |
101 | } | 119 | } |
102 | i++; | 120 | i++; |
103 | } | 121 | } |
104 | 122 | ||
105 | //Logger.getLogger(HandleItemThread.class.getName()).log(Level.INFO, headerMap.toString()); | 123 | //Logger.getLogger(HandleItemThread.class.getName()).log(Level.INFO, headerMap.toString()); |
106 | try { | 124 | try |
125 | { | ||
107 | s.close(); | 126 | s.close(); |
108 | } catch (IOException ex) { | 127 | } catch (IOException ex) |
128 | { | ||
109 | Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex); | 129 | Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex); |
110 | } | 130 | } |
111 | 131 | ||
112 | Item idI = new Item(headerMap); | 132 | Item idI = new Item(headerMap); |
113 | idI.start(); | 133 | idI.start(); |
114 | } catch (IOException ex) { | 134 | } catch (IOException ex) |
135 | { | ||
115 | Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex); | 136 | Logger.getLogger(HandleItemThread.class.getName()).log(Level.SEVERE, null, ex); |
116 | } | 137 | } |
117 | } | 138 | } |
diff --git a/client/trunk/src/com/fourisland/instadisc/Item/SubscriptionFile.java b/client/trunk/src/com/fourisland/instadisc/Item/SubscriptionFile.java index fc91eaf..d9ed348 100644 --- a/client/trunk/src/com/fourisland/instadisc/Item/SubscriptionFile.java +++ b/client/trunk/src/com/fourisland/instadisc/Item/SubscriptionFile.java | |||
@@ -28,19 +28,23 @@ public class SubscriptionFile { | |||
28 | 28 | ||
29 | public SubscriptionFile(URL url, JLabel status) { | 29 | public SubscriptionFile(URL url, JLabel status) { |
30 | status.setText("Checking...."); | 30 | status.setText("Checking...."); |
31 | try { | 31 | try |
32 | { | ||
32 | HttpURLConnection urc = (HttpURLConnection) url.openConnection(); | 33 | HttpURLConnection urc = (HttpURLConnection) url.openConnection(); |
33 | Thread th = new Thread(new SubscriptionFileThread(urc, status)); | 34 | Thread th = new Thread(new SubscriptionFileThread(urc, status)); |
34 | th.start(); | 35 | th.start(); |
35 | } catch (FileNotFoundException ex) { | 36 | } catch (FileNotFoundException ex) |
37 | { | ||
36 | status.setText("Error: Subscription File doesn't exist"); | 38 | status.setText("Error: Subscription File doesn't exist"); |
37 | } catch (IOException ex) { | 39 | } catch (IOException ex) |
40 | { | ||
38 | Logger.getLogger(SubscriptionFile.class.getName()).log(Level.SEVERE, null, ex); | 41 | Logger.getLogger(SubscriptionFile.class.getName()).log(Level.SEVERE, null, ex); |
39 | } | 42 | } |
40 | } | 43 | } |
41 | 44 | ||
42 | public static void deleteSubscription(Subscription s, boolean deleteFromData) { | 45 | public static void deleteSubscription(Subscription s, boolean deleteFromData) { |
43 | if (deleteFromData) { | 46 | if (deleteFromData) |
47 | { | ||
44 | Wrapper.deleteSubscription(s.getURL()); | 48 | Wrapper.deleteSubscription(s.getURL()); |
45 | } | 49 | } |
46 | 50 | ||
@@ -50,8 +54,10 @@ public class SubscriptionFile { | |||
50 | 54 | ||
51 | int i = 0; | 55 | int i = 0; |
52 | Filter f[] = Wrapper.getAllFilter(); | 56 | Filter f[] = Wrapper.getAllFilter(); |
53 | for (i = 0; i < f.length; i++) { | 57 | for (i = 0; i < f.length; i++) |
54 | if (f[i].getSubscription().equals(s.getURL())) { | 58 | { |
59 | if (f[i].getSubscription().equals(s.getURL())) | ||
60 | { | ||
55 | Wrapper.deleteFilter(f[i].getID()); | 61 | Wrapper.deleteFilter(f[i].getID()); |
56 | } | 62 | } |
57 | } | 63 | } |
@@ -70,49 +76,61 @@ class SubscriptionFileThread implements Runnable { | |||
70 | 76 | ||
71 | public void run() { | 77 | public void run() { |
72 | InputStream is = null; | 78 | InputStream is = null; |
73 | try { | 79 | try |
80 | { | ||
74 | is = urc.getInputStream(); | 81 | is = urc.getInputStream(); |
75 | int[] buffer = new int[1000]; | 82 | int[] buffer = new int[1000]; |
76 | int rs = 0; | 83 | int rs = 0; |
77 | int i = 0; | 84 | int i = 0; |
78 | 85 | ||
79 | while (rs != -1) { | 86 | while (rs != -1) |
80 | try { | 87 | { |
88 | try | ||
89 | { | ||
81 | rs = is.read(); | 90 | rs = is.read(); |
82 | 91 | ||
83 | if (rs != -1) { | 92 | if (rs != -1) |
93 | { | ||
84 | buffer[i] = rs; | 94 | buffer[i] = rs; |
85 | } | 95 | } |
86 | i++; | 96 | i++; |
87 | } catch (IOException ex) { | 97 | } catch (IOException ex) |
98 | { | ||
88 | Logger.getLogger(SubscriptionFileThread.class.getName()).log(Level.SEVERE, null, ex); | 99 | Logger.getLogger(SubscriptionFileThread.class.getName()).log(Level.SEVERE, null, ex); |
89 | } | 100 | } |
90 | } | 101 | } |
91 | 102 | ||
92 | StringBuilder result = new StringBuilder(); | 103 | StringBuilder result = new StringBuilder(); |
93 | int j = 0; | 104 | int j = 0; |
94 | for (j = 0; j < i; j++) { | 105 | for (j = 0; j < i; j++) |
106 | { | ||
95 | result.append(Character.toString((char) buffer[j])); | 107 | result.append(Character.toString((char) buffer[j])); |
96 | } | 108 | } |
97 | 109 | ||
98 | String[] headers = result.toString().split("\n"); | 110 | String[] headers = result.toString().split("\n"); |
99 | HashMap<String, String> headerMap = new HashMap<String, String>(); | 111 | HashMap<String, String> headerMap = new HashMap<String, String>(); |
100 | i = 0; | 112 | i = 0; |
101 | while (1 == 1) { | 113 | while (1 == 1) |
102 | try { | 114 | { |
115 | try | ||
116 | { | ||
103 | String[] nameVal = headers[i].split(": "); | 117 | String[] nameVal = headers[i].split(": "); |
104 | String name = nameVal[0]; | 118 | String name = nameVal[0]; |
105 | String value = nameVal[1].trim(); | 119 | String value = nameVal[1].trim(); |
106 | headerMap.put(name, value); | 120 | headerMap.put(name, value); |
107 | } catch (Exception ex) { | 121 | } catch (Exception ex) |
122 | { | ||
108 | break; | 123 | break; |
109 | } | 124 | } |
110 | i++; | 125 | i++; |
111 | } | 126 | } |
112 | 127 | ||
113 | if (headerMap.containsKey("Subscription")) { | 128 | if (headerMap.containsKey("Subscription")) |
114 | if (headerMap.containsKey("Title")) { | 129 | { |
115 | if (headerMap.containsKey("Category")) { | 130 | if (headerMap.containsKey("Title")) |
131 | { | ||
132 | if (headerMap.containsKey("Category")) | ||
133 | { | ||
116 | Subscription s = new Subscription(); | 134 | Subscription s = new Subscription(); |
117 | s.setURL(headerMap.get("Subscription")); | 135 | s.setURL(headerMap.get("Subscription")); |
118 | s.setTitle(headerMap.get("Title")); | 136 | s.setTitle(headerMap.get("Title")); |
@@ -134,12 +152,19 @@ class SubscriptionFileThread implements Runnable { | |||
134 | } else { | 152 | } else { |
135 | status.setText("Error: Subscription file is not well-formed"); | 153 | status.setText("Error: Subscription file is not well-formed"); |
136 | } | 154 | } |
137 | } catch (IOException ex) { | 155 | } catch (FileNotFoundException ex) |
156 | { | ||
157 | status.setText("Error: Subscription File doesn't exist"); | ||
158 | } catch (IOException ex) | ||
159 | { | ||
138 | Logger.getLogger(SubscriptionFileThread.class.getName()).log(Level.SEVERE, null, ex); | 160 | Logger.getLogger(SubscriptionFileThread.class.getName()).log(Level.SEVERE, null, ex); |
139 | } finally { | 161 | } finally |
140 | try { | 162 | { |
163 | try | ||
164 | { | ||
141 | is.close(); | 165 | is.close(); |
142 | } catch (IOException ex) { | 166 | } catch (IOException ex) |
167 | { | ||
143 | Logger.getLogger(SubscriptionFileThread.class.getName()).log(Level.SEVERE, null, ex); | 168 | Logger.getLogger(SubscriptionFileThread.class.getName()).log(Level.SEVERE, null, ex); |
144 | } | 169 | } |
145 | } | 170 | } |