1 23 24 package org.continuent.sequoia.controller.cache.result.entries; 25 26 import org.continuent.sequoia.common.stream.DriverStream; 27 import org.continuent.sequoia.controller.backend.result.ControllerResultSet; 28 import org.continuent.sequoia.controller.requests.SelectRequest; 29 30 45 public abstract class AbstractResultCacheEntry 46 { 47 protected SelectRequest request; 48 protected ControllerResultSet result; 49 protected int state; 50 51 private AbstractResultCacheEntry next; 53 private AbstractResultCacheEntry prev; 54 55 56 public static final int NO_DEADLINE = -1; 57 58 public static final int CACHE_VALID = 0; 59 60 public static final int CACHE_DIRTY = 1; 61 62 public static final int CACHE_INVALID = 2; 63 64 70 public AbstractResultCacheEntry(SelectRequest request, 71 ControllerResultSet result) 72 { 73 this.request = request; 74 this.result = result; 75 state = CACHE_VALID; 76 next = null; 77 prev = null; 78 } 79 80 85 public abstract String getType(); 86 87 92 public String getState() 93 { 94 if (isValid()) 95 return "Valid"; 96 if (isDirty()) 97 return "Dirty"; 98 else 99 return "Invalid"; 100 } 101 102 108 public boolean isValid() 109 { 110 return state == CACHE_VALID; 111 } 112 113 119 public boolean isDirty() 120 { 121 return state == CACHE_DIRTY; 122 } 123 124 129 public SelectRequest getRequest() 130 { 131 return request; 132 } 133 134 139 public ControllerResultSet getResult() 140 { 141 return result; 142 } 143 144 152 public void setResult(ControllerResultSet result) 153 { 154 this.result = result; 155 state = CACHE_VALID; 156 } 157 158 162 public abstract void invalidate(); 163 164 169 public void markDirty() 170 { 171 state = CACHE_DIRTY; 172 } 173 174 177 public void setValid() 178 { 179 state = CACHE_VALID; 180 } 181 182 187 public AbstractResultCacheEntry getNext() 188 { 189 return next; 190 } 191 192 197 public void setNext(AbstractResultCacheEntry next) 198 { 199 this.next = next; 200 } 201 202 207 public AbstractResultCacheEntry getPrev() 208 { 209 return prev; 210 } 211 212 217 public void setPrev(AbstractResultCacheEntry prev) 218 { 219 this.prev = prev; 220 } 221 222 227 public abstract String [] toStringTable(); 228 229 234 public int getSizeOfResult() 235 { 236 try 237 { 238 return DriverStream.countBytes(result); 239 } 240 catch (Exception e) 241 { 242 return -1; 243 } 244 } 245 246 } | Popular Tags |