1 /** 2 * Copyright 2010 The Kuali Foundation Licensed under the 3 * Educational Community License, Version 2.0 (the "License"); you may 4 * not use this file except in compliance with the License. You may 5 * obtain a copy of the License at 6 * 7 * http://www.osedu.org/licenses/ECL-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, 10 * software distributed under the License is distributed on an "AS IS" 11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 * or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package org.kuali.student.common.ui.client.logging; 17 18 import java.io.Serializable; 19 import java.util.ArrayList; 20 import java.util.List; 21 22 /** 23 * Stores log messages, can be sent to log service. 24 */ 25 public class LogBuffer implements Serializable { 26 private static final long serialVersionUID = 1L; 27 28 int maxSize = Integer.MAX_VALUE; 29 List<LogMessage> buffer = new ArrayList<LogMessage>(); 30 31 /** 32 * Creates an empty LogBuffer with a size limit of Integer.MAX_VALUE 33 */ 34 public LogBuffer() { 35 36 } 37 38 /** 39 * Creates an empty LogBuffer with the specified size limit. 40 * When size limit is reached, older messages are removed as newer ones are added. 41 * @param maxSize 42 */ 43 public LogBuffer(int maxSize) { 44 this.maxSize = maxSize; 45 } 46 47 /** 48 * Adds a message to the buffer 49 * @param message 50 */ 51 public void add(LogMessage message) { 52 buffer.add(message); 53 checkLimit(); 54 } 55 56 /** 57 * Returns the underlying log buffer. 58 * @return the underlying log buffer as List<LogMessage> 59 */ 60 public List<LogMessage> getLogMessages() { 61 return buffer; 62 } 63 /** 64 * Removes excess messages, oldest first. 65 */ 66 private void checkLimit() { 67 while (buffer.size() > maxSize) { 68 buffer.remove(0); 69 } 70 } 71 }