-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTester3.java
More file actions
166 lines (155 loc) · 6.83 KB
/
Tester3.java
File metadata and controls
166 lines (155 loc) · 6.83 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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package Test;
import java.util.Scanner;
/**
*
* @author asraf
*/
public class Tester3 { //Search Published Confession Posts
static Load data = new Load();
public static void main(String[] args) {
input();
}
public static void input(){
Scanner in = new Scanner(System.in);
System.out.println("===============================================================");
System.out.println(">> Searching formats and options:");
System.out.println(">> \"YYYY-MM-DD\" - search by date");
System.out.println(">> \"YYYY-MM-DD HH:mm am/pm\" - search by date time");
System.out.println(">> \"#UMXXXXX\" - search by post ID");
System.out.println(">> <any> - search by keywords");
System.out.println("---------------------------------------------------------------");
System.out.print("> ");
String key = in.next();
System.out.println("===============================================================");
formatCheck(key);
}
public static void formatCheck(String key){
DateValidator date = new DateValidatorFormat("yyyy-MM-dd");
if(date.isValid(key)){//search by date method
searchDate(key);
}else if(key.startsWith("#UM")){//search by post ID
searchPostID(key);
}else{//search by keyword
searchKeyword(key);
}
}
public static void listingSearch(GenericQueue<ReplyNode> queue){
DoublyLinkedList<String> pageList = new DoublyLinkedList<>();
Scanner in = new Scanner(System.in);
int index = 1;
int totalCount = 1;
String input = "";
String page = "";
while(!queue.isEmpty()){
ConfessionPost postData = (ConfessionPost)queue.dequeue().data;
String content = postData.getContent();
content = truncateStr(content);
page = page + index +" #"+postData.getID()+" \""+content+"\"\n";
if(totalCount % 5 == 0){
pageList.add(page);
page = "";
totalCount =- 5;
}else if(queue.isEmpty()){
pageList.add(page);
}
index++;
totalCount++;
}
String tmp = pageList.returnCurrentPost();
int RSIndexPage = 1;
int LSIndexPage = 0;
int totalIndex = index-1;
while(!input.equalsIgnoreCase("Q")){
if(tmp!=null){
System.out.print(tmp);
if(RSIndexPage >= pageList.Size()){
System.out.print("["+((RSIndexPage-1)*5+1)+"-"+totalIndex+"]");
}else{
System.out.print("["+(1*LSIndexPage+1)+"-"+5*RSIndexPage+" of "+ totalIndex+"]");
}
System.out.println("\n---------------------------------------------------------------");
}
System.out.println(">> Options:");
System.out.println(">> \"D\" - view next page");
System.out.println(">> \"A\" - view previous page");
System.out.println(">> \"#UMXXXXX\" - view selected confession post");
System.out.println(">> \"R\" - search again");
System.out.println(">> \"Q\" - quit searching post");
input = in.next();
if(input.equalsIgnoreCase("D")){ //view next page
pageList.nextPost();
RSIndexPage++;
LSIndexPage+=5;
if(pageList.returnCurrentPost()==null){
pageList.firstPost();
RSIndexPage = 1;
LSIndexPage = 0;
}
tmp = pageList.returnCurrentPost();
System.out.println("---------------------------------------------------------------");
}else if(input.equalsIgnoreCase("A")){ //view previous page
pageList.previousPost();
RSIndexPage--;
LSIndexPage-=5;
if(pageList.returnCurrentPost()==null){
pageList.lastPost();
RSIndexPage = pageList.Size();
}
tmp = pageList.returnCurrentPost();
System.out.println("---------------------------------------------------------------");
}else if(input.startsWith("#UM")){
StringBuilder buf = new StringBuilder(input);
buf.replace(0, 1, "");
ReplyNode node = data.searchDataByPostID(buf.toString());
ConfessionPost post = (ConfessionPost) node.data;
Tester2 view = new Tester2();
DoublyLinkedList list = new DoublyLinkedList();
list.add(post);
view.showPost(list);
}else if(input.equalsIgnoreCase("R")){
input = "Q";
input();
}else if(input.equalsIgnoreCase("Q")){
tmp = null;
}
}
}
public static void searchDate(String key){
GenericQueue<ReplyNode> queue;
queue = data.searchDataByDate(key);
System.out.println("===============================================================");
System.out.println(">> Search results by the date \""+key+"\".");
listingSearch(queue);
}
public static void searchPostID(String key){
StringBuilder buf = new StringBuilder(key);
buf.replace(0, 1, "");
ReplyNode node = data.searchDataByPostID(buf.toString());
ConfessionPost post = (ConfessionPost) node.data;
System.out.println("===============================================================");
System.out.println(">> Search results by the post ID \""+key+"\".");
Tester2 view = new Tester2();
DoublyLinkedList list = new DoublyLinkedList();
list.add(post);
view.showPost(list);
}
public static void searchKeyword(String key){
GenericQueue<ReplyNode> queue;
queue = data.searchDataByKeyword(key);
System.out.println("===============================================================");
System.out.println(">> Search results by the keyword \""+key+"\".");
listingSearch(queue);
}
public static String truncateStr(String content){
StringBuilder buf = new StringBuilder(content);
if(content.length()>45){
buf.replace(45, content.length(), "");
buf.append("...");
}
return buf.toString();
}
}