/
Chebarik
/
PackageManagement
Обзор
Документация
Войти
/
Chebarik
/
PackageManagement
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/packagemanagement/application/dto/PackageMapper.java
69 строк
3 KB
Николай Мехоношин
Implemented non functional requirements
14 апр 2026, 18:37
14 апр 2026, 18:37
2e86838
Код
Авторство
О чём код?
package com.packagemanagement.application.dto; import com.packagemanagement.domain.model.Package; import com.packagemanagement.domain.model.PackageFormat; import com.packagemanagement.domain.model.PackageId; import com.packagemanagement.domain.model.PackageVersion; import com.packagemanagement.domain.model.VersionStatus; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; import java.time.Instant; import java.time.format.DateTimeFormatter; import java.util.List; @Mapper(componentModel = "spring") public interface PackageMapper { DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ISO_INSTANT; @Mapping(target = "id", source = "id", qualifiedByName = "packageIdToString") @Mapping(target = "format", source = "format", qualifiedByName = "formatToString") @Mapping(target = "highestVersion", source = "pkg", qualifiedByName = "extractHighestVersion") @Mapping(target = "createdAt", source = "createdAt", qualifiedByName = "instantToString") @Mapping(target = "updatedAt", source = "updatedAt", qualifiedByName = "instantToString") @Mapping(target = "versions", source = "versions") PackageDto toDto(Package pkg); @Mapping(target = "id", source = "id", qualifiedByName = "packageIdToString") @Mapping(target = "format", source = "format", qualifiedByName = "formatToString") @Mapping(target = "highestVersion", source = "pkg", qualifiedByName = "extractHighestVersion") @Mapping(target = "createdAt", source = "createdAt", qualifiedByName = "instantToString") @Mapping(target = "updatedAt", source = "updatedAt", qualifiedByName = "instantToString") @Mapping(target = "versions", expression = "java(java.util.Collections.emptyList())") PackageDto toDtoWithoutVersions(Package pkg); @Mapping(target = "publishedDate", source = "publishedDate", qualifiedByName = "instantToString") @Mapping(target = "status", source = "status", qualifiedByName = "statusToString") VersionDto toDto(PackageVersion version); List<VersionDto> toVersionDtoList(List<PackageVersion> versions); @Named("packageIdToString") default String packageIdToString(PackageId id) { return id != null ? id.getValue() : null; } @Named("formatToString") default String formatToString(PackageFormat format) { return format != null ? format.name() : null; } @Named("statusToString") default String statusToString(VersionStatus status) { return status != null ? status.name() : null; } @Named("instantToString") default String instantToString(Instant instant) { return instant != null ? DATE_FORMATTER.format(instant) : null; } @Named("extractHighestVersion") default String extractHighestVersion(Package pkg) { return pkg.getHighestVersion() .map(PackageVersion::getVersionNumber) .orElse(null); } }