1 package uba.db.sql.server;
2
3 import uba.db.ar.Tupla;
4 import uba.db.sql.interpreter.QueryPlanner;
5
6 /***
7 * Utility methods para ser usados por el client.
8 *
9 * @version $Revision 1.0$
10 */
11 public class ServerDataConverter {
12
13 private QueryPlanner queryPlanner;
14
15 public ServerDataConverter(QueryPlanner planner) {
16 queryPlanner = planner;
17 }
18
19 public String convertTuplaToString(Tupla t) {
20 String result = "";
21 int cantColumnas = t.tuplaDefinition().getSize();
22 result = result + cantColumnas + "\t";
23 int maxSize;
24 String texto;
25 for (int j = 1; j <= cantColumnas; j++) {
26 maxSize = 10;
27 texto = t.get(j).toString();
28 result = result + texto + blancos(maxSize - texto.length()) + "\t";
29 }
30 return result;
31 }
32
33 /***
34 * Crea un string de n blancos.
35 *
36 * @todo BUSCAR UNA MEJOR MANERA DE HACER ESTO.
37 */
38 private String blancos(int n) {
39 String result = "";
40 for (int i = 0; i < n; result += " ", i++)
41 ;
42 return result;
43 }
44
45 /***
46 * @param planner
47 * @return
48 */
49 public String stringFromCurrentRequest() {
50 String tuplasString = "";
51 String planDetailString;
52 String result;
53 int filas = 0;
54 String columnasString = stringFromColumnNames();
55 while (queryPlanner.hasMoreResults()) {
56 filas++;
57 tuplasString += convertTuplaToString(queryPlanner.nextTuple());
58 }
59 planDetailString = queryPlanner.currentPlan();
60 result = filas + "\t" + columnasString + tuplasString
61 + planDetailString;
62 return result;
63 }
64
65 /***
66 * @return
67 */
68 private String stringFromColumnNames() {
69 String result = "";
70 int cantColumnas = queryPlanner.currentTuplaDefinition().getSize();
71 result = result + cantColumnas + "\t";
72 int maxSize;
73 String texto;
74 for (int i = 1; i <= cantColumnas; i++) {
75 maxSize = 10;
76 texto = queryPlanner.currentTuplaDefinition().attributeDefAt(i)
77 .getName();
78 result = result + texto + blancos(maxSize - texto.length()) + "\t";
79 }
80 return result;
81 }
82 }