123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- package com.provectus.kafka.ui.mapper;
- import com.provectus.kafka.ui.config.ClustersProperties;
- import com.provectus.kafka.ui.model.BrokerConfigDTO;
- import com.provectus.kafka.ui.model.BrokerDiskUsageDTO;
- import com.provectus.kafka.ui.model.BrokerMetricsDTO;
- import com.provectus.kafka.ui.model.ClusterDTO;
- import com.provectus.kafka.ui.model.ClusterMetricsDTO;
- import com.provectus.kafka.ui.model.ClusterStatsDTO;
- import com.provectus.kafka.ui.model.CompatibilityCheckResponseDTO;
- import com.provectus.kafka.ui.model.CompatibilityLevelDTO;
- import com.provectus.kafka.ui.model.ConfigSourceDTO;
- import com.provectus.kafka.ui.model.ConfigSynonymDTO;
- import com.provectus.kafka.ui.model.ConnectDTO;
- import com.provectus.kafka.ui.model.FailoverUrlList;
- import com.provectus.kafka.ui.model.Feature;
- import com.provectus.kafka.ui.model.InternalBrokerConfig;
- import com.provectus.kafka.ui.model.InternalBrokerDiskUsage;
- import com.provectus.kafka.ui.model.InternalClusterState;
- import com.provectus.kafka.ui.model.InternalKsqlServer;
- import com.provectus.kafka.ui.model.InternalPartition;
- import com.provectus.kafka.ui.model.InternalReplica;
- import com.provectus.kafka.ui.model.InternalSchemaRegistry;
- import com.provectus.kafka.ui.model.InternalTopic;
- import com.provectus.kafka.ui.model.InternalTopicConfig;
- import com.provectus.kafka.ui.model.KafkaCluster;
- import com.provectus.kafka.ui.model.KafkaConnectCluster;
- import com.provectus.kafka.ui.model.MetricDTO;
- import com.provectus.kafka.ui.model.Metrics;
- import com.provectus.kafka.ui.model.PartitionDTO;
- import com.provectus.kafka.ui.model.ReplicaDTO;
- import com.provectus.kafka.ui.model.TopicConfigDTO;
- import com.provectus.kafka.ui.model.TopicDTO;
- import com.provectus.kafka.ui.model.TopicDetailsDTO;
- import com.provectus.kafka.ui.model.schemaregistry.InternalCompatibilityCheck;
- import com.provectus.kafka.ui.model.schemaregistry.InternalCompatibilityLevel;
- import com.provectus.kafka.ui.service.metrics.RawMetric;
- import java.nio.file.Path;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.List;
- import java.util.Map;
- import java.util.Properties;
- import java.util.stream.Collectors;
- import org.apache.kafka.clients.admin.ConfigEntry;
- import org.mapstruct.Mapper;
- import org.mapstruct.Mapping;
- import org.mapstruct.Named;
- @Mapper(componentModel = "spring")
- public interface ClusterMapper {
- ClusterDTO toCluster(InternalClusterState clusterState);
- @Mapping(target = "properties", source = "properties", qualifiedByName = "setProperties")
- @Mapping(target = "schemaRegistry", source = ".", qualifiedByName = "setSchemaRegistry")
- @Mapping(target = "ksqldbServer", source = ".", qualifiedByName = "setKsqldbServer")
- @Mapping(target = "metricsConfig", source = "metrics")
- KafkaCluster toKafkaCluster(ClustersProperties.Cluster clusterProperties);
- ClusterStatsDTO toClusterStats(InternalClusterState clusterState);
- default ClusterMetricsDTO toClusterMetrics(Metrics metrics) {
- return new ClusterMetricsDTO()
- .items(metrics.getSummarizedMetrics().map(this::convert).collect(Collectors.toList()));
- }
- private MetricDTO convert(RawMetric rawMetric) {
- return new MetricDTO()
- .name(rawMetric.name())
- .labels(rawMetric.labels())
- .value(rawMetric.value());
- }
- default BrokerMetricsDTO toBrokerMetrics(List<RawMetric> metrics) {
- return new BrokerMetricsDTO()
- .metrics(metrics.stream().map(this::convert).collect(Collectors.toList()));
- }
- @Mapping(target = "isSensitive", source = "sensitive")
- @Mapping(target = "isReadOnly", source = "readOnly")
- BrokerConfigDTO toBrokerConfig(InternalBrokerConfig config);
- default ConfigSynonymDTO toConfigSynonym(ConfigEntry.ConfigSynonym config) {
- if (config == null) {
- return null;
- }
- ConfigSynonymDTO configSynonym = new ConfigSynonymDTO();
- configSynonym.setName(config.name());
- configSynonym.setValue(config.value());
- if (config.source() != null) {
- configSynonym.setSource(ConfigSourceDTO.valueOf(config.source().name()));
- }
- return configSynonym;
- }
- TopicDTO toTopic(InternalTopic topic);
- PartitionDTO toPartition(InternalPartition topic);
- @Named("setSchemaRegistry")
- default InternalSchemaRegistry setSchemaRegistry(ClustersProperties.Cluster clusterProperties) {
- if (clusterProperties == null
- || clusterProperties.getSchemaRegistry() == null) {
- return null;
- }
- InternalSchemaRegistry.InternalSchemaRegistryBuilder internalSchemaRegistry =
- InternalSchemaRegistry.builder();
- internalSchemaRegistry.url(
- clusterProperties.getSchemaRegistry() != null
- ? new FailoverUrlList(Arrays.asList(clusterProperties.getSchemaRegistry().split(",")))
- : new FailoverUrlList(Collections.emptyList())
- );
- if (clusterProperties.getSchemaRegistryAuth() != null) {
- internalSchemaRegistry.username(clusterProperties.getSchemaRegistryAuth().getUsername());
- internalSchemaRegistry.password(clusterProperties.getSchemaRegistryAuth().getPassword());
- }
- return internalSchemaRegistry.build();
- }
- @Named("setKsqldbServer")
- default InternalKsqlServer setKsqldbServer(ClustersProperties.Cluster clusterProperties) {
- if (clusterProperties == null
- || clusterProperties.getKsqldbServer() == null) {
- return null;
- }
- InternalKsqlServer.InternalKsqlServerBuilder internalKsqlServerBuilder =
- InternalKsqlServer.builder().url(clusterProperties.getKsqldbServer());
- if (clusterProperties.getKsqldbServerAuth() != null) {
- internalKsqlServerBuilder.username(clusterProperties.getKsqldbServerAuth().getUsername());
- internalKsqlServerBuilder.password(clusterProperties.getKsqldbServerAuth().getPassword());
- }
- return internalKsqlServerBuilder.build();
- }
- TopicDetailsDTO toTopicDetails(InternalTopic topic);
- @Mapping(target = "isReadOnly", source = "readOnly")
- @Mapping(target = "isSensitive", source = "sensitive")
- TopicConfigDTO toTopicConfig(InternalTopicConfig topic);
- ReplicaDTO toReplica(InternalReplica replica);
- ConnectDTO toKafkaConnect(KafkaConnectCluster connect);
- List<ClusterDTO.FeaturesEnum> toFeaturesEnum(List<Feature> features);
- @Mapping(target = "isCompatible", source = "compatible")
- CompatibilityCheckResponseDTO toCompatibilityCheckResponse(InternalCompatibilityCheck dto);
- @Mapping(target = "compatibility", source = "compatibilityLevel")
- CompatibilityLevelDTO toCompatibilityLevelDto(InternalCompatibilityLevel dto);
- default List<PartitionDTO> map(Map<Integer, InternalPartition> map) {
- return map.values().stream().map(this::toPartition).collect(Collectors.toList());
- }
- default BrokerDiskUsageDTO map(Integer id, InternalBrokerDiskUsage internalBrokerDiskUsage) {
- final BrokerDiskUsageDTO brokerDiskUsage = new BrokerDiskUsageDTO();
- brokerDiskUsage.setBrokerId(id);
- brokerDiskUsage.segmentCount((int) internalBrokerDiskUsage.getSegmentCount());
- brokerDiskUsage.segmentSize(internalBrokerDiskUsage.getSegmentSize());
- return brokerDiskUsage;
- }
- @Named("setProperties")
- default Properties setProperties(Properties properties) {
- Properties copy = new Properties();
- if (properties != null) {
- copy.putAll(properties);
- }
- return copy;
- }
- }
|