1 5 package com.opensymphony.oscache.extra; 6 7 import com.opensymphony.oscache.base.events.ScopeEvent; 8 import com.opensymphony.oscache.base.events.ScopeEventListener; 9 import com.opensymphony.oscache.base.events.ScopeEventType; 10 11 20 public class ScopeEventListenerImpl implements ScopeEventListener { 21 24 public static final String [] SCOPE_NAMES = { 25 null, "page", "request", "session", "application" 26 }; 27 28 31 public static final int NB_SCOPES = SCOPE_NAMES.length - 1; 32 33 36 public static final int PAGE_SCOPE = 1; 37 38 41 public static final int REQUEST_SCOPE = 2; 42 43 46 public static final int SESSION_SCOPE = 3; 47 48 51 public static final int APPLICATION_SCOPE = 4; 52 53 58 private int[] scopeFlushCount = new int[NB_SCOPES + 1]; 59 60 public ScopeEventListenerImpl() { 61 } 62 63 68 public int getApplicationScopeFlushCount() { 69 return scopeFlushCount[APPLICATION_SCOPE]; 70 } 71 72 76 public int getPageScopeFlushCount() { 77 return scopeFlushCount[PAGE_SCOPE]; 78 } 79 80 84 public int getRequestScopeFlushCount() { 85 return scopeFlushCount[REQUEST_SCOPE]; 86 } 87 88 92 public int getSessionScopeFlushCount() { 93 return scopeFlushCount[SESSION_SCOPE]; 94 } 95 96 100 public int getTotalScopeFlushCount() { 101 int total = 0; 102 103 for (int count = 1; count <= NB_SCOPES; count++) { 104 total += scopeFlushCount[count]; 105 } 106 107 return total; 108 } 109 110 114 public void scopeFlushed(ScopeEvent event) { 115 ScopeEventType eventType = event.getEventType(); 117 118 if (eventType == ScopeEventType.ALL_SCOPES_FLUSHED) { 119 for (int count = 1; count <= NB_SCOPES; count++) { 121 scopeFlushCount[count]++; 122 } 123 } else if (eventType == ScopeEventType.SCOPE_FLUSHED) { 124 scopeFlushCount[event.getScope()]++; 126 } else { 127 throw new IllegalArgumentException ("Unknown Scope Event type received"); 129 } 130 } 131 132 135 public String toString() { 136 StringBuffer returnString = new StringBuffer ("Flush count for "); 137 138 for (int count = 1; count <= NB_SCOPES; count++) { 139 returnString.append("scope " + SCOPE_NAMES[count] + " = " + scopeFlushCount[count] + ", "); 140 } 141 142 returnString.setLength(returnString.length() - 2); 144 145 return returnString.toString(); 146 } 147 } 148 | Popular Tags |