Advertisement
Ellie29

Untitled

Dec 10th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.97 KB | None | 0 0
  1.  public void calculateBalance() {
  2.  
  3.         new LoadBalanceView().doInBackground();
  4.         HashMap<String, String> tmp = new HashMap<String, String>();
  5.         HashMap<String, String> tmp2 = new HashMap<String, String>();
  6.         HashMap<String, String> result = new HashMap<String, String>();
  7.         sortingFlowList = balanceViewList;
  8.  
  9.         while (!sortingFlowList.isEmpty() ) {
  10.             if(sortingFlowList.size()==0) break;
  11.             Collections.sort(sortingFlowList, new MapComparator(TAG_TOTALAMOUNT));
  12.             result = new HashMap<String, String>();
  13.             tmp = sortingFlowList.get(0);
  14.             sortingFlowList.remove(tmp);
  15.             //if equals !!
  16.             for (int i = 0; i < sortingFlowList.size(); i++) {
  17.                
  18.                 Double b = Math.abs(Double.valueOf(tmp.get(TAG_TOTALAMOUNT))) -  Math.abs(Double.valueOf(sortingFlowList.get(i).get(TAG_TOTALAMOUNT)));
  19.                 BigDecimal bd = new BigDecimal(b).setScale(2, RoundingMode.HALF_UP);
  20.                 double newInput = bd.doubleValue();
  21.                 if(Math.abs(newInput)<0.01){
  22.                     result = new HashMap<>();
  23.                     result.put(TAG_SENDER, tmp.get(TAG_LOGIN));
  24.  
  25.                     //rounding result
  26.                     BigDecimal tmpBD = new BigDecimal(Double.valueOf(tmp.get(TAG_TOTALAMOUNT))).setScale(2, RoundingMode.HALF_UP);
  27.                     double newBD = tmpBD.doubleValue();
  28.  
  29.                     result.put(TAG_AMOUNT, String.valueOf(Math.abs(newBD)));
  30.                     result.put(TAG_RECEIVER, sortingFlowList.get(i).get(TAG_LOGIN));
  31.                     balanceFlowList.add(result);
  32.                     sortingFlowList.remove(sortingFlowList.get(i));
  33.                 }
  34.             }
  35.  
  36.             if (result.isEmpty()) {
  37.                 tmp2 = sortingFlowList.get(sortingFlowList.size()-1);
  38.  
  39.                 //tmp2 > tmp
  40.                 if (Math.abs(Double.valueOf(tmp2.get(TAG_TOTALAMOUNT))) > Math.abs(Double.valueOf(tmp.get(TAG_TOTALAMOUNT)))) {
  41.                     result = new HashMap<>();
  42.                     result.put(TAG_SENDER, tmp.get(TAG_LOGIN));
  43.  
  44.                     //rounding result
  45.                     BigDecimal tmpBD = new BigDecimal(Double.valueOf(tmp.get(TAG_TOTALAMOUNT))).setScale(2, RoundingMode.HALF_UP);
  46.                     double newBD = tmpBD.doubleValue();
  47.  
  48.                     result.put(TAG_AMOUNT, String.valueOf(Math.abs(newBD)));
  49.                     result.put(TAG_RECEIVER, tmp2.get(TAG_LOGIN));
  50.  
  51.                     Double tmpbalance = Double.valueOf(tmp2.get(TAG_TOTALAMOUNT)) - Math.abs(Double.valueOf(tmp.get(TAG_TOTALAMOUNT)));
  52.                     BigDecimal bd = new BigDecimal(tmpbalance).setScale(2, RoundingMode.HALF_UP);
  53.                     double balance = bd.doubleValue();
  54.                     if(Math.abs(balance) <0.01) balance =0.0;
  55.  
  56.                     sortingFlowList.get(sortingFlowList.indexOf(tmp2)).put(TAG_TOTALAMOUNT, String.valueOf(balance));
  57.                     balanceFlowList.add(result);
  58.  
  59.                 } else {
  60.  
  61.                     //tmp2 < tmp
  62.                     result = new HashMap<>();
  63.                     result.put(TAG_SENDER, tmp.get(TAG_LOGIN));
  64.                     result.put(TAG_AMOUNT, tmp2.get(TAG_TOTALAMOUNT));
  65.                     result.put(TAG_RECEIVER, tmp2.get(TAG_LOGIN));
  66.  
  67.                     //rounding result
  68.                     Double tmpbalance = Double.valueOf((tmp.get(TAG_TOTALAMOUNT))) + Double.valueOf(tmp2.get(TAG_TOTALAMOUNT));
  69.                     BigDecimal bd = new BigDecimal(tmpbalance).setScale(2, RoundingMode.HALF_UP);
  70.                     double balance = bd.doubleValue();
  71.                     if(Math.abs(balance) <0.05) balance =0.0;
  72.  
  73.                     tmp.put(TAG_TOTALAMOUNT, String.valueOf(balance));
  74.                     sortingFlowList.remove(tmp2);
  75.                     sortingFlowList.add(tmp);
  76.                     balanceFlowList.add(result);
  77.                 }
  78.  
  79.             }
  80.         }
  81.  
  82.         createView();
  83.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement