001 package jp.osdl.jbento2.analyzer;
002
003 import java.util.Iterator;
004
005 public class RampUpDownFilter {
006
007 private long rampUpMillis = 60000;
008
009 private long rampDownMillis = 60000;
010
011 public RampUpDownFilter(long rampUpMillis, long rampDownMillis) {
012 this.rampUpMillis = rampUpMillis;
013 this.rampDownMillis = rampDownMillis;
014 }
015
016 public SampleList doFilter(SampleList src) {
017 if (src.isEmpty() || (rampUpMillis == 0 && rampDownMillis == 0)) {
018 return src;
019 }
020
021 SampleList result = new SampleList();
022
023 long first = Long.MAX_VALUE;
024 long last = 0;
025
026 for (Iterator it = src.iterator(); it.hasNext();) {
027 Sample s = (Sample) it.next();
028 if (first > s.getStartTime().getMillitime()) {
029 first = s.getStartTime().getMillitime();
030 }
031 if (last < s.getEndTime().getMillitime()) {
032 last = s.getEndTime().getMillitime();
033 }
034 }
035
036 long start = first + rampUpMillis;
037 long end = last - rampDownMillis;
038
039 for (Iterator it = src.iterator(); it.hasNext();) {
040 Sample s = (Sample) it.next();
041 if (start <= s.getStartTime().getMillitime()
042 && end >= s.getEndTime().getMillitime()) {
043 result.add(s);
044 }
045 }
046
047 return result;
048 }
049 }