EMMA Coverage Report (generated Tue Jul 10 07:50:22 IST 2012)
[all classes][org.wso2.siddhi.core.projector.attibute.aggregator.max]

COVERAGE SUMMARY FOR SOURCE FILE [MaxAggregatorInt.java]

nameclass, %method, %block, %line, %
MaxAggregatorInt.java0%   (0/1)0%   (0/6)0%   (0/74)0%   (0/18)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class MaxAggregatorInt0%   (0/1)0%   (0/6)0%   (0/74)0%   (0/18)
MaxAggregatorInt (): void 0%   (0/1)0%   (0/14)0%   (0/4)
add (Object): Object 0%   (0/1)0%   (0/36)0%   (0/8)
createNewInstance (): Aggregator 0%   (0/1)0%   (0/4)0%   (0/1)
getType (): Attribute$Type 0%   (0/1)0%   (0/3)0%   (0/1)
getValue (): Object 0%   (0/1)0%   (0/3)0%   (0/1)
remove (Object): Object 0%   (0/1)0%   (0/14)0%   (0/3)

1/*
2*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
3*
4*  WSO2 Inc. licenses this file to you under the Apache License,
5*  Version 2.0 (the "License"); you may not use this file except
6*  in compliance with the License.
7*  You may obtain a copy of the License at
8*
9*    http://www.apache.org/licenses/LICENSE-2.0
10*
11* Unless required by applicable law or agreed to in writing,
12* software distributed under the License is distributed on an
13* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14* KIND, either express or implied.  See the License for the
15* specific language governing permissions and limitations
16* under the License.
17*/
18package org.wso2.siddhi.core.projector.attibute.aggregator.max;
19 
20import org.wso2.siddhi.core.projector.attibute.aggregator.Aggregator;
21import org.wso2.siddhi.query.api.definition.Attribute;
22 
23import java.util.Deque;
24import java.util.Iterator;
25import java.util.LinkedList;
26 
27public class MaxAggregatorInt implements Aggregator {
28 
29    private Deque<Integer> maxDeque = new LinkedList<Integer>();
30    private volatile Integer maxValue = null;
31    private Attribute.Type type = Attribute.Type.INT;
32 
33    public Object getValue() {
34        return maxValue;
35    }
36 
37    public Attribute.Type getType() {
38        return this.type;
39    }
40 
41    @Override
42    public synchronized Object add(Object obj) {
43        Integer value = ((Integer) obj);
44        for (Iterator<Integer> iterator = maxDeque.descendingIterator(); iterator.hasNext(); ) {
45            if (iterator.next() < value) {
46                iterator.remove();
47            } else {
48                break;
49            }
50        }
51        maxDeque.addLast(value);
52        if (maxValue < value) {
53            maxValue = value;
54        }
55        return maxValue;
56    }
57 
58    @Override
59    public synchronized Object remove(Object obj) {
60        maxDeque.removeFirstOccurrence(obj);
61        maxValue = maxDeque.peekFirst();
62        return maxValue;
63    }
64 
65    @Override
66    public Aggregator createNewInstance() {
67        return new MaxAggregatorInt();
68    }
69}

[all classes][org.wso2.siddhi.core.projector.attibute.aggregator.max]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov