diff options
Diffstat (limited to 'client/trunk/src')
-rw-r--r-- | client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java | 137 | ||||
-rw-r--r-- | client/trunk/src/com/fourisland/instadisc/Item/WellFormedItem.java | 6 |
2 files changed, 111 insertions, 32 deletions
diff --git a/client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java b/client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java index 3423e97..86b22d8 100644 --- a/client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java +++ b/client/trunk/src/com/fourisland/instadisc/Database/Wrapper.java | |||
@@ -7,6 +7,7 @@ package com.fourisland.instadisc.Database; | |||
7 | import com.sleepycat.je.DatabaseException; | 7 | import com.sleepycat.je.DatabaseException; |
8 | import com.sleepycat.je.Environment; | 8 | import com.sleepycat.je.Environment; |
9 | import com.sleepycat.je.EnvironmentConfig; | 9 | import com.sleepycat.je.EnvironmentConfig; |
10 | import com.sleepycat.je.Transaction; | ||
10 | import com.sleepycat.persist.EntityCursor; | 11 | import com.sleepycat.persist.EntityCursor; |
11 | import com.sleepycat.persist.EntityStore; | 12 | import com.sleepycat.persist.EntityStore; |
12 | import com.sleepycat.persist.PrimaryIndex; | 13 | import com.sleepycat.persist.PrimaryIndex; |
@@ -38,6 +39,8 @@ public class Wrapper { | |||
38 | StoreConfig esConfig = new StoreConfig(); | 39 | StoreConfig esConfig = new StoreConfig(); |
39 | envConfig.setAllowCreate(true); | 40 | envConfig.setAllowCreate(true); |
40 | esConfig.setAllowCreate(true); | 41 | esConfig.setAllowCreate(true); |
42 | envConfig.setTransactional(true); | ||
43 | esConfig.setTransactional(true); | ||
41 | try { | 44 | try { |
42 | e = new Environment(new File(loc), envConfig); | 45 | e = new Environment(new File(loc), envConfig); |
43 | es = new EntityStore(e, "EntityStore", esConfig); | 46 | es = new EntityStore(e, "EntityStore", esConfig); |
@@ -73,15 +76,23 @@ public class Wrapper { | |||
73 | public static void setConfig(String key, String value) { | 76 | public static void setConfig(String key, String value) { |
74 | synchronized (idConfig) { | 77 | synchronized (idConfig) { |
75 | try { | 78 | try { |
76 | if (idConfig.contains(key)) { | 79 | Transaction t = e.beginTransaction(null, null); |
77 | IDConfig temp = idConfig.get(key); | 80 | |
78 | temp.setValue(value); | 81 | try { |
79 | idConfig.put(temp); | 82 | if (idConfig.contains(key)) { |
80 | } else { | 83 | IDConfig temp = idConfig.get(key); |
81 | IDConfig temp = new IDConfig(); | 84 | temp.setValue(value); |
82 | temp.setKey(key); | 85 | idConfig.put(t, temp); |
83 | temp.setValue(value); | 86 | } else { |
84 | idConfig.put(temp); | 87 | IDConfig temp = new IDConfig(); |
88 | temp.setKey(key); | ||
89 | temp.setValue(value); | ||
90 | idConfig.put(t, temp); | ||
91 | } | ||
92 | |||
93 | t.commit(); | ||
94 | } catch (Exception ex) { | ||
95 | t.abort(); | ||
85 | } | 96 | } |
86 | } catch (DatabaseException ex) { | 97 | } catch (DatabaseException ex) { |
87 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 98 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
@@ -112,14 +123,22 @@ public class Wrapper { | |||
112 | public static void emptyOldVerID() { | 123 | public static void emptyOldVerID() { |
113 | synchronized (oldVerID) { | 124 | synchronized (oldVerID) { |
114 | try { | 125 | try { |
115 | EntityCursor<OldVerID> ec = oldVerID.entities(); | 126 | Transaction t = e.beginTransaction(null, null); |
127 | |||
116 | try { | 128 | try { |
117 | Iterator<OldVerID> i = ec.iterator(); | 129 | EntityCursor<OldVerID> ec = oldVerID.entities(); |
118 | while (i.hasNext()) { | 130 | try { |
119 | i.remove(); | 131 | Iterator<OldVerID> i = ec.iterator(); |
132 | while (i.hasNext()) { | ||
133 | oldVerID.delete(t, i.next().getID()); | ||
134 | } | ||
135 | } finally { | ||
136 | ec.close(); | ||
120 | } | 137 | } |
121 | } finally { | 138 | |
122 | ec.close(); | 139 | t.commit(); |
140 | } catch (Exception ex) { | ||
141 | t.abort(); | ||
123 | } | 142 | } |
124 | } catch (DatabaseException ex) { | 143 | } catch (DatabaseException ex) { |
125 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 144 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
@@ -130,9 +149,17 @@ public class Wrapper { | |||
130 | public static void addOldVerID(Integer id) { | 149 | public static void addOldVerID(Integer id) { |
131 | synchronized (oldVerID) { | 150 | synchronized (oldVerID) { |
132 | try { | 151 | try { |
133 | OldVerID temp = new OldVerID(); | 152 | Transaction t = e.beginTransaction(null, null); |
134 | temp.setID(id); | 153 | |
135 | oldVerID.put(temp); | 154 | try { |
155 | OldVerID temp = new OldVerID(); | ||
156 | temp.setID(id); | ||
157 | oldVerID.put(t, temp); | ||
158 | |||
159 | t.commit(); | ||
160 | } catch (Exception ex) { | ||
161 | t.abort(); | ||
162 | } | ||
136 | } catch (DatabaseException ex) { | 163 | } catch (DatabaseException ex) { |
137 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 164 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
138 | } | 165 | } |
@@ -164,7 +191,15 @@ public class Wrapper { | |||
164 | public static void addSubscription(Subscription s) { | 191 | public static void addSubscription(Subscription s) { |
165 | synchronized (subscription) { | 192 | synchronized (subscription) { |
166 | try { | 193 | try { |
167 | subscription.put(s); | 194 | Transaction t = e.beginTransaction(null, null); |
195 | |||
196 | try { | ||
197 | subscription.put(t, s); | ||
198 | |||
199 | t.commit(); | ||
200 | } catch (Exception ex) { | ||
201 | t.abort(); | ||
202 | } | ||
168 | } catch (DatabaseException ex) { | 203 | } catch (DatabaseException ex) { |
169 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 204 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
170 | } | 205 | } |
@@ -175,10 +210,10 @@ public class Wrapper { | |||
175 | synchronized (subscription) { | 210 | synchronized (subscription) { |
176 | Collection vals = subscription.map().values(); | 211 | Collection vals = subscription.map().values(); |
177 | Subscription subs[] = new Subscription[vals.size()]; | 212 | Subscription subs[] = new Subscription[vals.size()]; |
178 | Iterator<Subscription> i = vals.iterator(); | 213 | Iterator i = vals.iterator(); |
179 | int j = 0; | 214 | int j = 0; |
180 | while (i.hasNext()) { | 215 | while (i.hasNext()) { |
181 | subs[j] = i.next(); | 216 | subs[j] = (Subscription) i.next(); |
182 | j++; | 217 | j++; |
183 | } | 218 | } |
184 | return subs; | 219 | return subs; |
@@ -188,7 +223,15 @@ public class Wrapper { | |||
188 | public static void deleteSubscription(String url) { | 223 | public static void deleteSubscription(String url) { |
189 | synchronized (subscription) { | 224 | synchronized (subscription) { |
190 | try { | 225 | try { |
191 | subscription.delete(url); | 226 | Transaction t = e.beginTransaction(null, null); |
227 | |||
228 | try { | ||
229 | subscription.delete(t, url); | ||
230 | |||
231 | t.commit(); | ||
232 | } catch (Exception ex) { | ||
233 | t.abort(); | ||
234 | } | ||
192 | } catch (DatabaseException ex) { | 235 | } catch (DatabaseException ex) { |
193 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 236 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
194 | } | 237 | } |
@@ -203,7 +246,15 @@ public class Wrapper { | |||
203 | 246 | ||
204 | synchronized (filter) { | 247 | synchronized (filter) { |
205 | try { | 248 | try { |
206 | filter.put(f); | 249 | Transaction t = e.beginTransaction(null, null); |
250 | |||
251 | try { | ||
252 | filter.put(t, f); | ||
253 | |||
254 | t.commit(); | ||
255 | } catch (Exception ex) { | ||
256 | t.abort(); | ||
257 | } | ||
207 | } catch (DatabaseException ex) { | 258 | } catch (DatabaseException ex) { |
208 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 259 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
209 | } | 260 | } |
@@ -224,7 +275,15 @@ public class Wrapper { | |||
224 | public static void deleteFilter(Integer id) { | 275 | public static void deleteFilter(Integer id) { |
225 | synchronized (filter) { | 276 | synchronized (filter) { |
226 | try { | 277 | try { |
227 | filter.delete(id); | 278 | Transaction t = e.beginTransaction(null, null); |
279 | |||
280 | try { | ||
281 | filter.delete(t, id); | ||
282 | |||
283 | t.commit(); | ||
284 | } catch (Exception ex) { | ||
285 | t.abort(); | ||
286 | } | ||
228 | } catch (DatabaseException ex) { | 287 | } catch (DatabaseException ex) { |
229 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 288 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
230 | } | 289 | } |
@@ -235,10 +294,10 @@ public class Wrapper { | |||
235 | synchronized (filter) { | 294 | synchronized (filter) { |
236 | Collection vals = filter.map().values(); | 295 | Collection vals = filter.map().values(); |
237 | Filter fils[] = new Filter[vals.size()]; | 296 | Filter fils[] = new Filter[vals.size()]; |
238 | Iterator<Filter> i = vals.iterator(); | 297 | Iterator i = vals.iterator(); |
239 | int j = 0; | 298 | int j = 0; |
240 | while (i.hasNext()) { | 299 | while (i.hasNext()) { |
241 | fils[j] = i.next(); | 300 | fils[j] = (Filter) i.next(); |
242 | j++; | 301 | j++; |
243 | } | 302 | } |
244 | return fils; | 303 | return fils; |
@@ -254,8 +313,16 @@ public class Wrapper { | |||
254 | public static void dropFromTopItem() { | 313 | public static void dropFromTopItem() { |
255 | synchronized (item) { | 314 | synchronized (item) { |
256 | try { | 315 | try { |
257 | Iterator<Entry<Integer, Item>> i = item.map().entrySet().iterator(); | 316 | Transaction t = e.beginTransaction(null, null); |
258 | item.delete(i.next().getKey()); | 317 | |
318 | try { | ||
319 | Iterator<Entry<Integer, Item>> i = item.map().entrySet().iterator(); | ||
320 | item.delete(t, i.next().getKey()); | ||
321 | |||
322 | t.commit(); | ||
323 | } catch (Exception ex) { | ||
324 | t.abort(); | ||
325 | } | ||
259 | } catch (DatabaseException ex) { | 326 | } catch (DatabaseException ex) { |
260 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 327 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
261 | } | 328 | } |
@@ -266,10 +333,10 @@ public class Wrapper { | |||
266 | synchronized (item) { | 333 | synchronized (item) { |
267 | Collection vals = item.map().values(); | 334 | Collection vals = item.map().values(); |
268 | Item items[] = new Item[vals.size()]; | 335 | Item items[] = new Item[vals.size()]; |
269 | Iterator<Item> i = vals.iterator(); | 336 | Iterator i = vals.iterator(); |
270 | int j = 0; | 337 | int j = 0; |
271 | while (i.hasNext()) { | 338 | while (i.hasNext()) { |
272 | items[j] = i.next(); | 339 | items[j] = (Item) i.next(); |
273 | j++; | 340 | j++; |
274 | } | 341 | } |
275 | return items; | 342 | return items; |
@@ -279,7 +346,15 @@ public class Wrapper { | |||
279 | public static void addItem(Item i) { | 346 | public static void addItem(Item i) { |
280 | synchronized (item) { | 347 | synchronized (item) { |
281 | try { | 348 | try { |
282 | item.put(i); | 349 | Transaction t = e.beginTransaction(null, null); |
350 | |||
351 | try { | ||
352 | item.put(t, i); | ||
353 | |||
354 | t.commit(); | ||
355 | } catch (Exception ex) { | ||
356 | t.abort(); | ||
357 | } | ||
283 | } catch (DatabaseException ex) { | 358 | } catch (DatabaseException ex) { |
284 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); | 359 | Logger.getLogger(Wrapper.class.getName()).log(Level.SEVERE, null, ex); |
285 | } | 360 | } |
diff --git a/client/trunk/src/com/fourisland/instadisc/Item/WellFormedItem.java b/client/trunk/src/com/fourisland/instadisc/Item/WellFormedItem.java index 91d95aa..7ba5f3b 100644 --- a/client/trunk/src/com/fourisland/instadisc/Item/WellFormedItem.java +++ b/client/trunk/src/com/fourisland/instadisc/Item/WellFormedItem.java | |||
@@ -5,6 +5,7 @@ | |||
5 | package com.fourisland.instadisc.Item; | 5 | package com.fourisland.instadisc.Item; |
6 | 6 | ||
7 | import com.fourisland.instadisc.Database.Filter; | 7 | import com.fourisland.instadisc.Database.Filter; |
8 | import com.fourisland.instadisc.Database.Subscription; | ||
8 | import com.fourisland.instadisc.Database.Wrapper; | 9 | import com.fourisland.instadisc.Database.Wrapper; |
9 | import com.fourisland.instadisc.Item.Categories.Category; | 10 | import com.fourisland.instadisc.Item.Categories.Category; |
10 | import com.fourisland.instadisc.XmlRpc; | 11 | import com.fourisland.instadisc.XmlRpc; |
@@ -162,7 +163,10 @@ public class WellFormedItem { | |||
162 | private boolean checkForSubscription() { | 163 | private boolean checkForSubscription() { |
163 | boolean good = Wrapper.existsSubscription(aThis.headerMap.get("Subscription")); | 164 | boolean good = Wrapper.existsSubscription(aThis.headerMap.get("Subscription")); |
164 | if (!good) { | 165 | if (!good) { |
165 | SubscriptionFile.deleteSubscription(Wrapper.getSubscription(aThis.headerMap.get("Subscription")), false); | 166 | Subscription s = new Subscription(); |
167 | s.setURL(aThis.headerMap.get("Subscription")); | ||
168 | |||
169 | SubscriptionFile.deleteSubscription(s, false); | ||
166 | } | 170 | } |
167 | return good; | 171 | return good; |
168 | } | 172 | } |