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 | } |