/src/main/java/org/openmf/mifos/dataimport/populator/GlAccountSheetPopulator.java

https://gitlab.com/skylabase/DataImportTool · Java · 105 lines · 85 code · 20 blank · 0 comment · 2 complexity · 30575c00f88ea16ccab0c9becb72a1ca MD5 · raw file

  1. package org.openmf.mifos.dataimport.populator;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import org.apache.poi.ss.usermodel.Row;
  6. import org.apache.poi.ss.usermodel.Sheet;
  7. import org.apache.poi.ss.usermodel.Workbook;
  8. import org.openmf.mifos.dataimport.dto.accounting.GlAccount;
  9. import org.openmf.mifos.dataimport.handler.Result;
  10. import org.openmf.mifos.dataimport.http.RestClient;
  11. import com.google.gson.Gson;
  12. import com.google.gson.JsonArray;
  13. import com.google.gson.JsonElement;
  14. import com.google.gson.JsonParser;
  15. public class GlAccountSheetPopulator extends AbstractWorkbookPopulator {
  16. private final RestClient client;
  17. private static final int ID_COL = 0;
  18. private static final int ACCOUNT_NAME_COL = 1;
  19. private List<GlAccount> glAccounts;
  20. private ArrayList<String> glAccountNames;
  21. public GlAccountSheetPopulator(RestClient client) {
  22. this.client = client;
  23. }
  24. private String content;
  25. @Override
  26. public Result downloadAndParse() {
  27. Result result = new Result();
  28. try {
  29. client.createAuthToken();
  30. glAccounts = new ArrayList<GlAccount>();
  31. glAccountNames = new ArrayList<String>();
  32. content = client.get("glaccounts");
  33. parseglAccounts();
  34. } catch (Exception e) {
  35. result.addError(e.getMessage());
  36. }
  37. return result;
  38. }
  39. private void parseglAccounts() {
  40. Gson gson = new Gson();
  41. JsonElement json = new JsonParser().parse(content);
  42. JsonArray array = json.getAsJsonArray();
  43. Iterator<JsonElement> iterator = array.iterator();
  44. while(iterator.hasNext()) {
  45. json = iterator.next();
  46. GlAccount glAccount = gson.fromJson(json, GlAccount.class);
  47. if(glAccount.getUsage().getValue().equals("DETAIL"))
  48. glAccounts.add(glAccount);
  49. glAccountNames.add(glAccount.getName().trim().replaceAll("[ )(]", "_"));
  50. }
  51. }
  52. @Override
  53. public Result populate(Workbook workbook) {
  54. Result result = new Result();
  55. try{
  56. int rowIndex = 1;
  57. Sheet glAccountSheet = workbook.createSheet("GlAccounts");
  58. setLayout(glAccountSheet);
  59. populateglAccounts(glAccountSheet, rowIndex);
  60. glAccountSheet.protectSheet("");
  61. } catch (Exception e) {
  62. result.addError(e.getMessage());
  63. }
  64. return result;
  65. }
  66. private void populateglAccounts(Sheet GlAccountSheet, int rowIndex) {
  67. for(GlAccount glAccount:glAccounts) {
  68. Row row = GlAccountSheet.createRow(rowIndex);
  69. writeInt(ID_COL, row, glAccount.getId());
  70. writeString(ACCOUNT_NAME_COL, row, glAccount.getName().trim().replaceAll("[ )(]", "_"));
  71. rowIndex++;
  72. }
  73. }
  74. private void setLayout(Sheet worksheet) {
  75. worksheet.setColumnWidth(ID_COL, 2000);
  76. worksheet.setColumnWidth(ACCOUNT_NAME_COL, 7000);
  77. Row rowHeader = worksheet.createRow(0);
  78. rowHeader.setHeight((short)500);
  79. writeString(ID_COL, rowHeader, "Gl Account ID");
  80. writeString(ACCOUNT_NAME_COL, rowHeader, "Gl Account Name");
  81. }
  82. public Integer getGlAccountNamesSize(){
  83. return glAccountNames.size();
  84. }
  85. }