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; 22 import java.util.Date; 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 group; 45 46 /** the type of the object 47 * @todo never assigned. 48 **/ 49 50 private String type; 51 52 /** the name of the object */ 53 private final Object name; 54 55 /** the region the object belongs in. 56 * @todo never assigned. 57 * */ 58 59 private Object 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 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 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 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 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 getExpire() { 147 if(expires!=-1) { 148 SimpleDateFormat form = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); 149 Date date = new Date(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 toString() { 161 StringBuffer ret = new StringBuffer("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 }