Commit 5d7692c434a9d886d6ba0da9451a5d45b52064bf

Authored by sumatek
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 5 import java.net.InetSocketAddress;
6 6 import java.net.URLDecoder;
7 7 import java.util.ArrayList;
  8 +import java.util.HashMap;
8 9  
9 10 import org.apache.commons.io.IOUtils;
10 11 import org.apache.http.Consts;
... ... @@ -71,6 +72,26 @@ public class MockUp
71 72 String method = t.getRequestMethod();
72 73 String url = t.getRequestURI().toString();
73 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 96 // System.out.println(t.getRequestMethod());
76 97 // if(!method.equals(GET))
... ... @@ -96,7 +117,7 @@ public class MockUp
96 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 122 String collectionName = getSuffixTableName(url);
102 123 JSONObject responsJSON = new JSONObject();
... ... @@ -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 173 {
153 174 if(method.equals(GET) && responseList.size() > 1)
154 175 {
  176 + System.out.println("Multi Data => Merge");
155 177 ArrayList<Object> resultData = new ArrayList<Object>();
156 178 for(int i=0;i<responseList.size();i++)
157 179 {
... ... @@ -162,33 +184,11 @@ public class MockUp
162 184 JSONObject value = (JSONObject) rowJSON.get("value");
163 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 187 try{
185 188 JSONArray JSONArrayData = value.getJSONArray("resultData");
186   -// System.out.println("bbbbbbbbbb"+JSONArrayData.length());
187 189 for(int n=0;n<JSONArrayData.length();n++)
188   - {
189 190 resultData.add(JSONArrayData.get(n));
190   -// System.out.println(JSONArrayData.get(n));
191   - }
  191 +
192 192 }catch(Exception e)
193 193 {
194 194 // e.printStackTrace();
... ... @@ -207,6 +207,7 @@ public class MockUp
207 207  
208 208 }else
209 209 {
  210 + System.out.println("Single Data => Direct");
210 211 JSONObject rowJSON = new JSONObject(responseList.get(0));
211 212 if(rowJSON.has("value"))
212 213 responsJSON = (JSONObject) rowJSON.get("value");
... ... @@ -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 236 response = responsJSON.toString();
229 237  
... ... @@ -260,7 +268,6 @@ public class MockUp
260 268 }
261 269 return value;
262 270 }
263   -
264 271  
265 272 private static void MongoConnector(String db) {
266 273  
... ... @@ -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 310 ArrayList<String> returnData = new ArrayList<String>();
304   - collectionName = method.toLowerCase()+"_"+collectionName;
  311 +// collectionName = method.toLowerCase()+"_"+collectionName;
305 312 System.out.println("===> Find Normal");
306 313 BasicDBObject basicDBObject = new BasicDBObject();
307 314 basicDBObject.put("key", keyData);
308   - returnData = getDB(basicDBObject,collectionName);
  315 + returnData = getDB(basicDBObject,method.toLowerCase()+"_"+collectionName);
309 316  
310 317 if(returnData.size() == 0)
311 318 {
312 319 System.out.println("===> Go to Main flow");
313 320 BasicDBObject basicDBObject2 = new BasicDBObject();
314 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 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 }
... ...