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