From a01c7bd09d964245d098604f8a302e9282fdb1c7 Mon Sep 17 00:00:00 2001 From: Bill Wei Date: Mon, 27 Jun 2022 11:51:42 -0400 Subject: [PATCH] Add endpoints for Crossmap and CrossmapDetail --- .../defianz/apis/CrossmapDetailResource.java | 60 +++++++++ .../idaas/defianz/apis/CrossmapResource.java | 73 +++++++++++ .../idaas/defianz/dtos/Crossmap.java | 19 +++ .../idaas/defianz/dtos/CrossmapDetail.java | 18 +++ .../defianz/models/CrossmapDetailEntity.java | 113 ++++++++++++++++ .../idaas/defianz/models/CrossmapEntity.java | 124 ++++++++++++++++++ .../defianz/models/DataAttributeEntity.java | 98 ++++++++++++++ .../defianz/models/PersonIdentityEntity.java | 2 +- .../defianz/models/RefDataStatusEntity.java | 2 +- .../defianz/services/CrossmapService.java | 117 +++++++++++++++++ 10 files changed, 624 insertions(+), 2 deletions(-) create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapDetailResource.java create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapResource.java create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/Crossmap.java create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/CrossmapDetail.java create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapDetailEntity.java create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapEntity.java create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/DataAttributeEntity.java create mode 100644 DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/services/CrossmapService.java diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapDetailResource.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapDetailResource.java new file mode 100644 index 0000000..09798c6 --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapDetailResource.java @@ -0,0 +1,60 @@ +package io.connectedhealth.idaas.defianz.apis; + +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.PATCH; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; + +import io.connectedhealth.idaas.defianz.audit.Audited; +import io.connectedhealth.idaas.defianz.dtos.CrossmapDetail; +import io.connectedhealth.idaas.defianz.exception.DefianzException; +import io.connectedhealth.idaas.defianz.services.CrossmapService; + +@Path("/crossmap_details") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class CrossmapDetailResource { + @Inject + CrossmapService service; + + @Audited + @GET + @Path("/{crossmapDetailId}") + public CrossmapDetail getCrossmapDetail(@Parameter(name="crossmapDetailId", required=true) @PathParam("crossmapDetailId") long crossmapDetailId) throws DefianzException { + return service.getCrossmapDetail(crossmapDetailId); + } + + @Audited + @PATCH + @Path("/{crossmapDetailId}") + public CrossmapDetail updateCrossmapDetail(@Parameter(name="crossmapDetailId", required=true) @PathParam("crossmapDetailId") long crossmapDetailId, CrossmapDetail detail) throws DefianzException { + return service.updateCrossmapDetail(crossmapDetailId, detail); + } + + @Audited + @DELETE + @Path("/{crossmapDetailId}") + @APIResponse(responseCode = "204") + public void createCrossmapDetail(@Parameter(name="crossmapDetailId", required=true) @PathParam("crossmapDetailId") long crossmapDetailId) throws DefianzException { + service.deleteCrossmapDetail(crossmapDetailId); + } + + @Audited + @POST + @APIResponse(responseCode = "201") + public CrossmapDetail createCrossmapDetail(CrossmapDetail crossmapDetail) throws DefianzException { + return service.createCrossmapDetail(crossmapDetail); + } +} diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapResource.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapResource.java new file mode 100644 index 0000000..988589a --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/apis/CrossmapResource.java @@ -0,0 +1,73 @@ +package io.connectedhealth.idaas.defianz.apis; + +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.PATCH; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; + +import io.connectedhealth.idaas.defianz.audit.Audited; +import io.connectedhealth.idaas.defianz.dtos.Crossmap; +import io.connectedhealth.idaas.defianz.dtos.CrossmapDetail; +import io.connectedhealth.idaas.defianz.exception.DefianzException; +import io.connectedhealth.idaas.defianz.services.CrossmapService; + +@Path("/crossmaps") +@Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) +public class CrossmapResource { + @Inject + CrossmapService service; + + @Audited + @GET + public List listCropssmaps() throws DefianzException { + return service.listCrossmaps(); + } + + @Audited + @GET + @Path("/{crossmapId}") + public Crossmap getCropssmap(@Parameter(name="crossmapId", required=true) @PathParam("crossmapId") long crossmapId) throws DefianzException { + return service.getCrossmap(crossmapId); + } + + @Audited + @DELETE + @Path("/{crossmapId}") + @APIResponse(responseCode = "204") + public void deleteCropssmap(@Parameter(name="crossmapId", required=true) @PathParam("crossmapId") long crossmapId) throws DefianzException { + service.deleteCrossmap(crossmapId); + } + + @Audited + @PATCH + @Path("/{crossmapId}") + public Crossmap updateCropssmap(@Parameter(name="crossmapId", required=true) @PathParam("crossmapId") long crossmapId, Crossmap crossmap) throws DefianzException { + return service.updateCrossmap(crossmapId, crossmap); + } + + @Audited + @POST + @APIResponse(responseCode = "201") + public Crossmap createCrossmap(Crossmap crossmap) throws DefianzException { + return service.createCrossmap(crossmap); + } + + @Audited + @GET + @Path("/{crossmapId}/crossmap_details") + public List getCrossmapDetails(@Parameter(name="crossmapId", required=true) @PathParam("crossmapId") long crossmapId) throws DefianzException { + return service.listCrossmapDetails(crossmapId); + } +} diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/Crossmap.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/Crossmap.java new file mode 100644 index 0000000..f5abdca --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/Crossmap.java @@ -0,0 +1,19 @@ +package io.connectedhealth.idaas.defianz.dtos; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; +import org.eclipse.microprofile.openapi.annotations.media.Schema; + +public class Crossmap { + @Schema(readOnly = true) + public long crossmapId; + + public String crossmapDesc; + public String industryStd; + public String organization; + public String application; + + public String toString() + { + return ReflectionToStringBuilder.toString(this); + } +} diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/CrossmapDetail.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/CrossmapDetail.java new file mode 100644 index 0000000..d3e92cc --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/dtos/CrossmapDetail.java @@ -0,0 +1,18 @@ +package io.connectedhealth.idaas.defianz.dtos; + +import org.apache.commons.lang3.builder.ReflectionToStringBuilder; +import org.eclipse.microprofile.openapi.annotations.media.Schema; + +public class CrossmapDetail { + @Schema(readOnly = true) + public long crossmapDetailId; + + public int dataAttributeId; + public long crossmapId; + public String crossmapField; + + public String toString() + { + return ReflectionToStringBuilder.toString(this); + } +} diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapDetailEntity.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapDetailEntity.java new file mode 100644 index 0000000..87b1dc4 --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapDetailEntity.java @@ -0,0 +1,113 @@ +package io.connectedhealth.idaas.defianz.models; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import org.hibernate.annotations.CreationTimestamp; + +import java.sql.Timestamp; +import java.util.List; + +@Entity +@Table(name = "crossmaps_dtl") +public class CrossmapDetailEntity extends io.quarkus.hibernate.orm.panache.PanacheEntityBase { + private long crossmapDetailId; + private String crossmapField; + private Timestamp createdDate; + private CrossmapEntity crossmap; + private DataAttributeEntity dataAttribute; + private RefDataStatusEntity status; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "crossmapdtlid", nullable = false) + public long getCrossmapDetailId() { + return crossmapDetailId; + } + + public void setCrossmapDetailId(long crossmapDetailId) { + this.crossmapDetailId = crossmapDetailId; + } + + + @Basic + @Column(name = "crossmapfield", nullable = false, length = 20) + public String getCrossmapField() { + return crossmapField; + } + + public void setCrossmapField(String field) { + this.crossmapField = field; + } + + @Basic + @CreationTimestamp + @Column(name = "createddate", nullable = true) + public Timestamp getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(Timestamp createdDate) { + this.createdDate = createdDate; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(crossmapDetailId, crossmapField, crossmap, + createdDate, dataAttribute, status); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (getClass() != o.getClass()) + return false; + CrossmapDetailEntity other = (CrossmapDetailEntity) o; + return java.util.Objects.equals(crossmapDetailId, other.crossmapDetailId) && + java.util.Objects.equals(crossmapField, other.crossmapField) && + java.util.Objects.equals(createdDate, other.createdDate) && + java.util.Objects.equals(crossmap, other.crossmap) && + java.util.Objects.equals(dataAttribute, other.dataAttribute) && + java.util.Objects.equals(status, other.status); + } + + @ManyToOne + @JoinColumn(name = "statusid", referencedColumnName = "statusid") + public RefDataStatusEntity getStatus() { + return status; + } + + public void setStatus(RefDataStatusEntity status) { + this.status = status; + } + + @ManyToOne + @JoinColumn(name = "crossmapid", referencedColumnName = "crossmapid") + public CrossmapEntity getCrossmap() { + return crossmap; + } + + public void setCrossmap(CrossmapEntity crossmap) { + this.crossmap = crossmap; + } + + @ManyToOne + @JoinColumn(name = "dataattributeid", referencedColumnName = "platformdataattributesid") + public DataAttributeEntity getDataAttribute() { + return dataAttribute; + } + + public void setDataAttribute(DataAttributeEntity dataAttribute) { + this.dataAttribute = dataAttribute; + } +} diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapEntity.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapEntity.java new file mode 100644 index 0000000..fa901b2 --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/CrossmapEntity.java @@ -0,0 +1,124 @@ +package io.connectedhealth.idaas.defianz.models; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import org.hibernate.annotations.CreationTimestamp; + +import java.sql.Timestamp; + +@Entity +@Table(name = "crossmaps") +public class CrossmapEntity extends io.quarkus.hibernate.orm.panache.PanacheEntityBase { + private long crossmapId; + private String organization; + private String application; + private String crossmapDesc; + private Timestamp createdDate; + private RefDataStatusEntity status; + private String industryStd; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "crossmapid", nullable = false) + public long getCrossmapId() { + return crossmapId; + } + + public void setCrossmapId(long crossmapId) { + this.crossmapId = crossmapId; + } + + + @Basic + @Column(name = "crossmapdesc", nullable = true, length = 49) + public String getCrossmapDesc() { + return crossmapDesc; + } + + public void setCrossmapDesc(String desc) { + this.crossmapDesc = desc; + } + + @Basic + @Column(name = "organization", nullable = true, length = 38) + public String getOrganization() { + return organization; + } + + public void setOrganization(String organization) { + this.organization = organization; + } + + @Basic + @Column(name = "application", nullable = true, length = 38) + public String getApplication() { + return application; + } + + public void setApplication(String application) { + this.application = application; + } + + @Basic + @Column(name = "industryStd", nullable = true, length = 10) + public String getIndustryStd() { + return industryStd; + } + + public void setIndustryStd(String std) { + this.industryStd = std; + } + + @Basic + @CreationTimestamp + @Column(name = "createddate", nullable = true) + public Timestamp getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(Timestamp createdDate) { + this.createdDate = createdDate; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(crossmapId, crossmapDesc, organization, application, + createdDate, industryStd, status); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (getClass() != o.getClass()) + return false; + CrossmapEntity other = (CrossmapEntity) o; + return java.util.Objects.equals(crossmapId, other.crossmapId) && + java.util.Objects.equals(crossmapDesc, other.crossmapDesc) && + java.util.Objects.equals(organization, other.organization) && + java.util.Objects.equals(application, other.application) && + java.util.Objects.equals(createdDate, other.createdDate) && + java.util.Objects.equals(industryStd, other.industryStd) && + java.util.Objects.equals(status, other.status); + } + + @ManyToOne + @JoinColumn(name = "statusid", referencedColumnName = "statusid") + public RefDataStatusEntity getStatus() { + return status; + } + + public void setStatus(RefDataStatusEntity status) { + this.status = status; + } +} diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/DataAttributeEntity.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/DataAttributeEntity.java new file mode 100644 index 0000000..6489f22 --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/DataAttributeEntity.java @@ -0,0 +1,98 @@ +package io.connectedhealth.idaas.defianz.models; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import org.hibernate.annotations.CreationTimestamp; + +import java.sql.Timestamp; + +@Entity +@Table(name = "refdata_dataattributes") +public class DataAttributeEntity extends io.quarkus.hibernate.orm.panache.PanacheEntityBase { + private int dataAttributeId; + private String dataAttributeName; + private Timestamp createdDate; + private RefDataStatusEntity status; + private String createdUser; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "platformdataattributesid", nullable = false) + public int getDataAttributeId() { + return dataAttributeId; + } + + public void setDataAttributeId(int dataAttributeId) { + this.dataAttributeId = dataAttributeId; + } + + @Basic + @Column(name = "dataattributename", nullable = true, length = 50) + public String getDataAttributeName() { + return dataAttributeName; + } + + public void setDataAttributeName(String name) { + this.dataAttributeName = name; + } + + @Basic + @Column(name = "createduser", nullable = true, length = 20) + public String getCreatedUser() { + return createdUser; + } + + public void setCreatedUser(String user) { + this.createdUser = user; + } + + @Basic + @CreationTimestamp + @Column(name = "createddate", nullable = true) + public Timestamp getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(Timestamp createdDate) { + this.createdDate = createdDate; + } + + @Override + public int hashCode() { + return java.util.Objects.hash(dataAttributeId, dataAttributeName, createdUser, createdDate, status); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (getClass() != o.getClass()) + return false; + DataAttributeEntity other = (DataAttributeEntity) o; + return java.util.Objects.equals(dataAttributeId, other.dataAttributeId) && + java.util.Objects.equals(dataAttributeName, other.dataAttributeName) && + java.util.Objects.equals(createdUser, other.createdUser) && + java.util.Objects.equals(createdDate, other.createdDate) && + java.util.Objects.equals(status, other.status); + } + + @ManyToOne + @JoinColumn(name = "statusid", referencedColumnName = "statusid") + public RefDataStatusEntity getStatus() { + return status; + } + + public void setStatus(RefDataStatusEntity status) { + this.status = status; + } +} diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/PersonIdentityEntity.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/PersonIdentityEntity.java index 1c0987e..3361bb2 100644 --- a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/PersonIdentityEntity.java +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/PersonIdentityEntity.java @@ -16,7 +16,7 @@ import java.util.List; @Entity -@Table(name = "personidentity") +@Table(name = "personidentities") public class PersonIdentityEntity extends io.quarkus.hibernate.orm.panache.PanacheEntityBase { private long personIdentityId; private String organization; diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/RefDataStatusEntity.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/RefDataStatusEntity.java index 192bc40..6993e07 100644 --- a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/RefDataStatusEntity.java +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/models/RefDataStatusEntity.java @@ -4,7 +4,7 @@ import java.sql.Timestamp; @Entity -@Table(name = "refdata_status") +@Table(name = "refdata_statuses") public class RefDataStatusEntity extends io.quarkus.hibernate.orm.panache.PanacheEntityBase { private short statusId; private String statusDescription; diff --git a/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/services/CrossmapService.java b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/services/CrossmapService.java new file mode 100644 index 0000000..3989168 --- /dev/null +++ b/DataTier-APIs/Quarkus-APIs/src/main/java/io/connectedhealth/idaas/defianz/services/CrossmapService.java @@ -0,0 +1,117 @@ +package io.connectedhealth.idaas.defianz.services; + +import java.util.List; +import java.util.stream.Collectors; + +import javax.enterprise.context.ApplicationScoped; +import javax.transaction.Transactional; + +import io.connectedhealth.idaas.defianz.dtos.Crossmap; +import io.connectedhealth.idaas.defianz.dtos.CrossmapDetail; +import io.connectedhealth.idaas.defianz.models.CrossmapDetailEntity; +import io.connectedhealth.idaas.defianz.models.CrossmapEntity; +import io.connectedhealth.idaas.defianz.models.DataAttributeEntity; +import io.quarkus.hibernate.orm.panache.PanacheQuery; + +@ApplicationScoped +public class CrossmapService { + @Transactional + public Crossmap createCrossmap(Crossmap crossmap) { + CrossmapEntity entity = new CrossmapEntity(); + entity.setApplication(crossmap.application); + entity.setOrganization(crossmap.organization); + entity.setCrossmapDesc(crossmap.crossmapDesc); + entity.setIndustryStd(crossmap.industryStd); + entity.persistAndFlush(); + return mapCrossmapEntityToDTO(entity); + } + + @Transactional + public Crossmap getCrossmap(long id) { + CrossmapEntity entity = CrossmapEntity.findById(id); + return mapCrossmapEntityToDTO(entity); + } + + @Transactional + public Crossmap updateCrossmap(long id, Crossmap crossmap) { + CrossmapEntity entity = CrossmapEntity.findById(id); + if (crossmap.application != null) + entity.setApplication(crossmap.application); + if (crossmap.organization != null) + entity.setOrganization(crossmap.organization); + if (crossmap.industryStd != null) + entity.setIndustryStd(crossmap.industryStd); + if (crossmap.crossmapDesc != null) + entity.setCrossmapDesc(crossmap.crossmapDesc); + entity.persistAndFlush(); + return mapCrossmapEntityToDTO(entity); + } + + @Transactional + public void deleteCrossmap(long id) { + CrossmapEntity.deleteById(id); + } + + public List listCrossmaps(){ + PanacheQuery entities = CrossmapEntity.findAll(); + return entities.stream().map(e -> mapCrossmapEntityToDTO(e)).collect(Collectors.toList()); + } + + @Transactional + public CrossmapDetail createCrossmapDetail(CrossmapDetail crossmapDetail) { + CrossmapDetailEntity entity = new CrossmapDetailEntity(); + entity.setCrossmap(CrossmapEntity.findById(crossmapDetail.crossmapId)); + entity.setCrossmapField(crossmapDetail.crossmapField); + entity.setDataAttribute(DataAttributeEntity.findById(crossmapDetail.dataAttributeId)); + entity.persistAndFlush(); + return mapDetailEntityToDTO(entity); + } + + public List listCrossmapDetails(long crossmapId) { + String query = "crossmapid = ?1"; + PanacheQuery entities = CrossmapDetailEntity.find(query, crossmapId); + return entities.stream().map(e -> mapDetailEntityToDTO(e)).collect(Collectors.toList()); + } + + @Transactional + public void deleteCrossmapDetail(long detailId) { + CrossmapDetailEntity.deleteById(detailId); + } + + @Transactional + public CrossmapDetail updateCrossmapDetail(long detailId, CrossmapDetail detail) { + CrossmapDetailEntity entity = CrossmapDetailEntity.findById(detailId); + if (detail.crossmapField != null) + entity.setCrossmapField(detail.crossmapField); + if (detail.dataAttributeId != 0) + entity.setDataAttribute(DataAttributeEntity.findById(detail.dataAttributeId)); + if (detail.crossmapId != 0) + entity.setCrossmap(CrossmapEntity.findById(detail.crossmapId)); + entity.persistAndFlush(); + return mapDetailEntityToDTO(entity); + } + + public CrossmapDetail getCrossmapDetail(long crossmapDetailId) { + CrossmapDetailEntity entity = CrossmapDetailEntity.findById(crossmapDetailId); + return mapDetailEntityToDTO(entity); + } + + protected Crossmap mapCrossmapEntityToDTO(CrossmapEntity e) { + Crossmap crossmap = new Crossmap(); + crossmap.application = e.getApplication(); + crossmap.organization = e.getOrganization(); + crossmap.crossmapDesc = e.getCrossmapDesc(); + crossmap.crossmapId = e.getCrossmapId(); + crossmap.industryStd = e.getIndustryStd(); + return crossmap; + } + + protected CrossmapDetail mapDetailEntityToDTO(CrossmapDetailEntity e) { + CrossmapDetail detail = new CrossmapDetail(); + detail.crossmapDetailId = e.getCrossmapDetailId(); + detail.crossmapField = e.getCrossmapField(); + detail.crossmapId = e.getCrossmap().getCrossmapId(); + detail.dataAttributeId = e.getDataAttribute().getDataAttributeId(); + return detail; + } +}