#512 Код-ревью создания организаций

Компании:
Сбербанк
Темы:
SpringSpring BootКод ревью

Выполнить все подзадачи с 1 по 7:

// 1. Добавить недостающие аннотации

public class OrganizationController {


    private final OrganizationService organizationService;

    public void create(List<Organization> organizations) {
        organizationService.create(organizations);
    }
}

public interface OrganizationService {

    void create(List<Organization> organizations);
}

public class OrganizationServiceImpl implements OrganizationService {

    @Override
    public void create(List<Organization> organizations) {
        // Валидация атрибутов организаций
        validate(organizations);

        // Маппинг организаций на сущности
        Set<OrganizationEntity> entities = map(organizations);

        // Сохранение организаций в БД
        save(entities);
    }

    private void validate(List<Organization> organizations) {
         // 2. Проверить что список организаций не пустой

        // 3. Проверить что нет организаций без счетов

        // 4. Посчитать общее количество счетов у всех организаций
        //    и проверить что количество счетов не больше 10

        // 5. Для каждого счета проверить что
        //    - счет не пустой
        //    - счет содержит только цифры
    }

    private Set<OrganizationEntity> map(List<Organizatio> organizations) {

        // 6. Удалить дубликаты счетов
        //    Organization(accounts=[1, 1]) -> Organization(accounts=[1])

        // 7. Из списка организаций составить множество сущностей
        //    Organization(accounts=[1, 2]) -> [OrganizationEntity(account=1), OrganizationEntity(account=2)]

        return null;
    }

    private void save(Set<OrganizationEntity> entities) {
    }
}

@Getter
@Setter
public class Organization {

    /** Счета */
    private List<String> accounts;
}

@Getter
@Setter
@Entity
@Table(name = "ORGANIZATION")
@EqualsAndHashCode(of = "account")
public class OrganizationEntity {

    /** Идентификатор записи */
    @Id
    @GeneratedValue
    @Column(name = "ID")
    private UUID id;

    /** Счет */
    @Column(name = "ACCOUNT")
    private Integer account;
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти