ClusterMapper.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.provectus.kafka.ui.mapper;
  2. import com.provectus.kafka.ui.config.ClustersProperties;
  3. import com.provectus.kafka.ui.model.BrokerConfigDTO;
  4. import com.provectus.kafka.ui.model.BrokerDTO;
  5. import com.provectus.kafka.ui.model.BrokerDiskUsageDTO;
  6. import com.provectus.kafka.ui.model.BrokerMetricsDTO;
  7. import com.provectus.kafka.ui.model.ClusterDTO;
  8. import com.provectus.kafka.ui.model.ClusterFeature;
  9. import com.provectus.kafka.ui.model.ClusterMetricsDTO;
  10. import com.provectus.kafka.ui.model.ClusterStatsDTO;
  11. import com.provectus.kafka.ui.model.ConfigSourceDTO;
  12. import com.provectus.kafka.ui.model.ConfigSynonymDTO;
  13. import com.provectus.kafka.ui.model.ConnectDTO;
  14. import com.provectus.kafka.ui.model.InternalBroker;
  15. import com.provectus.kafka.ui.model.InternalBrokerConfig;
  16. import com.provectus.kafka.ui.model.InternalBrokerDiskUsage;
  17. import com.provectus.kafka.ui.model.InternalClusterState;
  18. import com.provectus.kafka.ui.model.InternalPartition;
  19. import com.provectus.kafka.ui.model.InternalReplica;
  20. import com.provectus.kafka.ui.model.InternalTopic;
  21. import com.provectus.kafka.ui.model.InternalTopicConfig;
  22. import com.provectus.kafka.ui.model.MetricDTO;
  23. import com.provectus.kafka.ui.model.Metrics;
  24. import com.provectus.kafka.ui.model.PartitionDTO;
  25. import com.provectus.kafka.ui.model.ReplicaDTO;
  26. import com.provectus.kafka.ui.model.TopicConfigDTO;
  27. import com.provectus.kafka.ui.model.TopicDTO;
  28. import com.provectus.kafka.ui.model.TopicDetailsDTO;
  29. import com.provectus.kafka.ui.service.masking.DataMasking;
  30. import com.provectus.kafka.ui.service.metrics.RawMetric;
  31. import java.util.List;
  32. import java.util.Map;
  33. import java.util.stream.Collectors;
  34. import org.apache.kafka.clients.admin.ConfigEntry;
  35. import org.mapstruct.Mapper;
  36. import org.mapstruct.Mapping;
  37. @Mapper(componentModel = "spring")
  38. public interface ClusterMapper {
  39. ClusterDTO toCluster(InternalClusterState clusterState);
  40. ClusterStatsDTO toClusterStats(InternalClusterState clusterState);
  41. default ClusterMetricsDTO toClusterMetrics(Metrics metrics) {
  42. return new ClusterMetricsDTO()
  43. .items(metrics.getSummarizedMetrics().map(this::convert).collect(Collectors.toList()));
  44. }
  45. private MetricDTO convert(RawMetric rawMetric) {
  46. return new MetricDTO()
  47. .name(rawMetric.name())
  48. .labels(rawMetric.labels())
  49. .value(rawMetric.value());
  50. }
  51. default BrokerMetricsDTO toBrokerMetrics(List<RawMetric> metrics) {
  52. return new BrokerMetricsDTO()
  53. .metrics(metrics.stream().map(this::convert).collect(Collectors.toList()));
  54. }
  55. @Mapping(target = "isSensitive", source = "sensitive")
  56. @Mapping(target = "isReadOnly", source = "readOnly")
  57. BrokerConfigDTO toBrokerConfig(InternalBrokerConfig config);
  58. default ConfigSynonymDTO toConfigSynonym(ConfigEntry.ConfigSynonym config) {
  59. if (config == null) {
  60. return null;
  61. }
  62. ConfigSynonymDTO configSynonym = new ConfigSynonymDTO();
  63. configSynonym.setName(config.name());
  64. configSynonym.setValue(config.value());
  65. if (config.source() != null) {
  66. configSynonym.setSource(ConfigSourceDTO.valueOf(config.source().name()));
  67. }
  68. return configSynonym;
  69. }
  70. TopicDTO toTopic(InternalTopic topic);
  71. PartitionDTO toPartition(InternalPartition topic);
  72. BrokerDTO toBrokerDto(InternalBroker broker);
  73. TopicDetailsDTO toTopicDetails(InternalTopic topic);
  74. @Mapping(target = "isReadOnly", source = "readOnly")
  75. @Mapping(target = "isSensitive", source = "sensitive")
  76. TopicConfigDTO toTopicConfig(InternalTopicConfig topic);
  77. ReplicaDTO toReplica(InternalReplica replica);
  78. ConnectDTO toKafkaConnect(ClustersProperties.ConnectCluster connect);
  79. List<ClusterDTO.FeaturesEnum> toFeaturesEnum(List<ClusterFeature> features);
  80. default List<PartitionDTO> map(Map<Integer, InternalPartition> map) {
  81. return map.values().stream().map(this::toPartition).collect(Collectors.toList());
  82. }
  83. default BrokerDiskUsageDTO map(Integer id, InternalBrokerDiskUsage internalBrokerDiskUsage) {
  84. final BrokerDiskUsageDTO brokerDiskUsage = new BrokerDiskUsageDTO();
  85. brokerDiskUsage.setBrokerId(id);
  86. brokerDiskUsage.segmentCount((int) internalBrokerDiskUsage.getSegmentCount());
  87. brokerDiskUsage.segmentSize(internalBrokerDiskUsage.getSegmentSize());
  88. return brokerDiskUsage;
  89. }
  90. default DataMasking map(List<ClustersProperties.Masking> maskingProperties) {
  91. return DataMasking.create(maskingProperties);
  92. }
  93. }