1
package org.hisp.dhis.dashboard.action;
3
import java.util.ArrayList;
6
import javax.servlet.http.HttpServletRequest;
7
import javax.servlet.http.HttpSession;
9
import com.opensymphony.webwork.ServletActionContext;
10
import com.opensymphony.xwork.Action;
11
import com.opensymphony.xwork.ActionContext;
13
public class GetSortedDataAction
28
private List<String> headingInfo;
30
public List<String> getHeadingInfo()
36
public String execute()
40
headingInfo = new ArrayList<String>();
42
ActionContext ctx = ActionContext.getContext();
43
HttpServletRequest req = (HttpServletRequest) ctx.get( ServletActionContext.HTTP_REQUEST );
44
String chartDisplayOption = req.getParameter( "chartDisplayOption" );
46
HttpSession session = req.getSession();
47
Double[][] objData1 = (Double[][]) session.getAttribute( "data1" );
48
Double[][] objData2 = (Double[][]) session.getAttribute( "data2" );
51
String[] series1S = (String[]) session.getAttribute( "series1" );
52
String[] series2S = (String[]) session.getAttribute( "series2" );
53
String[] categories1S = (String[]) session.getAttribute( "categories1" );
54
String[] categories2S = (String[]) session.getAttribute( "categories2" );
57
initialzeAllLists(series1S, series2S, categories1S, categories2S);
59
if(objData1 == null || objData2 == null || series1 == null || series2 == null || categories1 == null || categories2 == null )
60
System.out.println("Session Objects are null");
62
System.out.println("Session Objects are not null");
64
data1 = convertDoubleTodouble( objData1 );
65
data2 = convertDoubleTodouble( objData2 );
67
if(chartDisplayOption == null || chartDisplayOption.equalsIgnoreCase("none")) { }
68
else if(chartDisplayOption.equalsIgnoreCase("ascend")) { sortByAscending(); }
69
else if(chartDisplayOption.equalsIgnoreCase("desend")) { sortByDesscending(); }
70
else if(chartDisplayOption.equalsIgnoreCase("alphabet")) { sortByAlphabet(); }
72
initializeDataLists();
74
System.out.println(headingInfo);
80
public void initializeDataLists()
83
headingInfo.add( "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse; border-style: dotted\" bordercolor=\"#111111\" width=\"100%\"><tr><td class=\"TableHeadingCellStyles\" style=\"border-style: dotted; border-width: 1\">Service Name</td>" );
85
for(i=0; i < categories1.length; i++)
87
headingInfo.add( "<td class=\"TableHeadingCellStyles\" align=\"center\" style=\"border-style: dotted; border-width: 1\">"+categories1[i]+"</td>" );
89
headingInfo.add( "</tr>" );
91
for(i=0; i<data1.length; i++)
93
headingInfo.add( "<tr><td class=\"TableHeadingCellStyles\" style=\"border-style: dotted; border-width: 1\">"+series1[i]+"</td>" );
94
for(int j=0; j<data1[i].length; j++)
96
headingInfo.add( "<td class=\"TableDataCellStyles\" align=\"center\" style=\"border-style: dotted; border-width: 1\">"+data1[i][j]+"</td>" );
98
headingInfo.add( "</tr>" );
101
headingInfo.add( "</table>" );
104
public void initialzeAllLists(String[]series1S, String[] series2S, String[] categories1S, String[] categories2S)
107
series1 = new String[series1S.length];
108
series2 = new String[series2S.length];
109
categories1 = new String[categories1S.length];
110
categories2 = new String[categories2S.length];
112
for(i = 0; i < series1S.length; i++)
114
series1[i] = series1S[i];
117
for(i = 0; i < series2S.length; i++)
119
series2[i] = series2S[i];
122
for(i = 0; i < categories1S.length; i++)
124
categories1[i] = categories1S[i];
127
for(i = 0; i < categories2S.length; i++)
129
categories2[i] = categories2S[i];
134
public double[][] convertDoubleTodouble( Double[][] objData )
136
System.out.println("Before Sorting : ");
137
double[][] data = new double[series1.length][categories1.length];
138
for ( int i = 0; i < objData.length; i++ )
140
for ( int j = 0; j < objData[0].length; j++ )
142
data[i][j] = objData[i][j].doubleValue();
143
System.out.print(categories1[j]+": "+data[i][j]+", ");
145
System.out.println("");
149
}// convertDoubleTodouble end
151
public void sortByAscending()
153
for(int i=0; i < categories1.length-1 ; i++)
155
for(int j=0; j < categories1.length-1-i; j++)
157
if(data1[0][j] > data1[0][j+1])
159
for(int k=0; k<series1.length; k++)
161
double temp1 = data1[k][j];
162
data1[k][j] = data1[k][j+1];
163
data1[k][j+1] = temp1;
166
String temp2 = categories1[j];
167
categories1[j] = categories1[j+1];
168
categories1[j+1] = temp2;
173
for(int i=0; i < categories2.length-1 ; i++)
175
for(int j=0; j < categories2.length-1-i; j++)
177
if(data2[0][j] > data2[0][j+1])
179
for(int k=0; k<series2.length; k++)
181
double temp1 = data2[k][j];
182
data2[k][j] = data2[k][j+1];
183
data2[k][j+1] = temp1;
186
String temp2 = categories2[j];
187
categories2[j] = categories2[j+1];
188
categories2[j+1] = temp2;
195
public void sortByDesscending()
197
for(int i=0; i < categories1.length-1 ; i++)
199
for(int j=0; j < categories1.length-1-i; j++)
201
if(data1[0][j] < data1[0][j+1])
203
for(int k=0; k<series1.length; k++)
205
double temp1 = data1[k][j];
206
data1[k][j] = data1[k][j+1];
207
data1[k][j+1] = temp1;
210
String temp2 = categories1[j];
211
categories1[j] = categories1[j+1];
212
categories1[j+1] = temp2;
217
for(int i=0; i < categories2.length-1 ; i++)
219
for(int j=0; j < categories2.length-1-i; j++)
221
if(data2[0][j] < data2[0][j+1])
223
for(int k=0; k<series2.length; k++)
225
double temp1 = data2[k][j];
226
data2[k][j] = data2[k][j+1];
227
data2[k][j+1] = temp1;
230
String temp2 = categories2[j];
231
categories2[j] = categories2[j+1];
232
categories2[j+1] = temp2;
239
public void sortByAlphabet()
241
for(int i=0; i < categories1.length-1 ; i++)
243
for(int j=0; j < categories1.length-1-i; j++)
245
if(categories1[j].compareToIgnoreCase(categories1[j+1]) > 0)
247
for(int k=0; k<series1.length; k++)
249
double temp1 = data1[k][j];
250
data1[k][j] = data1[k][j+1];
251
data1[k][j+1] = temp1;
254
String temp2 = categories1[j];
255
categories1[j] = categories1[j+1];
256
categories1[j+1] = temp2;
261
for(int i=0; i < categories2.length-1 ; i++)
263
for(int j=0; j < categories2.length-1-i; j++)
265
if(categories2[j].compareToIgnoreCase(categories2[j+1]) > 0)
267
for(int k=0; k<series2.length; k++)
269
double temp1 = data2[k][j];
270
data2[k][j] = data2[k][j+1];
271
data2[k][j+1] = temp1;
274
String temp2 = categories2[j];
275
categories2[j] = categories2[j+1];
276
categories2[j+1] = temp2;