UNCLASSIFIED

package mil.tron.commonapi.dto.kpi;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import mil.tron.commonapi.entity.kpi.UserWithRequestCount;
@Data
@Builder
public class UserWithRequestCountDto implements UserWithRequestCount {
@Getter
@Setter
private String name;
@Getter
@Setter
private Long requestCount;
}
package mil.tron.commonapi.dto.metrics;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode
public class AppClientCountMetricDto {
@Getter
@Setter
private UUID id;
@Getter
@Setter
private String name;
@Getter
@Setter
private String appSource;
@Getter
@Setter
@Builder.Default
@Valid
private List<EndpointCountMetricDto> endpoints = new ArrayList<>();
}
package mil.tron.commonapi.dto.metrics;
import lombok.*;
import mil.tron.commonapi.dto.appsource.EndpointDto;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AppEndpointCountMetricDto extends EndpointDto {
@Builder
public AppEndpointCountMetricDto(UUID id, String path, String requestType, String appSource, List<CountMetricDto> appClients) {
super(id, path, requestType);
this.appSource = appSource;
this.appClients = appClients;
}
@Getter
@Setter
private String appSource;
@Getter
@Setter
@Valid
private List<CountMetricDto> appClients = new ArrayList<>();
}
package mil.tron.commonapi.dto.metrics;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode
public class AppSourceCountMetricDto {
@Getter
@Setter
private UUID id;
@Getter
@Setter
private String name;
@Getter
@Setter
@Builder.Default
@Valid
private List<EndpointCountMetricDto> endpoints = new ArrayList<>();
@Getter
@Setter
@Builder.Default
@Valid
private List<CountMetricDto> appClients = new ArrayList<>();
}
package mil.tron.commonapi.dto.metrics;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode
public class AppSourceMetricDto {
@Getter
@Setter
private UUID id;
@Getter
@Setter
private String name;
@Getter
@Setter
@Builder.Default
@Valid
private List<EndpointMetricDto> endpoints = new ArrayList<>();
}
package mil.tron.commonapi.dto.metrics;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode
public class CountMetricDto {
@Getter
@Setter
@Builder.Default
private UUID id = UUID.randomUUID();
@Getter
@Setter
private String path;
@Getter
@Setter
private Double sum;
}
package mil.tron.commonapi.dto.metrics;
import java.util.UUID;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class EndpointCountMetricDto extends CountMetricDto {
@Getter
@Setter
private String method;
@Builder(builderMethodName = "endpointCountMetricBuilder")
public EndpointCountMetricDto(UUID id, String path, Double sum, String method) {
super(id, path, sum);
this.method = method;
}
}
package mil.tron.commonapi.dto.metrics;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.validation.Valid;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import mil.tron.commonapi.dto.appsource.EndpointDto;
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class EndpointMetricDto extends EndpointDto {
@Builder
public EndpointMetricDto(UUID id, String path, String requestType, List<MeterValueDto> values) {
super(id, path, requestType);
this.values = values;
}
@Getter
@Setter
@Valid
@EqualsAndHashCode.Exclude
private List<MeterValueDto> values = new ArrayList<>();
}
package mil.tron.commonapi.dto.metrics;
import java.util.Date;
import java.util.UUID;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode
public class MeterValueDto {
@Getter
@Setter
@Builder.Default
private UUID id = UUID.randomUUID();
@Getter
@Setter
private String appClient;
@Getter
@Setter
private String metricName;
@Getter
@Setter
private Double count;
@Getter
@Setter
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
private Date timestamp;
}
package mil.tron.commonapi.dto.pubsub;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.*;
import mil.tron.commonapi.entity.pubsub.events.EventType;
import java.util.Date;
import java.util.UUID;
/**
* Represents a ledger entry from the pubsub ledger
*/
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@JsonIgnoreProperties(ignoreUnknown = true)
public class PubSubLedgerEntryDto {
@Getter
@Setter
private UUID id = UUID.randomUUID();
@Getter
@Setter
private Long countForEventType;
@Getter
@Setter
private EventType eventType;
@Getter
@Setter
private String data;
@Getter
@Setter
private Date dateCreated;
}
package mil.tron.commonapi.dto.pubsub;
import java.util.List;
import mil.tron.commonapi.dto.response.WrappedResponse;
public class PubSubLedgerEntryDtoResponseWrapper extends WrappedResponse<List<PubSubLedgerEntryDto>> {
}
package mil.tron.commonapi.dto.pubsub;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import mil.tron.commonapi.entity.pubsub.events.EventType;
import javax.validation.constraints.NotNull;
import java.util.UUID;
/**
* Represents a pub sub subscribers record
*/
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@JsonIgnoreProperties(ignoreUnknown = true)
public class SubscriberDto {
@Builder.Default
@Getter
@Setter
@Schema(accessMode = Schema.AccessMode.READ_ONLY)
private UUID id = UUID.randomUUID();
@Getter
@Setter
@NotNull
private String appClientUser;
@Getter
@Setter
private String secret;
@Getter
@Setter
@NotNull
private EventType subscribedEvent;
@Getter
@Setter
private String subscriberAddress = "";
}
package mil.tron.commonapi.dto.pubsub;
import java.util.List;
import mil.tron.commonapi.dto.response.WrappedResponse;
public class SubscriberDtoResponseWrapper extends WrappedResponse<List<SubscriberDto>> {
}
package mil.tron.commonapi.entity;
import lombok.*;
import lombok.experimental.SuperBuilder;
import mil.tron.commonapi.entity.appsource.App;
import mil.tron.commonapi.entity.appsource.AppEndpointPriv;
import mil.tron.commonapi.validations.ValidSubscriberAddress;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
/**
* Class that represents a Client User entity that is an Application
*
*/
@Entity
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
@Table(name="app")
public class AppClientUser extends App {
/**
* This flag allows an App Client to be identified as an App Client in the App table
*/
@Getter
@Setter
@Builder.Default
private boolean availableAsAppClient = true;
@Getter
@Setter
@Builder.Default
@ManyToMany(fetch = FetchType.EAGER)
private Set<Privilege> privileges = new HashSet<>();
/**
* List of App Client Developers that can see what app sources this client is connected to
* An app client can have many developers...
*/
@Getter
@Setter
@Builder.Default
@ManyToMany
private Set<DashboardUser> appClientDevelopers = new HashSet<>();
@Getter
@Setter
@Builder.Default
@OneToMany(fetch = FetchType.EAGER, mappedBy = "appClientUser")
private Set<AppEndpointPriv> appEndpointPrivs = new HashSet<>();
/**
* The P1 cluster (internal) URL of this application.
* Initialize it to its likely value.
*/
@Getter
@Setter
@ValidSubscriberAddress
private String clusterUrl = String.format("http://%s.%s.svc.cluster.local/", super.getName(), super.getName());
}
package mil.tron.commonapi.entity;
import java.util.UUID;
public interface CountMetric {
UUID getId();
String getName();
Double getSum();
}
package mil.tron.commonapi.entity;
import org.springframework.web.bind.annotation.RequestMethod;
public interface EndpointCountMetric extends CountMetric {
RequestMethod getMethod();
}
package mil.tron.commonapi.entity;
import lombok.*;
import mil.tron.commonapi.entity.appsource.AppEndpoint;
import mil.tron.commonapi.entity.appsource.AppSource;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.UUID;
@Entity
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MeterValue {
@Id
@Builder.Default
private UUID id = UUID.randomUUID();
@NonNull
@NotBlank
private String metricName;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "timestamp")
@NonNull
private Date timestamp;
@NonNull
private Double value;
@ManyToOne(cascade = CascadeType.ALL)
private AppEndpoint appEndpoint;
@ManyToOne(cascade = CascadeType.ALL)
private AppSource appSource;
@ManyToOne(cascade = CascadeType.ALL)
private AppClientUser appClientUser;
}