@@ -78,10 +78,13 @@ private int getChartType(String formulaStr) {
7878
7979
8080
81- public HashMap <String ,Double > summaryStat (int attr , Bucket <String > subGroup )
81+ public Map <String ,Object > summaryStat (int attr , Bucket <String > subGroup )
8282 {
83+ if (subGroup .summaryStat !=null )
84+ return subGroup .summaryStat ;
85+
8386 ArrayList <Double > numData = navS .collectDoubleValues (attr , subGroup );
84- HashMap <String ,Double > result = new HashMap <String , Double >();
87+ Map <String ,Object > result = new HashMap <>();
8588 //min, max, average, var, STDDEV
8689 // 0, 1, 2, 3, 4
8790 double min = Double .MAX_VALUE ;
@@ -107,7 +110,7 @@ public HashMap<String,Double> summaryStat(int attr, Bucket<String> subGroup)
107110 result .put ("AVERAGE" ,avg /numData .size ());
108111 result .put ("STDEV" ,Double .MAX_VALUE );
109112 result .put ("VAR" ,Double .MAX_VALUE );
110-
113+ subGroup . summaryStat = result ;
111114 return result ;
112115 }
113116
@@ -133,14 +136,14 @@ private void type0Chart(Map<String, Object> obj, int attr, Bucket<String> subGro
133136 private void type0Chart (Map <String , Object > obj , int attr , Bucket <String > subGroup , String formula ) {
134137 obj .put ("chartType" , 0 );
135138 List <Double > chartData = new ArrayList <>();
136- HashMap <String ,Double > res = summaryStat (attr ,subGroup );
139+ Map <String , Object > res = summaryStat (attr ,subGroup );
137140 List <String > emptyList = new ArrayList <>();
138141 emptyList .add ("" );
139142 for (String f : type0Stat ) {
140143 if (!f .equals ("MEDIAN" ))
141144 {
142- chartData .add (res .get (f ));
143- navS .setBucketAggWithMemoization (model ,subGroup ,attr ,f ,emptyList ,res .get (f ));
145+ chartData .add (( Double ) res .get (f ));
146+ navS .setBucketAggWithMemoization (model ,subGroup ,attr ,f ,emptyList ,( Double ) res .get (f ));
144147 }
145148 else if (formula .equals ("MEDIAN" ))
146149 {
@@ -177,7 +180,7 @@ private void type2Chart(Map<String, Object> obj, int attr, Bucket<String> subGro
177180 NavigationHistogram hist = new NavigationHistogram (navS .collectDoubleValues (attr , subGroup ));
178181 hist .formattedOutput (obj , null );
179182
180- HashMap <String ,Double > res = summaryStat (attr ,subGroup );
183+ Map <String , Object > res = summaryStat (attr ,subGroup );
181184
182185 HashMap <String , Object > chartData = (HashMap ) obj .get ("chartData" );
183186 List <String > emptyList = new ArrayList <>();
@@ -186,12 +189,12 @@ private void type2Chart(Map<String, Object> obj, int attr, Bucket<String> subGro
186189 if (f .equals ("AVERAGE" ))
187190 {
188191 chartData .put (f ,res .get (f ));
189- navS .setBucketAggWithMemoization (model ,subGroup ,attr ,f ,emptyList ,res .get (f ));
192+ navS .setBucketAggWithMemoization (model ,subGroup ,attr ,f ,emptyList ,( Double ) res .get (f ));
190193 }
191194 else
192195 {
193196 Map <String , Object > resMed = navS .getBucketAggWithMemoization (model , subGroup , attr , f , emptyList );
194- chartData .put (f ,( Double ) resMed .get ("value" ));
197+ chartData .put (f ,resMed .get ("value" ));
195198 }
196199 }
197200 }
0 commit comments