KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > fjank > jcache > CacheObjectInfoImpl


1 /* Open Source Java Caching Service
2 * Copyright (C) 2002 Frank Karlstrøm
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * The author can be contacted by email: fjankk@users.sourceforge.net
18 */

19 package org.fjank.jcache;
20
21 import java.text.SimpleDateFormat JavaDoc;
22 import java.util.Date JavaDoc;
23 import javax.util.jcache.Attributes;
24 import javax.util.jcache.CacheObjectInfo;
25
26
27 /**
28  * class wich holds information about an object in the cache. For information
29  * purposes only.
30  *
31  * @author Frank Karlstrøm
32  */

33 final class CacheObjectInfoImpl implements CacheObjectInfo {
34     /** number of references to the object this info accounts for. */
35     private final int refCount;
36
37     /** number of accesses to the object this info accounts for. */
38     private final int accesses;
39
40     /** when the object this info accounts for expires. */
41     private long expires;
42
43     /** the group the object this info accounts for belongs to. */
44     private String JavaDoc group;
45
46     /** the type of the object
47      * @todo never assigned.
48      **/

49     
50     private String JavaDoc type;
51
52     /** the name of the object */
53     private final Object JavaDoc name;
54
55     /** the region the object belongs in.
56      * @todo never assigned.
57      * */

58     
59     private Object JavaDoc region;
60
61     /**
62      * Creates new CacheObjectInfo
63      * @todo the type is hardcoded to Memory object.
64      * @param object the object this info describes.
65      */

66     CacheObjectInfoImpl(final CacheObject object) {
67         CacheGroup ownerGroup = object.getGroup();
68         if ((ownerGroup != null) && (ownerGroup.getName() != null)) {
69             this.group = ownerGroup.getName().toString();
70         }
71         this.name = object.getKey();
72         Attributes attribs = object.getAttributes();
73         if (attribs != null) {
74             long TTL = attribs.getTimeToLive();
75             this.expires = TTL>0 ? TTL * 1000 + attribs.getCreateTime()
76             : -1;
77
78             //this.expires = (attribs.getTimeToLive()*1000) + attribs.getCreateTime();
79
}
80         this.accesses = object.getAccesses();
81         this.refCount = object.getRefCount();
82         this.region = object.getRegion();
83         this.type = "Memory object";
84     }
85
86     /**
87      * returns the region the object resides in.
88      *
89      * @return the region the object resides in.
90      */

91     public String JavaDoc getRegion() {
92         return ((region != null) ? region.toString() : "Default region");
93     }
94
95     /**
96      * returns the name of the object.
97      *
98      * @return the name of the object.
99      */

100     public String JavaDoc getName() {
101         return name.toString();
102     }
103
104     /**
105      * returns the type of the object. (Memory object, disk object, group,
106      * region)
107      *
108      * @return the type of the object.
109      */

110     public String JavaDoc getType() {
111         return type;
112     }
113
114     /**
115      * returns the group the object is associated with.
116      *
117      * @return the group the object is associated with.
118      */

119     public String JavaDoc getGroup() {
120         return ((group != null) ? group : "");
121     }
122
123     /**
124      * returns the current reference count to the object.
125      *
126      * @return the current reference count to the object.
127      */

128     public int getRefCount() {
129         return refCount;
130     }
131
132     /**
133      * returns the total number of accesses to this object.
134      *
135      * @return the total number of accesses to this object.
136      */

137     public int getAccesses() {
138         return accesses;
139     }
140
141     /**
142      * Return the time the object will expire if any.
143      *
144      * @return the time the object will expire if any
145      */

146     public String JavaDoc getExpire() {
147         if(expires!=-1) {
148             SimpleDateFormat JavaDoc form = new SimpleDateFormat JavaDoc("EEE MMM dd HH:mm:ss zzz yyyy");
149             Date JavaDoc date = new Date JavaDoc(expires);
150             return form.format(date);
151         }
152         return NEVER_EXPIRES;
153     }
154
155     /**
156      * returns a string representation of this info.
157      *
158      * @return a string representation of this info.
159      */

160     public String JavaDoc toString() {
161         StringBuffer JavaDoc ret = new StringBuffer JavaDoc("name:" + getName());
162         ret.append(", region:" + getRegion());
163         ret.append(", type:" + getType());
164         if (!getGroup().equals("")) {
165             ret.append(", group:" + getGroup());
166         }
167         ret.append(", refCount:" + getRefCount());
168         ret.append(", accesses:" + getAccesses());
169         ret.append(", expires:" + getExpire());
170         return ret.toString();
171     }
172 }
173
Popular Tags