Changeset 559 for trunk/quest-core-usageprofiles/src/main/java/de/ugoe/cs/quest/usageprofiles/IncompleteMemory.java
- Timestamp:
- 08/17/12 09:05:19 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/quest-core-usageprofiles/src/main/java/de/ugoe/cs/quest/usageprofiles/IncompleteMemory.java
r518 r559 1 1 2 package de.ugoe.cs.quest.usageprofiles; 2 3 … … 7 8 /** 8 9 * <p> 9 * Implements a round-trip buffered memory of a specified length that can be 10 * used to remember the recent history. Every event that happend longer ago than11 * the length of the memory is forgotten,hence the memory is incomplete.10 * Implements a round-trip buffered memory of a specified length that can be used to remember the 11 * recent history. Every event that happend longer ago than the length of the memory is forgotten, 12 * hence the memory is incomplete. 12 13 * </p> 13 14 * … … 20 21 public class IncompleteMemory<T> implements IMemory<T> { 21 22 22 23 24 25 26 27 23 /** 24 * <p> 25 * Maximum length of the memory. 26 * </p> 27 */ 28 private int length; 28 29 29 30 31 32 33 34 30 /** 31 * <p> 32 * Internal storage of the history. 33 * </p> 34 */ 35 private List<T> history; 35 36 36 /** 37 * <p> 38 * Constructor. Creates a new IncompleteMemory. 39 * </p> 40 * 41 * @param length 42 * number of recent events that are remembered 43 * @throws InvalidParameterException 44 * This exception is thrown if the length is smaller than 1 45 */ 46 public IncompleteMemory(int length) { 47 if (length < 1) { 48 throw new InvalidParameterException( 49 "Length of IncompleteMemory must be at least 1."); 50 } 51 this.length = length; 52 history = new LinkedList<T>(); 53 } 37 /** 38 * <p> 39 * Constructor. Creates a new IncompleteMemory. 40 * </p> 41 * 42 * @param length 43 * number of recent events that are remembered 44 * @throws InvalidParameterException 45 * This exception is thrown if the length is smaller than 1 46 */ 47 public IncompleteMemory(int length) { 48 if (length < 1) { 49 throw new InvalidParameterException("Length of IncompleteMemory must be at least 1."); 50 } 51 this.length = length; 52 history = new LinkedList<T>(); 53 } 54 54 55 56 57 58 59 60 61 62 63 64 65 66 55 /* 56 * (non-Javadoc) 57 * 58 * @see de.ugoe.cs.quest.usageprofiles.IMemory#add(java.lang.Object) 59 */ 60 @Override 61 public void add(T state) { 62 if (history.size() == length) { 63 history.remove(0); 64 } 65 history.add(state); 66 } 67 67 68 69 70 71 72 73 74 75 if( num<1) {76 77 } else { 78 return new LinkedList<T>(history.subList( 79 80 81 82 68 /* 69 * (non-Javadoc) 70 * 71 * @see de.ugoe.cs.quest.usageprofiles.IMemory#getLast(int) 72 */ 73 @Override 74 public List<T> getLast(int num) { 75 if (num < 1) { 76 return new LinkedList<T>(); 77 } 78 else { 79 return new LinkedList<T>(history.subList(Math.max(0, history.size() - num), 80 history.size())); // defensive copy 81 } 82 } 83 83 84 85 86 * Returns the current length of the memory. This can be less than 87 * {@link #length}, if theoverall history is less than {@link #length}.88 89 90 91 92 93 94 84 /** 85 * <p> 86 * Returns the current length of the memory. This can be less than {@link #length}, if the 87 * overall history is less than {@link #length}. 88 * </p> 89 * 90 * @return length of the current memory 91 */ 92 public int getLength() { 93 return history.size(); 94 } 95 95 }
Note: See TracChangeset
for help on using the changeset viewer.