DomainObject.java
- package no.nav.data.common.storage.domain;
- import com.fasterxml.jackson.annotation.JsonIgnore;
- import no.nav.data.common.rest.ChangeStampResponse;
- import java.time.LocalDateTime;
- import java.util.Comparator;
- import java.util.UUID;
- import java.util.stream.Stream;
- public interface DomainObject {
- UUID getId();
- void setId(UUID id);
- @JsonIgnore
- ChangeStamp getChangeStamp();
- @JsonIgnore
- void setChangeStamp(ChangeStamp changeStamp);
- default String type() {
- return TypeRegistration.typeOf(getClass());
- }
- default ChangeStampResponse convertChangeStampResponse() {
- if (getChangeStamp() == null) {
- return null;
- }
- return ChangeStampResponse.builder()
- .lastModifiedBy(getChangeStamp().getLastModifiedBy())
- .lastModifiedDate(getChangeStamp().getLastModifiedDate() == null ? LocalDateTime.now() : getChangeStamp().getLastModifiedDate())
- .build();
- }
- static <T extends DomainObject> T max(T obj1, T obj2) {
- return Stream.of(obj1, obj2).max(Comparator.comparing(o -> o.getChangeStamp().getCreatedDate())).orElse(null);
- }
- }