View Javadoc

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  }