1 33 34 package com.icesoft.applications.faces.auctionMonitor.beans; 35 36 import com.icesoft.applications.faces.auctionMonitor.ChatState; 37 import com.icesoft.applications.faces.auctionMonitor.MessageLog; 38 import com.icesoft.applications.faces.auctionMonitor.stubs.StubServer; 39 import org.apache.commons.logging.Log; 40 import org.apache.commons.logging.LogFactory; 41 42 import javax.faces.context.ExternalContext; 43 import javax.faces.context.FacesContext; 44 import java.sql.Time ; 45 import java.util.ArrayList ; 46 import java.util.Calendar ; 47 import java.util.Date ; 48 import java.util.GregorianCalendar ; 49 import java.util.Map ; 50 import java.util.Timer ; 51 import java.util.TimerTask ; 52 53 59 public class LogBean { 60 public static final String LOG_PATH = 61 "com.icesoft.applications.faces.auctionMonitor.messageLog"; 62 private static final int CONTROL_LOG_CAP = 20; 63 private static final Runtime core = Runtime.getRuntime(); 64 private static Log log = LogFactory.getLog(LogBean.class); 65 private static LogBean singleton; 66 private ChatState state = ChatState.getInstance(); 67 private ExternalContext externalContext; 68 private ArrayList controlLog = new ArrayList (0); 69 private MessageLog messageLog = new MessageLog(0); 70 private String autoLoad = " "; 71 72 private static final int TIME_DAYS = 24 * 60 * 60 * 1000; 73 74 public LogBean() { 75 externalContext = 76 FacesContext.getCurrentInstance().getExternalContext(); 77 } 82 83 public long getFreeMemory() { 84 return (core.freeMemory()); 85 } 86 87 public long getTotalMemory() { 88 return (core.totalMemory()); 89 } 90 91 public long getMaxMemory() { 92 return (core.maxMemory()); 93 } 94 95 public ArrayList getControlLog() { 96 return (controlLog); 97 } 98 99 public MessageLog getMessageLog() { 100 return (storeMessageLog()); 101 } 102 103 public String getAutoLoad() { 104 getInstance(); 105 if (this.autoLoad.equals(" ")) { 106 this.autoLoad = "LogBean-Loaded"; 107 } 108 return (this.autoLoad); 109 } 110 111 public String getTimeStampState() { 112 if (state.getTimeStampEnabled()) { 113 return ("Disable"); 114 } 115 116 return ("Enable"); 117 } 118 119 public String getTimeStampMessage() { 120 if (state.getTimeStampEnabled()) { 121 return ("enabled"); 122 } 123 124 return ("disabled"); 125 } 126 127 private MessageLog getContextMessageLog() { 128 Map applicationMap = externalContext.getApplicationMap(); 130 if (applicationMap == null) { 131 return (new MessageLog(0)); 132 } 133 134 messageLog = (MessageLog) applicationMap.get(LogBean.LOG_PATH); 136 if (messageLog == null) { 137 messageLog = new MessageLog(0); 138 } 139 140 return (messageLog); 141 } 142 143 148 public static synchronized LogBean getInstance() { 149 if (singleton == null) { 150 singleton = new LogBean(); 151 } 152 return (singleton); 153 } 154 155 158 private void timedReset() { 159 Calendar tomorrow = new GregorianCalendar (); 161 tomorrow.add(Calendar.DATE, 1); 162 Date midnight = new GregorianCalendar (tomorrow.get(Calendar.YEAR), 163 tomorrow.get(Calendar.MONTH), 164 tomorrow.get(Calendar.DATE)) 165 .getTime(); 166 167 new Timer ().scheduleAtFixedRate(new TimerTask () { 169 public void run() { 170 resetAuction(true); 171 } 172 }, midnight, TIME_DAYS); 173 } 174 175 176 182 public MessageLog storeMessageLog() { 183 externalContext.getApplicationMap().put(LOG_PATH, messageLog); 184 return (messageLog); 185 } 186 187 188 193 public String resetAuction() { 194 return resetAuction(false); 195 } 196 197 203 public String resetAuction(boolean silent) { 204 getContextMessageLog(); 206 207 StubServer.resetAuction(); 209 appendControl("Auction has been reset"); 210 211 if (!silent) { 213 messageLog.addMessage("Notice", 214 "Auction has been reset by the administrator.", 215 null); 216 } 217 storeMessageLog(); 218 state.updateAll(); 219 220 return ("resetAuction"); 221 } 222 223 228 public String clearMessageLog() { 229 getContextMessageLog(); 231 232 appendControl("Message log (size " + messageLog.size() + ") cleared"); 234 messageLog = (MessageLog) clear(messageLog); 235 236 messageLog.addMessage("Notice", 238 "Message log was cleared by the administrator.", 239 null); 240 storeMessageLog(); 241 state.updateAll(); 242 243 return ("clearMessageLog"); 244 } 245 246 251 public String printMessageLog() { 252 getContextMessageLog(); 254 255 if (log.isInfoEnabled()) { 256 log.info("Message log dump started"); 257 } 258 int size = messageLog.size(); 259 for (int i = 0; i < size; i++) { 260 if (log.isInfoEnabled()) { 261 log.info("> " + messageLog.getMessageAt(i)); 262 } 263 } 264 if (log.isInfoEnabled()) { 265 log.info("Message log dump end"); 266 } 267 appendControl("Message log (size " + size + ") printed"); 268 269 return ("printMessageLog"); 270 } 271 272 277 public String toggleTimeStamp() { 278 state.toggleTimeStamp(); 280 appendControl("Timestamps set to " + state.getTimeStampEnabled()); 281 282 messageLog.addMessage("Notice", "Timestamps have been " + 284 getTimeStampMessage() + 285 " by the administrator.", null); 286 storeMessageLog(); 287 state.updateAll(); 288 289 return ("toggleTimeStamp"); 290 } 291 292 298 private void appendControl(String controlMessage) { 299 if (controlLog.size() > CONTROL_LOG_CAP) { 300 controlLog = clear(controlLog); 301 appendControl("Control log cleared (max size of " + 302 CONTROL_LOG_CAP + ")"); 303 } 304 305 controlLog.add((new Time (System.currentTimeMillis()) + ": " + 306 controlMessage)); 307 } 308 309 316 private ArrayList clear(ArrayList toClear) { 317 for (int i = 0, len = toClear.size(); i < len; i++) { 319 toClear.remove(0); 320 } 321 322 return (toClear); 323 } 324 } 325 | Popular Tags |