-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcmdPrint.java
More file actions
95 lines (85 loc) · 2.3 KB
/
cmdPrint.java
File metadata and controls
95 lines (85 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import java.util.*;
public class cmdPrint extends base{
public cmdPrint(Scanner line, Database db, LinkedList<String> errorsList) {
run(line, db, errorsList);
}
public void run(Scanner line, Database db, LinkedList<String> errorsList) {
while (line.hasNext()) {
String aValue = nextSymbol(line);
int[] rIndex = findRelation(aValue, db, true);
if (rIndex[0] == -1) {
System.out.println();
System.out.println("*TEMPORARY*");
} else if (rIndex[1] == 1) {
print(db.getRelations().get(rIndex[0]));
} else {
print(db.getTmpRelations().get(rIndex[0]));
}
System.out.println();
}
}
public void print(Relation r) {
System.out.println();
int[] width = printTop(r);
System.out.println();
for (int i = 0; i < r.getTuples().size(); i++) {
printTuple(i, r, width);
System.out.print("\n");
}
}
public int[] printTop(Relation r) {
printTitle(r.getTitle());
int[] width = printCategories(r);
int total = 0;
for (int j = 0; j < width.length; j++) {
total = total + width[j];
}
for (int i = 0; i < total; i++) {
System.out.print("=");
}
return width;
}
public void printTitle(String title) {
System.out.println(title);
for(int k = 0; k < title.length(); k++){
System.out.print("*");
}
System.out.println();
}
public int[] printCategories(Relation r) {
int[] width = new int[r.getCategories().size()];
for (int i = 0; i < r.getCategories().size(); i++) {
System.out.print(r.getCategories().get(i));
int size = 0;
int pad = 0;
if(r.getCategories().get(i).length() > (Integer.parseInt(r.getmaxSize().get(i)))){
size = r.getCategories().get(i).length();
pad = 2;
}
else{
size = Integer.parseInt(r.getmaxSize().get(i));
pad = ((size+2) - (r.getCategories().get(i).length()));
}
width[i] = ((r.getCategories().get(i).length()) + pad);
while(pad > 0){
System.out.print(" ");
pad--;
}
}
System.out.println();
return width;
}
public void printTuple(int x, Relation r, int[] width) {
Tuple t = r.getTuples().get(x);
for (int i = 0; i < t.attribute().size(); i++) {
int size = width[i];
int current = t.attribute().get(i).length();
int pad = (size - current);
System.out.print(t.attribute().get(i));
while (pad >= 0) {
System.out.print(" ");
pad--;
}
}
}
}