Group management implemented on the admin page.
[photos] / src / main / java / org / wamblee / photos / concurrent / ConcurrentPhotoEntry.java
1 /*
2  * Copyright 2005 the original author or authors.
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  * 
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  * 
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */ 
16 package org.wamblee.photos.concurrent;
17
18 import org.wamblee.concurrency.ReadWriteLock;
19 import org.wamblee.photos.model.PhotoEntry;
20
21 /**
22  * Decorator base class for a photo entry. 
23  */
24 public class ConcurrentPhotoEntry implements PhotoEntry {
25
26     private PhotoEntry _entry;
27
28     private ReadWriteLock _lock;
29
30     protected ConcurrentPhotoEntry(PhotoEntry aEntry) {
31         _entry = aEntry;
32         _lock = new ReadWriteLock();
33     }
34     
35     protected PhotoEntry getEntry() {
36         return _entry; 
37     }
38     
39     protected ReadWriteLock lock() {
40         return _lock; 
41     }
42
43     /*
44      * (non-Javadoc)
45      * 
46      * @see org.wamblee.photos.model.PhotoEntry#getId()
47      */
48     public String getId() {
49         _lock.acquireRead();
50         try {
51             return _entry.getId();
52         } finally {
53             _lock.releaseRead();
54         }
55     }
56
57     /*
58      * (non-Javadoc)
59      * 
60      * @see org.wamblee.photos.model.PhotoEntry#getPath()
61      */
62     public String getPath() {
63         _lock.acquireRead(); 
64         try {
65             return _entry.getPath(); 
66         } finally {
67             _lock.releaseRead(); 
68         }
69     }
70
71     /*
72      * (non-Javadoc)
73      * 
74      * @see java.lang.Comparable#compareTo(java.lang.Object)
75      */
76     public int compareTo(PhotoEntry aEntry) {
77         _lock.acquireRead();
78         try {
79             return _entry.compareTo(aEntry); // TODO: is this safe? 
80         }
81         finally {
82             _lock.releaseRead(); 
83         }
84     }
85
86 }