Commit 5d7692c434a9d886d6ba0da9451a5d45b52064bf
1 parent
35ea4f23
Exists in
master
update limit and field
Showing
1 changed file
with
225 additions
and
30 deletions
Show diff stats
src/main/java/sourcecode/MockUp/MockUp.java
@@ -5,6 +5,7 @@ import java.io.OutputStream; | @@ -5,6 +5,7 @@ import java.io.OutputStream; | ||
5 | import java.net.InetSocketAddress; | 5 | import java.net.InetSocketAddress; |
6 | import java.net.URLDecoder; | 6 | import java.net.URLDecoder; |
7 | import java.util.ArrayList; | 7 | import java.util.ArrayList; |
8 | +import java.util.HashMap; | ||
8 | 9 | ||
9 | import org.apache.commons.io.IOUtils; | 10 | import org.apache.commons.io.IOUtils; |
10 | import org.apache.http.Consts; | 11 | import org.apache.http.Consts; |
@@ -71,6 +72,26 @@ public class MockUp | @@ -71,6 +72,26 @@ public class MockUp | ||
71 | String method = t.getRequestMethod(); | 72 | String method = t.getRequestMethod(); |
72 | String url = t.getRequestURI().toString(); | 73 | String url = t.getRequestURI().toString(); |
73 | url = URLDecoder.decode(url, "UTF-8"); | 74 | url = URLDecoder.decode(url, "UTF-8"); |
75 | + String bodyData = IOUtils.toString(t.getRequestBody(),Consts.UTF_8); | ||
76 | + | ||
77 | + | ||
78 | + int limit = 0; | ||
79 | + | ||
80 | + if(!getKey("limit", url).equals("")) | ||
81 | + { | ||
82 | + try{ | ||
83 | + limit = Integer.parseInt(getKey("limit", url)); | ||
84 | + }catch(Exception e) | ||
85 | + { | ||
86 | + | ||
87 | + } | ||
88 | + } | ||
89 | + | ||
90 | + | ||
91 | + String[] fields = new String[0]; | ||
92 | + if(!getKey("fields", url).equals("")) | ||
93 | + fields = getKey("fields", url).split(","); | ||
94 | + | ||
74 | 95 | ||
75 | // System.out.println(t.getRequestMethod()); | 96 | // System.out.println(t.getRequestMethod()); |
76 | // if(!method.equals(GET)) | 97 | // if(!method.equals(GET)) |
@@ -96,7 +117,7 @@ public class MockUp | @@ -96,7 +117,7 @@ public class MockUp | ||
96 | // System.out.println(t.getRequestURI()); | 117 | // System.out.println(t.getRequestURI()); |
97 | 118 | ||
98 | 119 | ||
99 | - String keyData = findKey(method,url,IOUtils.toString(t.getRequestBody(),Consts.UTF_8)); | 120 | + String keyData = findKey(method,url,bodyData); |
100 | 121 | ||
101 | String collectionName = getSuffixTableName(url); | 122 | String collectionName = getSuffixTableName(url); |
102 | JSONObject responsJSON = new JSONObject(); | 123 | JSONObject responsJSON = new JSONObject(); |
@@ -139,7 +160,7 @@ public class MockUp | @@ -139,7 +160,7 @@ public class MockUp | ||
139 | { | 160 | { |
140 | 161 | ||
141 | 162 | ||
142 | - ArrayList<String> responseList = getDBData(keyData,collectionName,method); | 163 | + ArrayList<String> responseList = getDBData(keyData,collectionName,method,bodyData); |
143 | 164 | ||
144 | 165 | ||
145 | 166 | ||
@@ -152,6 +173,7 @@ public class MockUp | @@ -152,6 +173,7 @@ public class MockUp | ||
152 | { | 173 | { |
153 | if(method.equals(GET) && responseList.size() > 1) | 174 | if(method.equals(GET) && responseList.size() > 1) |
154 | { | 175 | { |
176 | + System.out.println("Multi Data => Merge"); | ||
155 | ArrayList<Object> resultData = new ArrayList<Object>(); | 177 | ArrayList<Object> resultData = new ArrayList<Object>(); |
156 | for(int i=0;i<responseList.size();i++) | 178 | for(int i=0;i<responseList.size();i++) |
157 | { | 179 | { |
@@ -162,33 +184,11 @@ public class MockUp | @@ -162,33 +184,11 @@ public class MockUp | ||
162 | JSONObject value = (JSONObject) rowJSON.get("value"); | 184 | JSONObject value = (JSONObject) rowJSON.get("value"); |
163 | if(value.has("resultData")) | 185 | if(value.has("resultData")) |
164 | { | 186 | { |
165 | - | ||
166 | -// if((value.get("resultData").toString().length()> 0) && (value.get("resultData").toString().substring(0,1).equals("["))) | ||
167 | -// { | ||
168 | -//// Object test = gson.fromJson(value.get("resultData").toString(), Object.class); | ||
169 | -//// System.out.println(test); | ||
170 | -// | ||
171 | -//// value.get("resultData").toString() | ||
172 | -// JSONObject resultlist = new JSONObject("{'test' : "+value.get("resultData").toString()+"}"); | ||
173 | -//// System.out.println(resultlist.get("test")); | ||
174 | -// JSONArray JSONArrayData = value.getJSONArray("resultData"); | ||
175 | -// System.out.println("aaaaaaaaaaaaaaaaaaaa"+JSONArrayData.get(0)); | ||
176 | -//// for(int n=0;n<resultlist.getJSONObject("test").length();n++) | ||
177 | -//// { | ||
178 | -////// System.out.println(resultlist.get()); | ||
179 | -//// } | ||
180 | -//// System.out.println(resultlist.get("test")); | ||
181 | -//// System.out.println("{'test' : "+value.get("resultData").toString()+"}"); | ||
182 | -// } | ||
183 | - | ||
184 | try{ | 187 | try{ |
185 | JSONArray JSONArrayData = value.getJSONArray("resultData"); | 188 | JSONArray JSONArrayData = value.getJSONArray("resultData"); |
186 | -// System.out.println("bbbbbbbbbb"+JSONArrayData.length()); | ||
187 | for(int n=0;n<JSONArrayData.length();n++) | 189 | for(int n=0;n<JSONArrayData.length();n++) |
188 | - { | ||
189 | resultData.add(JSONArrayData.get(n)); | 190 | resultData.add(JSONArrayData.get(n)); |
190 | -// System.out.println(JSONArrayData.get(n)); | ||
191 | - } | 191 | + |
192 | }catch(Exception e) | 192 | }catch(Exception e) |
193 | { | 193 | { |
194 | // e.printStackTrace(); | 194 | // e.printStackTrace(); |
@@ -207,6 +207,7 @@ public class MockUp | @@ -207,6 +207,7 @@ public class MockUp | ||
207 | 207 | ||
208 | }else | 208 | }else |
209 | { | 209 | { |
210 | + System.out.println("Single Data => Direct"); | ||
210 | JSONObject rowJSON = new JSONObject(responseList.get(0)); | 211 | JSONObject rowJSON = new JSONObject(responseList.get(0)); |
211 | if(rowJSON.has("value")) | 212 | if(rowJSON.has("value")) |
212 | responsJSON = (JSONObject) rowJSON.get("value"); | 213 | responsJSON = (JSONObject) rowJSON.get("value"); |
@@ -224,6 +225,13 @@ public class MockUp | @@ -224,6 +225,13 @@ public class MockUp | ||
224 | 225 | ||
225 | } | 226 | } |
226 | 227 | ||
228 | + //limit | ||
229 | + responsJSON = limitData(responsJSON,limit); | ||
230 | + | ||
231 | + //field | ||
232 | + responsJSON = FieldsData(responsJSON,fields); | ||
233 | + | ||
234 | + | ||
227 | 235 | ||
228 | response = responsJSON.toString(); | 236 | response = responsJSON.toString(); |
229 | 237 | ||
@@ -260,7 +268,6 @@ public class MockUp | @@ -260,7 +268,6 @@ public class MockUp | ||
260 | } | 268 | } |
261 | return value; | 269 | return value; |
262 | } | 270 | } |
263 | - | ||
264 | 271 | ||
265 | private static void MongoConnector(String db) { | 272 | private static void MongoConnector(String db) { |
266 | 273 | ||
@@ -297,22 +304,34 @@ public class MockUp | @@ -297,22 +304,34 @@ public class MockUp | ||
297 | } | 304 | } |
298 | } | 305 | } |
299 | 306 | ||
300 | - private static ArrayList<String> getDBData(String keyData,String collectionName,String method) | 307 | + private static ArrayList<String> getDBData(String keyData,String collectionName,String method,String bodyData) |
301 | { | 308 | { |
302 | 309 | ||
303 | ArrayList<String> returnData = new ArrayList<String>(); | 310 | ArrayList<String> returnData = new ArrayList<String>(); |
304 | - collectionName = method.toLowerCase()+"_"+collectionName; | 311 | +// collectionName = method.toLowerCase()+"_"+collectionName; |
305 | System.out.println("===> Find Normal"); | 312 | System.out.println("===> Find Normal"); |
306 | BasicDBObject basicDBObject = new BasicDBObject(); | 313 | BasicDBObject basicDBObject = new BasicDBObject(); |
307 | basicDBObject.put("key", keyData); | 314 | basicDBObject.put("key", keyData); |
308 | - returnData = getDB(basicDBObject,collectionName); | 315 | + returnData = getDB(basicDBObject,method.toLowerCase()+"_"+collectionName); |
309 | 316 | ||
310 | if(returnData.size() == 0) | 317 | if(returnData.size() == 0) |
311 | { | 318 | { |
312 | System.out.println("===> Go to Main flow"); | 319 | System.out.println("===> Go to Main flow"); |
313 | BasicDBObject basicDBObject2 = new BasicDBObject(); | 320 | BasicDBObject basicDBObject2 = new BasicDBObject(); |
314 | basicDBObject2.put("key", ""); | 321 | basicDBObject2.put("key", ""); |
315 | - returnData = getDB(basicDBObject2,collectionName); | 322 | + returnData = getDB(basicDBObject2,method.toLowerCase()+"_"+collectionName); |
323 | + | ||
324 | +// if(method.equals(POST) && returnData.size()>0) | ||
325 | +// { | ||
326 | +// //post main flow | ||
327 | +// JSONObject rowJSON = new JSONObject(returnData.get(0)); | ||
328 | +// rowJSON.remove("_id"); | ||
329 | +// JSONObject value = rowJSON.getJSONObject("value"); | ||
330 | +// value.put("resultData", new JSONObject(bodyData)); | ||
331 | +// | ||
332 | +// Document doc = Document.parse(rowJSON.toString()); | ||
333 | +// insertDB(doc,GET.toLowerCase()+"_"+collectionName); | ||
334 | +// } | ||
316 | } | 335 | } |
317 | 336 | ||
318 | 337 | ||
@@ -400,4 +419,180 @@ public class MockUp | @@ -400,4 +419,180 @@ public class MockUp | ||
400 | System.out.println("Update Mongo"); | 419 | System.out.println("Update Mongo"); |
401 | } | 420 | } |
402 | 421 | ||
422 | + private static void insertDB(Document doc,String collectionName) | ||
423 | + { | ||
424 | +// System.out.println("Start Update Mongo"); | ||
425 | + | ||
426 | + MongoCollection<Document> collection = database.getCollection(collectionName); | ||
427 | + collection.insertOne(doc); | ||
428 | + | ||
429 | + System.out.println("Insert Mongo"); | ||
430 | + } | ||
431 | + | ||
432 | + private static JSONObject limitData(JSONObject responsJSON,int limit) | ||
433 | + { | ||
434 | + if(limit != 0) | ||
435 | + { | ||
436 | + int size = 0; | ||
437 | + try{ | ||
438 | + System.out.println("Limit : "+limit); | ||
439 | + JSONArray JSONArrayData = responsJSON.getJSONArray("resultData"); | ||
440 | + | ||
441 | + ArrayList<Object> limitResultData = new ArrayList<Object>(); | ||
442 | + size = JSONArrayData.length(); | ||
443 | + for(int i=0;i<size;i++) | ||
444 | + { | ||
445 | + limitResultData.add(JSONArrayData.get(i)); | ||
446 | + if(i == limit-1) | ||
447 | + i=JSONArrayData.length(); | ||
448 | + } | ||
449 | + responsJSON.remove("resultData"); | ||
450 | + responsJSON.put("resultData",limitResultData); | ||
451 | + | ||
452 | + }catch(Exception e) | ||
453 | + { | ||
454 | + //resultData not array | ||
455 | + size = 1; | ||
456 | + } | ||
457 | + responsJSON.remove("rowCount"); | ||
458 | + responsJSON.put("rowCount", size); | ||
459 | + } | ||
460 | + | ||
461 | + return responsJSON; | ||
462 | + | ||
463 | + } | ||
464 | + | ||
465 | + private static JSONObject FieldsData(JSONObject responsJSON,String[] fileds) | ||
466 | + { | ||
467 | + if(fileds.length > 0 && responsJSON.has("resultData")) | ||
468 | + { | ||
469 | + String select = ""; | ||
470 | + for(String row:fileds) | ||
471 | + select += ","+row; | ||
472 | + System.out.println("Select Fields => "+select.substring(1)); | ||
473 | + | ||
474 | + try{ | ||
475 | + JSONArray jsonArray = responsJSON.getJSONArray("resultData"); | ||
476 | + JSONArray newJsonArray = new JSONArray(); | ||
477 | + for(int i=0;i<jsonArray.length();i++) | ||
478 | + { | ||
479 | + try{ | ||
480 | + JSONObject json = jsonArray.getJSONObject(i); | ||
481 | + JSONObject newResponse = FieldsObjectData(json,fileds); | ||
482 | + newJsonArray.put(newResponse); | ||
483 | + }catch(Exception e2) | ||
484 | + { | ||
485 | + newJsonArray.put(jsonArray.get(i)); | ||
486 | + } | ||
487 | + } | ||
488 | + responsJSON.remove("resultData"); | ||
489 | + responsJSON.put("resultData", newJsonArray); | ||
490 | + | ||
491 | + }catch(Exception e) | ||
492 | + { | ||
493 | + try{ | ||
494 | + JSONObject json = responsJSON.getJSONObject("resultData"); | ||
495 | + JSONObject newResponse = FieldsObjectData(json,fileds); | ||
496 | + responsJSON.remove("resultData"); | ||
497 | + responsJSON.put("resultData", newResponse); | ||
498 | + }catch(Exception e2) | ||
499 | + { | ||
500 | + //resultData not JSONObject or JSONArray | ||
501 | + } | ||
502 | + | ||
503 | + } | ||
504 | + } | ||
505 | + | ||
506 | + return responsJSON; | ||
507 | + | ||
508 | + } | ||
509 | + | ||
510 | + private static JSONObject FieldsObjectData(JSONObject json,String[] fileds) | ||
511 | + { | ||
512 | + JSONObject returnData = null; | ||
513 | + if(fileds.length > 0) | ||
514 | + { | ||
515 | + JSONObject newResponse = new JSONObject(); | ||
516 | + | ||
517 | + for(String row:fileds) | ||
518 | + { | ||
519 | + if(json.has(row)) | ||
520 | + newResponse.put(row, json.get(row)); | ||
521 | + | ||
522 | + } | ||
523 | + returnData = newResponse; | ||
524 | + }else | ||
525 | + { | ||
526 | + returnData = json; | ||
527 | + } | ||
528 | + | ||
529 | + | ||
530 | + return returnData; | ||
531 | + } | ||
532 | + | ||
533 | + public static ArrayList<String> getKeyUrl(String url) { | ||
534 | + | ||
535 | + ArrayList<String> arrData = new ArrayList<String>(); | ||
536 | + | ||
537 | + String[] arr = url.split("[/]"); | ||
538 | + | ||
539 | + for(int i = 0; i < arr.length; i++) { | ||
540 | + | ||
541 | + if(arr[i].contains("?")) | ||
542 | + arr[i] = arr[i].substring(0, arr[i].indexOf("?")); | ||
543 | + | ||
544 | + if(!arr[i].equals("")) | ||
545 | + arrData.add(arr[i]); | ||
546 | + } | ||
547 | + | ||
548 | + return arrData; | ||
549 | + | ||
550 | + } | ||
551 | + | ||
552 | + public static HashMap<String, ArrayList<String>> getKeyFilter(String url) { | ||
553 | + | ||
554 | + String key = "filter="; | ||
555 | + String value = null; | ||
556 | + HashMap<String,ArrayList<String>> hashMap = new HashMap<String,ArrayList<String>>(); | ||
557 | + | ||
558 | + value = url.substring(url.indexOf(key)+key.length()); | ||
559 | + value = value.substring(0, value.indexOf(")&")+1); | ||
560 | + String[] array = value.split("[()]"); | ||
561 | + | ||
562 | + for(int i = 0; i < array.length; i++) { | ||
563 | + | ||
564 | + String[] temp = array[i].split("="); | ||
565 | + | ||
566 | + if(temp.length > 1) { | ||
567 | +// System.out.println(temp[0]+" "+temp[1]); | ||
568 | + | ||
569 | + if(hashMap.containsKey(temp[0])) { | ||
570 | + hashMap.get(temp[0]).add(temp[1]); | ||
571 | + } else { | ||
572 | + ArrayList<String> tempArr = new ArrayList<>(); | ||
573 | + tempArr.add(temp[1]); | ||
574 | + hashMap.put(temp[0], tempArr); | ||
575 | + } | ||
576 | + } | ||
577 | + } | ||
578 | + | ||
579 | + return hashMap; | ||
580 | + | ||
581 | + } | ||
582 | + | ||
583 | + public static String getKey(String key, String url) { | ||
584 | + | ||
585 | + key = key + "="; | ||
586 | + String value = ""; | ||
587 | + | ||
588 | + if(url.contains(key)) { | ||
589 | + value = url.substring(url.indexOf(key)+key.length()); | ||
590 | + if(value.indexOf("&") != -1) | ||
591 | + value = value.substring(0, value.indexOf("&")); | ||
592 | + } | ||
593 | + | ||
594 | + return value; | ||
595 | + } | ||
596 | + | ||
597 | + | ||
403 | } | 598 | } |