Ответ не получается должным образом в соответствии с нашим требованием - PullRequest
0 голосов
/ 17 апреля 2020

Я использую весеннюю загрузку с безопасностью в java restful API. Я хочу правильный ответ согласно моему требованию. Я покажу вам мою таблицу базы данных и потребую ответа. Я также покажу вам мой проверенный код. Я пытался, но ответ не получается должным образом в соответствии с моим требованием. кто-нибудь есть идея ?? как это сделать?

  1. Таблица базы данных This is my Event Type table

  2. Мне нравится этот ответ из приведенной выше таблицы

"eventColorLegends": [
    {
      "color": "Red",
      "items": [
        "Musician1",
        "Workshop",
        "Seminart"
        ]
    },
    {
      "color": "Black",
      "items": [
        "Product Launches",
        "Incentive Trips"
      ]
    },
    {
      "color": "Green",
      "items": [
        "Dancing",
        "Rotary - Service Club",
        "Historical/Remembrance"
      ]
    },
    {
      "color": "Yellow",
      "items": [
        "Party",
        "Incubator - Accelerator",
        "Leads - Referral"
      ]
    },
    {
      "color": "Orange",
      "items": [
        "Charity",
        "Non-profit",
        "Rotary - Service Club",
        "Historical/Remembrance",

      ]
    },
    {
      "color": "Coffee",
      "items": [
        "Incubator - Accelerator"
      ]
    },
    {
      "color": "Blue",
      "items": [
        "Leads - Referral",
        "Historical/Remembrance",
        "Rotary - Service Club",
        "For-Profit Company",

      ]
    },
]   
У меня есть пробный код в классе serviceImpl
public GenericResponse findAllTypeOfEvents() {
        try {
            List<TypesOfEvents> typesOfEventsList = typeOfEventsDao.findAll();
            List<String> listEvents = new ArrayList<String>();
            for (int i = 0; i < typesOfEventsList.size(); i++) {
                for (int j = i + 1; j < typesOfEventsList.size()- 1; j++) {
                    if (typesOfEventsList.get(i).getColor().equalsIgnoreCase(typesOfEventsList.get(j).getColor())) {
                        if (typesOfEventsList.get(j).getType().equalsIgnoreCase(typesOfEventsList.get(j).getType())){
                            listEvents.add(i,typesOfEventsList.get(j).getType());
                            System.out.println(typesOfEventsList.get(i).getColor() + " : " + typesOfEventsList.get(j).getType());
                        }
                    }
                }
            }
            return APIResponseBuilder.build(true, listEvents.toArray(), typesOfEventsList.size() > 0 ? commonMessages.findAllTrue : commonMessages.findAllFalse);
        } catch (Exception e) {
            logger.error(commonMessages.findAllException + "TypesOfEvents " + e.getMessage());
            return APIResponseBuilder.build(false, e.getMessage(), commonMessages.exception);
        }
    }

4.MY Response

"data": [
    "Seminart",
    "For-Profit Company",
    "For-Profit Company",
    "Historical/Remembrance",
    "Leads - Referral",
    "Historical/Remembrance",
    "Historical/Remembrance",
    "Historical/Remembrance",
    "Rotary - Service Club",
    "For-Profit Company",
    "For-Profit Company",
    "For-Profit Company",
    "Historical/Remembrance",
    "Seminart",
    "Seminart",
    "Historical/Remembrance",
    "Workshop",
    "Leads - Referral",
    "Leads - Referral",
    "For-Profit Company",
    "Incubator - Accelerator",
    "Seminart",
    "Historical/Remembrance",
    "Leads - Referral",
    "Leads - Referral",
    "Leads - Referral",
    "Incubator - Accelerator",
    "For-Profit Company",
    "Incubator - Accelerator",
    "Historical/Remembrance",
    "Rotary - Service Club",
    "Incubator - Accelerator",
    "Historical/Remembrance",
    "Rotary - Service Club",
    "Leads - Referral",
    "Workshop",
    "Seminart",
    "Historical/Remembrance",
    "Rotary - Service Club",
    "Non-profit",
    "Incubator - Accelerator",
    "Historical/Remembrance",
    "Rotary - Service Club",
    "Leads - Referral",
    "Incubator - Accelerator",
    "Rotary - Service Club",
    "Historical/Remembrance",
    "Historical/Remembrance",
    "Incentive Trips",
    "Workshop",
    "Seminart",
    "Workshop"
  ]
}

1 Ответ

1 голос
/ 17 апреля 2020

Создайте Map<String, List<String>> для сопоставления списка типов для каждого цвета.

Map<String, List<String>> map = new HashMap<>();
for (int i = 0; i < typesOfEventsList.size(); i++) {
     if (fruits.containsKey(typesOfEventsList.get(i).getColor())){
          List<String> list = map.get(typesOfEventsList.get(i).getColor());
          list.add(typesOfEventsList.get(i).getType());
          map.put(typesOfEventsList.get(i).getColor(), list);
     } else {
         List<String> list =  new ArrayList<String>();
         list.add(typesOfEventsList.get(i).getType());
         map.put(typesOfEventsList.get(i).getColor(), list);
    }
}

Затем создайте класс TypeByColor

class TypeByColor {
    String color;
    List<String> items;
}

Затем создайте список из карты

    List<TypeByColor> data = new ArrayList<>();
    for (String name : map.keySet())  
    { 
        list.add(new TypeByColor(name,map.get(name)));
    } 
...