1 package org.apache.helix.healthcheck;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.log4j.Logger;
23
24 public class WindowAggregationType implements AggregationType
25 {
26
27 private static final Logger logger = Logger
28 .getLogger(WindowAggregationType.class);
29
30 public final String WINDOW_DELIM = "#";
31
32 public final static String TYPE_NAME = "window";
33
34 int _windowSize = 1;
35
36 public WindowAggregationType(int ws)
37 {
38 super();
39 _windowSize = ws;
40 }
41
42 @Override
43 public String getName()
44 {
45 StringBuilder sb = new StringBuilder();
46 sb.append(TYPE_NAME);
47 sb.append(DELIM);
48 sb.append(_windowSize);
49 return sb.toString();
50 }
51
52 @Override
53 public String merge(String incomingVal, String existingVal, long prevTimestamp)
54 {
55 String[] windowVals;
56 if (existingVal == null)
57 {
58 return incomingVal;
59 }
60 else
61 {
62 windowVals = existingVal.split(WINDOW_DELIM);
63 int currLength = windowVals.length;
64
65 if (currLength < _windowSize)
66 {
67 return existingVal + WINDOW_DELIM + incomingVal;
68 }
69
70 else
71 {
72 int firstDelim = existingVal.indexOf(WINDOW_DELIM);
73 return existingVal.substring(firstDelim + 1) + WINDOW_DELIM
74 + incomingVal;
75 }
76 }
77 }
78 }