root / project / src / main / java / testapp / TestApp.java @ 1
History | View | Annotate | Download (5.41 KB)
1 |
package main.java.testapp; |
---|---|
2 |
|
3 |
import main.java.service.RMI; |
4 |
|
5 |
|
6 |
import java.io.File; |
7 |
import java.rmi.NotBoundException; |
8 |
import java.rmi.RemoteException; |
9 |
import java.rmi.registry.LocateRegistry; |
10 |
import java.rmi.registry.Registry; |
11 |
|
12 |
import static main.java.utils.Utilities.validateAccessPoint; |
13 |
|
14 |
//TODO: RENAME TO TestApp
|
15 |
public class TestApp { |
16 |
|
17 |
|
18 |
public static String AP; |
19 |
public static String subProtocol; |
20 |
public static String filePath; |
21 |
public static int replicationDegree; |
22 |
private static String rmiObjectAddress; |
23 |
private static String rmiObjectName; |
24 |
private static int amount; |
25 |
|
26 |
private static RMI peer; |
27 |
|
28 |
/*
|
29 |
java DBS <peer_ap> <sub_protocol> <opnd_1> <opnd_2>
|
30 |
java DBS 1923 BACKUP test1.pdf 3
|
31 |
*/
|
32 |
|
33 |
/*
|
34 |
If you choose to use RMI in the communication between the test application and the peer,
|
35 |
you should use as access point the name of the remote object providing the "testing" service.
|
36 |
*/
|
37 |
|
38 |
public static void main(String[] args) { |
39 |
|
40 |
|
41 |
|
42 |
parseAccessPoint(args); |
43 |
parseSubProtocol(args); |
44 |
|
45 |
try {
|
46 |
Registry registry = LocateRegistry.getRegistry(rmiObjectAddress); |
47 |
|
48 |
peer = (RMI)registry.lookup(rmiObjectName); |
49 |
|
50 |
|
51 |
} catch (RemoteException | NotBoundException e) { |
52 |
System.out.println("Invalid RMI object name"); |
53 |
return;
|
54 |
} |
55 |
|
56 |
|
57 |
|
58 |
if(subProtocol.equals("BACKUP")) { |
59 |
System.out.println("Initializing Backup..."); |
60 |
parseBackupArguments(args); |
61 |
|
62 |
try {
|
63 |
File file = new File(filePath); |
64 |
peer.backup(file, replicationDegree); |
65 |
System.out.println("\t File Path: " + filePath + "\n"); |
66 |
} catch (RemoteException e) { |
67 |
e.printStackTrace(); |
68 |
} |
69 |
} else if(subProtocol.equals("RESTORE")) { |
70 |
System.out.println("Initializing Restore..."); |
71 |
parseRestoreArguments(args); |
72 |
|
73 |
try {
|
74 |
File file = new File(filePath); |
75 |
peer.restore(file); |
76 |
} catch (RemoteException e) { |
77 |
e.printStackTrace(); |
78 |
} |
79 |
} else if(subProtocol.equals("DELETE")) { |
80 |
System.out.println("Initializing DELETE"); |
81 |
parseDeleteArguments(args); |
82 |
try {
|
83 |
peer.delete(filePath); |
84 |
} catch (RemoteException e) { |
85 |
e.printStackTrace(); |
86 |
} |
87 |
|
88 |
} |
89 |
else if(subProtocol.equals("RECLAIM")) { |
90 |
System.out.println("Initializing Reclaim..."); |
91 |
parseReclaimArguments(args); |
92 |
|
93 |
try {
|
94 |
peer.reclaim(amount); |
95 |
} catch (RemoteException e) { |
96 |
e.printStackTrace(); |
97 |
} |
98 |
} |
99 |
else if(subProtocol.equals("STATE")){ |
100 |
System.out.println("Retrieving testapp state..."); |
101 |
|
102 |
try {
|
103 |
peer.state(); |
104 |
} catch (RemoteException e) { |
105 |
e.printStackTrace(); |
106 |
} |
107 |
} |
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 |
} |
116 |
|
117 |
private static void parseDeleteArguments(String[] args) { |
118 |
|
119 |
filePath = args[2];
|
120 |
System.out.println("DELETE FILE PATH: " + filePath); |
121 |
|
122 |
} |
123 |
|
124 |
private static void parseSubProtocol(String[] args) { |
125 |
subProtocol = args[1];
|
126 |
} |
127 |
|
128 |
private static boolean parseBackupArguments(String[] args) { |
129 |
|
130 |
if(args.length != 4) { |
131 |
System.out.println("\t Usage: peer <accessPoint> BACKUP <filePath> <replicationDegree> \n"); |
132 |
return false; |
133 |
} else {
|
134 |
filePath = args[2];
|
135 |
replicationDegree = Integer.parseInt(args[3]); |
136 |
} |
137 |
|
138 |
System.out.println("\t \t \t TestApp Arguments\n\n" + |
139 |
"\t Access Point: " + AP + "\n" + |
140 |
"\t Sub Protocol : " + subProtocol + "\n" + |
141 |
"\t File Path: " + filePath + "\n" + "\n" + |
142 |
"\t Replication Degree: " + replicationDegree + "\n"); |
143 |
|
144 |
return true; |
145 |
|
146 |
} |
147 |
|
148 |
private static boolean parseRestoreArguments(String[] args) { |
149 |
if(args.length != 3) { |
150 |
System.out.println("\t Usage: peer <accessPoint> RESTORE <filePath> <replicationDegree> \n"); |
151 |
return false; |
152 |
} else {
|
153 |
filePath = args[2];
|
154 |
|
155 |
} |
156 |
|
157 |
System.out.println("\t \t \t \t TestApp Arguments\n\n" + |
158 |
"\t Access Point: " + AP + "\n" + |
159 |
"\t Sub Protocol : " + subProtocol + "\n" + |
160 |
"\t File Path: " + filePath + "\n" + "\n"); |
161 |
|
162 |
return true; |
163 |
} |
164 |
|
165 |
private static boolean parseReclaimArguments(String[] args){ |
166 |
if(args.length != 3) { |
167 |
System.out.println("\t Usage: \n" + "\t On src/main/java run: \n" + "\t \t java Peer.peer <access_point> " + |
168 |
"RECLAIM <amount> \n");
|
169 |
return false; |
170 |
} else {
|
171 |
amount = Integer.parseInt(args[2]); |
172 |
|
173 |
} |
174 |
|
175 |
System.out.println("\t \t \t \t TestApp Arguments\n\n" + |
176 |
"\t Access Point: " + AP + "\n" + |
177 |
"\t Sub Protocol : " + subProtocol + "\n" + |
178 |
"\t Amount: " + amount + "\n" + "\n" ); |
179 |
|
180 |
return true; |
181 |
} |
182 |
|
183 |
public static void parseAccessPoint(String[] args) { |
184 |
|
185 |
AP = args[0];
|
186 |
|
187 |
|
188 |
if(validateAccessPoint(AP)) {
|
189 |
String[] splittedAP = AP.split("/"); |
190 |
rmiObjectName = splittedAP[1];
|
191 |
rmiObjectAddress = splittedAP[0];
|
192 |
} else {
|
193 |
System.out.println("\t Wrong Access Point format! \n" + "\t Usage: IP/remoteObjectName"); |
194 |
} |
195 |
|
196 |
|
197 |
} |
198 |
|
199 |
|
200 |
} |