diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000000000000000000000000000000000000..12f69936a9c46a4d9b667b7d2673224167ae444b --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +gpds \ No newline at end of file diff --git a/backend/src/main/java/fr/inra/urgi/gpds/api/brapi/v1/GermplasmController.java b/backend/src/main/java/fr/inra/urgi/gpds/api/brapi/v1/GermplasmController.java index 45544b9610b9ad80b5f14a44afdba5965c310d40..900f2e5b4d2fe022fceb112c287bf55965bf91ab 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/api/brapi/v1/GermplasmController.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/api/brapi/v1/GermplasmController.java @@ -1,10 +1,7 @@ package fr.inra.urgi.gpds.api.brapi.v1; import fr.inra.urgi.gpds.api.NotFoundException; -import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasm; -import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmAttributeValueList; -import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiPedigree; -import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiProgeny; +import fr.inra.urgi.gpds.domain.brapi.v1.data.*; import fr.inra.urgi.gpds.domain.brapi.v1.response.BrapiListResponse; import fr.inra.urgi.gpds.domain.brapi.v1.response.BrapiResponse; import fr.inra.urgi.gpds.domain.criteria.GermplasmAttributeCriteria; @@ -58,6 +55,27 @@ public class GermplasmController { return ApiResponseFactory.createSingleObjectResponse(germplasm, null); } + + + + /** + * @link https://brapi.docs.apiary.io/#reference/germplasm/germplasm/get-germplasm-mcpd-by-germplasmdbid + */ + @ApiOperation("Get germplasm mcpd by id") + @GetMapping("/brapi/v1/germplasm/{germplasmDbId}/mcpd") + public BrapiResponse<BrapiGermplasmMcpd> getGermplasmMcpd(@PathVariable String germplasmDbId) { + LOGGER.debug("germplasmDbId = " + germplasmDbId); + BrapiGermplasmMcpd germplasm = germplasmService.getMcpdById(germplasmDbId); + if (germplasm == null) { + throw new NotFoundException("Germplasm not found for id '" + germplasmDbId + "'"); + } + return ApiResponseFactory.createSingleObjectResponse(germplasm, null); + } + + + + + @ApiOperation("List germplasm") @GetMapping("/brapi/v1/germplasm") public BrapiListResponse<? extends BrapiGermplasm> listGermplasm( diff --git a/backend/src/main/java/fr/inra/urgi/gpds/api/gnpis/v1/GnpISJSONViewHandler.java b/backend/src/main/java/fr/inra/urgi/gpds/api/gnpis/v1/GnpISJSONViewHandler.java index 41e14ce708c47e7ab02907706602de2332cd82ed..2e73d72fa44d51a77514a392972f001da5266469 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/api/gnpis/v1/GnpISJSONViewHandler.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/api/gnpis/v1/GnpISJSONViewHandler.java @@ -23,7 +23,7 @@ public class GnpISJSONViewHandler extends AbstractMappingJacksonResponseBodyAdvi ServerHttpRequest req, ServerHttpResponse response ) { - // Default: display only GnpIS API Fields (BrAPI + GnpIS fileds) + // Default: display only GnpIS API Fields (BrAPI + GnpIS fields) bodyContainer.setSerializationView(JSONView.GnpISAPI.class); } } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmCollectingInfo.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmCollectingInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..23f9e8cc2c4ee4f2458a2f2806701eab3d3287b0 --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmCollectingInfo.java @@ -0,0 +1,25 @@ +package fr.inra.urgi.gpds.domain.brapi.v1.data; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; +import fr.inra.urgi.gpds.domain.data.germplasm.ExtendedInstitute; +import fr.inra.urgi.gpds.domain.data.germplasm.InstituteVO; + +import java.io.Serializable; +import java.util.List; + +public interface BrapiGermplasmCollectingInfo extends Serializable { + + @JsonView(JSONView.BrapiFields.class) + List<? extends BrapiGermplasmInstitute> getCollectingInstitutes(); + + @JsonView(JSONView.BrapiFields.class) + String getCollectingMissionIdentifier(); + + @JsonView(JSONView.BrapiFields.class) + String getCollectingNumber(); + + @JsonView(JSONView.BrapiFields.class) + BrapiGermplasmCollectingSite getCollectingSite(); + +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmCollectingSite.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmCollectingSite.java new file mode 100644 index 0000000000000000000000000000000000000000..11f9f78fe50b10f10775e5a09178aaffbca817d9 --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmCollectingSite.java @@ -0,0 +1,36 @@ +package fr.inra.urgi.gpds.domain.brapi.v1.data; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; + +import java.io.Serializable; + +public interface BrapiGermplasmCollectingSite extends Serializable { + + @JsonView(JSONView.BrapiFields.class) + String getCoordinateUncertainty(); + + @JsonView(JSONView.BrapiFields.class) + String getElevation(); + + @JsonView(JSONView.BrapiFields.class) + String getGeoreferencingMethod(); + + @JsonView(JSONView.BrapiFields.class) + String getLatitudeDecimal(); + + @JsonView(JSONView.BrapiFields.class) + String getLatitudeDegrees(); + + @JsonView(JSONView.BrapiFields.class) + String getLocationDescription(); + + @JsonView(JSONView.BrapiFields.class) + String getLongitudeDecimal(); + + @JsonView(JSONView.BrapiFields.class) + String getLongitudeDegrees(); + + @JsonView(JSONView.BrapiFields.class) + String getSpatialReferenceSystem(); +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmDonorInfo.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmDonorInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..dea76ad48f04fb36ee44c675d8b49ed18ae45826 --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmDonorInfo.java @@ -0,0 +1,17 @@ +package fr.inra.urgi.gpds.domain.brapi.v1.data; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; +import fr.inra.urgi.gpds.domain.data.germplasm.ExtendedInstitute; + +import java.io.Serializable; + +public interface BrapiGermplasmDonorInfo extends Serializable { + + @JsonView(JSONView.BrapiFields.class) + String getDonorAccessionNumber(); + + @JsonView(JSONView.BrapiFields.class) + BrapiGermplasmInstitute getDonorInstitute(); + +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmInstitute.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmInstitute.java new file mode 100644 index 0000000000000000000000000000000000000000..57664b562e8d6c8894f3e2a322185cbb10f8fabc --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmInstitute.java @@ -0,0 +1,15 @@ +package fr.inra.urgi.gpds.domain.brapi.v1.data; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; + +/** + * @author gcornut + */ +public interface BrapiGermplasmInstitute { + @JsonView(JSONView.BrapiFields.class) + String getInstituteName(); + + @JsonView(JSONView.BrapiFields.class) + String getInstituteCode(); +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmMcpd.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmMcpd.java new file mode 100644 index 0000000000000000000000000000000000000000..f84a9dc61706d382acb5b76930ce5def269697ba --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/brapi/v1/data/BrapiGermplasmMcpd.java @@ -0,0 +1,84 @@ +package fr.inra.urgi.gpds.domain.brapi.v1.data; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; +import fr.inra.urgi.gpds.domain.data.germplasm.DonorInfoVO; +import fr.inra.urgi.gpds.domain.data.germplasm.InstituteVO; + +import java.util.List; + +/** + * @author gcornut + */ +public interface BrapiGermplasmMcpd { + + @JsonView(JSONView.BrapiFields.class) + String getGermplasmDbId(); + + @JsonView(JSONView.BrapiFields.class) + String getGermplasmPUI(); + + @JsonView(JSONView.BrapiFields.class) + String getAccessionNumber(); + + @JsonView(JSONView.BrapiFields.class) + List<String> getAccessionNames(); + + @JsonView(JSONView.BrapiFields.class) + List<String> getAlternateIDs(); + + @JsonView(JSONView.BrapiFields.class) + String getCropName(); + + @JsonView(JSONView.BrapiFields.class) + String getGenus(); + + @JsonView(JSONView.BrapiFields.class) + String getSpecies(); + + @JsonView(JSONView.BrapiFields.class) + String getSpeciesAuthority(); + + @JsonView(JSONView.BrapiFields.class) + String getSubtaxon(); + + @JsonView(JSONView.BrapiFields.class) + String getSubtaxonAuthority(); + + @JsonView(JSONView.BrapiFields.class) + String getAncestralData(); + + @JsonView(JSONView.BrapiFields.class) + String getBiologicalStatusOfAccessionCode(); + + @JsonView(JSONView.BrapiFields.class) + String getMlsStatus(); + + @JsonView(JSONView.BrapiFields.class) + String getCountryOfOriginCode(); + + @JsonView(JSONView.BrapiFields.class) + String getInstituteCode(); + + @JsonView(JSONView.BrapiFields.class) + BrapiGermplasmCollectingInfo getCollectingInfo(); + + @JsonView(JSONView.BrapiFields.class) + String getAcquisitionDate(); + + @JsonView(JSONView.BrapiFields.class) + String getAcquisitionSourceCode(); + + @JsonView(JSONView.BrapiFields.class) + List<DonorInfoVO> getDonorInfo(); + + @JsonView(JSONView.BrapiFields.class) + List<? extends BrapiGermplasmInstitute> getBreedingInstitutes(); + + @JsonView(JSONView.BrapiFields.class) + List<? extends BrapiGermplasmInstitute> getSafetyDuplicateInstitutes(); + + @JsonView(JSONView.BrapiFields.class) + List<String> getStorageTypeCodes(); + +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/GnpISInternal.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/GnpISInternal.java index 1bdc77a9dc4e852c527f44e110692af73805b44a..e31e9d2bd9fb4357fe49a9748b91ccb253a73748 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/GnpISInternal.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/GnpISInternal.java @@ -13,12 +13,6 @@ import java.util.List; */ public interface GnpISInternal extends Serializable { - /** - * List of species group the VO belongs to - */ - @JsonView(JSONView.Internal.class) - List<Long> getSpeciesGroup(); - /** * Restricted group DB identifier from which the VO belong */ diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/LocationVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/LocationVO.java index 010ebf16c32c9afeedb2f410945211732b624ecf..53711063c7ccac8fcd190a4965c0230f4d5578fb 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/LocationVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/LocationVO.java @@ -212,15 +212,6 @@ public class LocationVO implements GnpISInternal, BrapiLocation, HasURI, HasURL, this.additionalInfo = additionalInfo; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - @Override public Long getGroupId() { return groupId; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/ProgramVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/ProgramVO.java index d96141e5b5306e57c9613a293499eb3efe69ff8e..9b03d8e2c750399144c28db2e498088dd99eefd4 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/ProgramVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/ProgramVO.java @@ -123,15 +123,6 @@ public class ProgramVO implements GnpISInternal, BrapiProgram, HasURI, HasURL, I this.programDbId = programDbId; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - @Override public Long getGroupId() { return groupId; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/TrialVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/TrialVO.java index b2b39d4cd72590d48231830735ba4aa441dd1ce6..49d118909006eac4b7c243c885a00f62b5aff47c 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/TrialVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/TrialVO.java @@ -198,15 +198,6 @@ public class TrialVO implements GnpISInternal, BrapiTrial, HasURI, HasURL, Inclu this.additionalInfo = additionalInfo; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - @Override public Long getGroupId() { return groupId; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPop.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPop.java index 463f4ce2b56aa63b4da2e22fee75c3356f226373..a05c5c6c7e54ef85770b880380b2f47346496ef5 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPop.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPop.java @@ -7,18 +7,18 @@ import fr.inra.urgi.gpds.domain.JSONView; * @author gcornut */ public interface CollPop { - @JsonView(JSONView.GnpISFields.class) + @JsonView(JSONView.BrapiFields.class) Long getId(); - @JsonView(JSONView.GnpISFields.class) + @JsonView(JSONView.BrapiFields.class) String getName(); - @JsonView(JSONView.GnpISFields.class) + @JsonView(JSONView.BrapiFields.class) String getType(); - @JsonView(JSONView.GnpISFields.class) + @JsonView(JSONView.BrapiFields.class) PuiNameValue getGermplasmRef(); - @JsonView(JSONView.GnpISFields.class) + @JsonView(JSONView.BrapiFields.class) Integer getGermplasmCount(); } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPopVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPopVO.java index 9b87927dba76fa32e7f4ab5e7c6ceeb8fc7910f3..f9b79f320d4868d3b1831b11902bbb24f006abb4 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPopVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollPopVO.java @@ -12,7 +12,7 @@ public class CollPopVO implements Serializable, CollPop { private Long id; private String name; private String type; - private SimpleVO germplasmRef; + private PuiNameValueVO germplasmRef; private Integer germplasmCount; @Override @@ -43,11 +43,11 @@ public class CollPopVO implements Serializable, CollPop { } @Override - public SimpleVO getGermplasmRef() { + public PuiNameValueVO getGermplasmRef() { return germplasmRef; } - public void setGermplasmRef(SimpleVO germplasmRef) { + public void setGermplasmRef(PuiNameValueVO germplasmRef) { this.germplasmRef = germplasmRef; } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollectingInfoVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollectingInfoVO.java new file mode 100644 index 0000000000000000000000000000000000000000..20a4cab28025e5d0c6924107f89afa2d3e09c34e --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollectingInfoVO.java @@ -0,0 +1,75 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmCollectingInfo; + +import java.io.Serializable; +import java.util.List; + +public class CollectingInfoVO implements BrapiGermplasmCollectingInfo, ExtendedCollectingInfo, Serializable { + + @JsonDeserialize(contentAs = InstituteVO.class) + private List<InstituteVO> collectingInstitutes; + + private String collectingMissionIdentifier; + private String collectingNumber; + private String materialType; + private String collectors; + + @JsonDeserialize(as = CollectingSiteVO.class) + private CollectingSiteVO collectingSite; + + @Override + public List<InstituteVO> getCollectingInstitutes() { + return collectingInstitutes; + } + + public void setCollectingInstitutes(List<InstituteVO> collectingInstitutes) { + this.collectingInstitutes = collectingInstitutes; + } + + @Override + public String getCollectingMissionIdentifier() { + return collectingMissionIdentifier; + } + + public void setCollectingMissionIdentifier(String collectingMissionIdentifier) { + this.collectingMissionIdentifier = collectingMissionIdentifier; + } + + @Override + public String getCollectingNumber() { + return collectingNumber; + } + + public void setCollectingNumber(String collectingNumber) { + this.collectingNumber = collectingNumber; + } + + public String getMaterialType() { + return materialType; + } + + public void setMaterialType(String materialType) { + this.materialType = materialType; + } + + public String getCollectors() { + return collectors; + } + + public void setCollectors(String collectors) { + this.collectors = collectors; + } + + @Override + public CollectingSiteVO getCollectingSite() { + return collectingSite; + } + + public void setCollectingSite(CollectingSiteVO collectingSite) { + this.collectingSite = collectingSite; + } + + +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollectingSiteVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollectingSiteVO.java new file mode 100644 index 0000000000000000000000000000000000000000..bc8b52483e4bb24b6e2fc92d65c443b4ac5253ee --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/CollectingSiteVO.java @@ -0,0 +1,127 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmCollectingSite; + +public class CollectingSiteVO implements BrapiGermplasmCollectingSite, ExtendedCollectingSite { + + private String locationDbId; + private String siteName; + private String siteType; + private String coordinateUncertainty; + private String elevation; + private String georeferencingMethod; + private String latitudeDecimal; + private String latitudeDegrees; + private String locationDescription; + private String longitudeDecimal; + private String longitudeDegrees; + private String spatialReferenceSystem; + + @Override + public String getLocationDbId() { + return locationDbId; + } + + public void setLocationDbId(String locationDbId) { + this.locationDbId = locationDbId; + } + + public String getSiteName() { + return siteName; + } + + public void setSiteName(String siteName) { + this.siteName = siteName; + } + + + public String getSiteType() { + return siteType; + } + + public void setSiteType(String siteType) { + this.siteType = siteType; + } + + @Override + public String getCoordinateUncertainty() { + return coordinateUncertainty; + } + + @Override + public String getElevation() { + return elevation; + } + + @Override + public String getGeoreferencingMethod() { + return georeferencingMethod; + } + + @Override + public String getLatitudeDecimal() { + return latitudeDecimal; + } + + @Override + public String getLatitudeDegrees() { + return latitudeDegrees; + } + + @Override + public String getLocationDescription() { + return locationDescription; + } + + @Override + public String getLongitudeDecimal() { + return longitudeDecimal; + } + + @Override + public String getLongitudeDegrees() { + return longitudeDegrees; + } + + @Override + public String getSpatialReferenceSystem() { + return spatialReferenceSystem; + } + + + public void setCoordinateUncertainty(String coordinateUncertainty) { + this.coordinateUncertainty = coordinateUncertainty; + } + + public void setElevation(String elevation) { + this.elevation = elevation; + } + + public void setGeoreferencingMethod(String georeferencingMethod) { + this.georeferencingMethod = georeferencingMethod; + } + + public void setLatitudeDecimal(String latitudeDecimal) { + this.latitudeDecimal = latitudeDecimal; + } + + public void setLatitudeDegrees(String latitudeDegrees) { + this.latitudeDegrees = latitudeDegrees; + } + + public void setLocationDescription(String locationDescription) { + this.locationDescription = locationDescription; + } + + public void setLongitudeDecimal(String longitudeDecimal) { + this.longitudeDecimal = longitudeDecimal; + } + + public void setLongitudeDegrees(String longitudeDegrees) { + this.longitudeDegrees = longitudeDegrees; + } + + public void setSpatialReferenceSystem(String spatialReferenceSystem) { + this.spatialReferenceSystem = spatialReferenceSystem; + } +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DistributorInfo.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DistributorInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..6fdee08564a19c39bb944c8382cda2980db76be5 --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DistributorInfo.java @@ -0,0 +1,18 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; + +import java.io.Serializable; + +public interface DistributorInfo extends Serializable { + + @JsonView(JSONView.GnpISFields.class) + String getAccessionNumber(); + + @JsonView(JSONView.GnpISFields.class) + ExtendedInstitute getInstitute(); + + @JsonView(JSONView.GnpISFields.class) + String getDistributionStatus(); +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DistributorInfoVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DistributorInfoVO.java new file mode 100644 index 0000000000000000000000000000000000000000..5dabd5e06839bb41114bbd3e163a66c2f714e93b --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DistributorInfoVO.java @@ -0,0 +1,35 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +public class DistributorInfoVO implements DistributorInfo { + + private String accessionNumber; + private InstituteVO institute; + private String distributionStatus; + + public String getAccessionNumber() { + return accessionNumber; + } + + public void setAccessionNumber(String accessionNumber) { + this.accessionNumber = accessionNumber; + } + + public InstituteVO getInstitute() { + return institute; + } + + public void setInstitute(InstituteVO institute) { + this.institute = institute; + } + + public String getDistributionStatus() { + return distributionStatus; + } + + public void setDistributionStatus(String distributionStatus) { + this.distributionStatus = distributionStatus; + } + + + +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DonorInfoVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DonorInfoVO.java new file mode 100644 index 0000000000000000000000000000000000000000..0254a71404eb2345a521a1df3734defdd064d0d8 --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DonorInfoVO.java @@ -0,0 +1,36 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmDonorInfo; + +public class DonorInfoVO implements BrapiGermplasmDonorInfo, ExtendedDonorInfo { + + private String donorAccessionNumber; + private InstituteVO donorInstitute; + private String donationDate; + + @Override + public String getDonorAccessionNumber() { + return donorAccessionNumber; + } + + @Override + public InstituteVO getDonorInstitute() { + return donorInstitute; + } + + public void setDonorAccessionNumber(String donorAccessionNumber) { + this.donorAccessionNumber = donorAccessionNumber; + } + + public void setDonorInstitute(InstituteVO donorInstitute) { + this.donorInstitute = donorInstitute; + } + + public String getDonationDate() { + return donationDate; + } + + public void setDonationDate(String donationDate) { + this.donationDate = donationDate; + } +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DonorVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DonorVO.java index 8cd5d7cd7b6f63b68ceaabba0f867f545ccab398..9f09793d7cc55421dc70e33e578072156d711c93 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DonorVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/DonorVO.java @@ -4,15 +4,13 @@ import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmDonor; import java.io.Serializable; -public class DonorVO implements Serializable, BrapiGermplasmDonor, ExtendedDonor { +public class DonorVO implements Serializable, BrapiGermplasmDonor { private static final long serialVersionUID = 7976964107440923573L; private String donorGermplasmPUI; private String donorAccessionNumber; private String donorInstituteCode; - private Integer donationDate; - private InstituteVO donorInstitute; @Override public String getDonorGermplasmPUI() { @@ -41,22 +39,4 @@ public class DonorVO implements Serializable, BrapiGermplasmDonor, ExtendedDonor this.donorInstituteCode = donorInstituteCode; } - @Override - public InstituteVO getDonorInstitute() { - return donorInstitute; - } - - public void setDonorInstitute(InstituteVO donorInstitute) { - this.donorInstitute = donorInstitute; - } - - @Override - public Integer getDonationDate() { - return donationDate; - } - - public void setDonationDate(Integer donationDate) { - this.donationDate = donationDate; - } - } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedCollectingInfo.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedCollectingInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..57240ac201ea1fb4a159104e6bf8f09baa69b7fe --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedCollectingInfo.java @@ -0,0 +1,18 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmCollectingInfo; + +import java.io.Serializable; +import java.util.List; + +public interface ExtendedCollectingInfo extends Serializable, BrapiGermplasmCollectingInfo { + + @JsonView(JSONView.GnpISFields.class) + String getMaterialType(); + + @JsonView(JSONView.GnpISFields.class) + String getCollectors(); + +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedCollectingSite.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedCollectingSite.java new file mode 100644 index 0000000000000000000000000000000000000000..affd74720f13bfb6dffa3669476d04efa6a2cb08 --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedCollectingSite.java @@ -0,0 +1,19 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmCollectingSite; + +import java.io.Serializable; + +public interface ExtendedCollectingSite extends Serializable, BrapiGermplasmCollectingSite { + + @JsonView(JSONView.GnpISFields.class) + String getLocationDbId(); + + @JsonView(JSONView.GnpISFields.class) + String getSiteName(); + + @JsonView(JSONView.GnpISFields.class) + String getSiteType() ; +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedDonor.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedDonorInfo.java similarity index 50% rename from backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedDonor.java rename to backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedDonorInfo.java index a18dd7e4ab56f9f38e0d72bfeca5535e3be4bae2..968070d6ffe9da57077f8672623153174f4a365e 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedDonor.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedDonorInfo.java @@ -2,18 +2,13 @@ package fr.inra.urgi.gpds.domain.data.germplasm; import com.fasterxml.jackson.annotation.JsonView; import fr.inra.urgi.gpds.domain.JSONView; -import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmDonor; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmDonorInfo; -/** - * Extends the BrAPI germplasm with GnpIS fields - * - * @author gcornut - */ -public interface ExtendedDonor extends BrapiGermplasmDonor { +import java.io.Serializable; - @JsonView(JSONView.GnpISFields.class) - Institute getDonorInstitute(); +public interface ExtendedDonorInfo extends Serializable, BrapiGermplasmDonorInfo { @JsonView(JSONView.GnpISFields.class) - Integer getDonationDate(); + String getDonationDate(); + } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedGermplasm.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedGermplasm.java index 254e0c333d87a67d87be9286a7dac189411321a4..a0874d779d12bd02ad24ac4e81bfd779f6680588 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedGermplasm.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedGermplasm.java @@ -23,51 +23,18 @@ public interface ExtendedGermplasm extends BrapiGermplasm, GnpISInternal { @JsonView(JSONView.GnpISFields.class) String getTaxonComment(); - @JsonView(JSONView.GnpISFields.class) - String getGeneticNature(); - - @JsonView(JSONView.GnpISFields.class) - String getComment(); - @JsonView(JSONView.GnpISFields.class) Photo getPhoto(); - @JsonView(JSONView.GnpISFields.class) - Institute getHoldingInstitute(); - - @JsonView(JSONView.GnpISFields.class) - Institute getHoldingGenbank(); - - @JsonView(JSONView.GnpISFields.class) - String getPresenceStatus(); - @JsonView(JSONView.GnpISFields.class) Genealogy getGenealogy(); @JsonView(JSONView.GnpISFields.class) List<? extends Genealogy> getChildren(); - @JsonView(JSONView.GnpISFields.class) - List<? extends PuiNameValue> getDescriptors(); - - @JsonView(JSONView.GnpISFields.class) - Site getOriginSite(); - - @JsonView(JSONView.GnpISFields.class) - Site getCollectingSite(); - @JsonView(JSONView.GnpISFields.class) List<? extends Site> getEvaluationSites(); - @JsonView(JSONView.GnpISFields.class) - GermplasmInstitute getCollector(); - - @JsonView(JSONView.GnpISFields.class) - GermplasmInstitute getBreeder(); - - @JsonView(JSONView.GnpISFields.class) - List<? extends GermplasmInstitute> getDistributors(); - @JsonView(JSONView.GnpISFields.class) List<? extends CollPop> getPanel(); diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedGermplasmMcpd.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedGermplasmMcpd.java new file mode 100644 index 0000000000000000000000000000000000000000..b5d3e112bcfa6442a82a9277c39e7fe9bca2f026 --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedGermplasmMcpd.java @@ -0,0 +1,54 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import com.fasterxml.jackson.annotation.JsonView; +import fr.inra.urgi.gpds.domain.JSONView; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasm; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmMcpd; +import fr.inra.urgi.gpds.domain.data.GnpISInternal; + +import java.util.List; + +/** + * Extends the BrAPI germplasm with GnpIS fields + * + * @author gcornut + */ +public interface ExtendedGermplasmMcpd extends BrapiGermplasmMcpd, GnpISInternal { + + @JsonView(JSONView.GnpISFields.class) + String getGeneticNature(); + + @JsonView(JSONView.GnpISFields.class) + String getPresenceStatus(); + + @JsonView(JSONView.GnpISFields.class) + String getRemarks(); + + @JsonView(JSONView.GnpISFields.class) + Site getOriginSite(); + + @JsonView(JSONView.GnpISFields.class) + ExtendedInstitute getHoldingInstitute(); + + @JsonView(JSONView.GnpISFields.class) + ExtendedInstitute getHoldingGenbank(); + + @JsonView(JSONView.GnpISFields.class) + List<? extends DistributorInfo> getDistributorInfo(); + + @JsonView(JSONView.GnpISFields.class) + List<? extends ExtendedInstitute> getBreedingInstitutes(); + + @JsonView(JSONView.GnpISFields.class) + String getBreederAccessionNumber(); + + @JsonView(JSONView.GnpISFields.class) + String getBreedingCreationYear(); + + @JsonView(JSONView.GnpISFields.class) + String getCatalogRegistrationYear(); + + @JsonView(JSONView.GnpISFields.class) + String getCatalogDeregistrationYear(); + +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Institute.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedInstitute.java similarity index 76% rename from backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Institute.java rename to backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedInstitute.java index 0dccd21f3994556d8ef78ae2aa46bc8075144e90..cc2a7a13f9ffd5c568385d6be8e516bb68ab5d9b 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Institute.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/ExtendedInstitute.java @@ -2,17 +2,12 @@ package fr.inra.urgi.gpds.domain.data.germplasm; import com.fasterxml.jackson.annotation.JsonView; import fr.inra.urgi.gpds.domain.JSONView; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmInstitute; /** * @author gcornut */ -public interface Institute { - @JsonView(JSONView.GnpISFields.class) - String getInstituteName(); - - @JsonView(JSONView.GnpISFields.class) - String getInstituteCode(); - +public interface ExtendedInstitute extends BrapiGermplasmInstitute { @JsonView(JSONView.GnpISFields.class) String getAcronym(); diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Genealogy.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Genealogy.java index 34c11b708ec2e0b1446b9fb163f6eb4aa3c08e7b..6a9d5ec85391e8684545485770133c86f42259f8 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Genealogy.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Genealogy.java @@ -37,5 +37,5 @@ public interface Genealogy { String getSecondParentType(); @JsonView(JSONView.GnpISFields.class) - List<SimpleVO> getSibblings(); + List<PuiNameValueVO> getSibblings(); } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GenealogyVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GenealogyVO.java index 492157c70a72b5c117c4e52ac2b150bdb520d3e7..cbcf4f4ed2d4aec9de2de99ca0af686048f3f300 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GenealogyVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GenealogyVO.java @@ -21,7 +21,7 @@ public class GenealogyVO implements java.io.Serializable, Genealogy { private String secondParentPUI; private String secondParentType; - private List<SimpleVO> sibblings; // puid + name + private List<PuiNameValueVO> sibblings; // puid + name @Override public String getCrossingPlan() { @@ -105,11 +105,11 @@ public class GenealogyVO implements java.io.Serializable, Genealogy { } @Override - public List<SimpleVO> getSibblings() { + public List<PuiNameValueVO> getSibblings() { return sibblings; } - public void setSibblings(List<SimpleVO> sibblings) { + public void setSibblings(List<PuiNameValueVO> sibblings) { this.sibblings = sibblings; } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmAttributeValueListVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmAttributeValueListVO.java index a4d153cbe4e3daa04ef34d1120eac0324454c75e..2c8f4da16ae26f7d16e56d0bc239e47f676c23a7 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmAttributeValueListVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmAttributeValueListVO.java @@ -43,15 +43,6 @@ public class GermplasmAttributeValueListVO implements BrapiGermplasmAttributeVal this.data = data; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - @Override public Long getGroupId() { return groupId; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmInstitute.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmInstitute.java deleted file mode 100644 index a90b324ab014c33344b3c8392fb9bc984eeb9919..0000000000000000000000000000000000000000 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmInstitute.java +++ /dev/null @@ -1,36 +0,0 @@ -package fr.inra.urgi.gpds.domain.data.germplasm; - -import com.fasterxml.jackson.annotation.JsonView; -import fr.inra.urgi.gpds.domain.JSONView; - -/** - * @author gcornut - */ -public interface GermplasmInstitute { - @JsonView(JSONView.GnpISFields.class) - Institute getInstitute(); - - @JsonView(JSONView.GnpISFields.class) - String getGermplasmPUI(); - - @JsonView(JSONView.GnpISFields.class) - String getAccessionNumber(); - - @JsonView(JSONView.GnpISFields.class) - Integer getAccessionCreationDate(); - - @JsonView(JSONView.GnpISFields.class) - String getMaterialType(); - - @JsonView(JSONView.GnpISFields.class) - String getCollectors(); - - @JsonView(JSONView.GnpISFields.class) - Integer getRegistrationYear(); - - @JsonView(JSONView.GnpISFields.class) - Integer getDeregistrationYear(); - - @JsonView(JSONView.GnpISFields.class) - String getDistributionStatus(); -} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmInstituteVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmInstituteVO.java deleted file mode 100644 index e8a9d5f80b48af014355acabb2d3c82ab22c09ba..0000000000000000000000000000000000000000 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmInstituteVO.java +++ /dev/null @@ -1,103 +0,0 @@ -package fr.inra.urgi.gpds.domain.data.germplasm; - -import java.io.Serializable; - -/** - * @author C. Michotey - */ -public class GermplasmInstituteVO implements Serializable, GermplasmInstitute { - - private static final long serialVersionUID = 7976964107440923573L; - - private InstituteVO institute; - private String germplasmPUI; - private String accessionNumber; - private Integer accessionCreationDate; - private String materialType; - private String collectors; - private Integer registrationYear; - private Integer deregistrationYear; - private String distributionStatus; - - @Override - public InstituteVO getInstitute() { - return institute; - } - - public void setInstitute(InstituteVO institute) { - this.institute = institute; - } - - @Override - public String getGermplasmPUI() { - return germplasmPUI; - } - - public void setGermplasmPUI(String germplasmPUI) { - this.germplasmPUI = germplasmPUI; - } - - @Override - public String getAccessionNumber() { - return accessionNumber; - } - - public void setAccessionNumber(String accessionNumber) { - this.accessionNumber = accessionNumber; - } - - @Override - public Integer getAccessionCreationDate() { - return accessionCreationDate; - } - - public void setAccessionCreationDate(Integer accessionCreationDate) { - this.accessionCreationDate = accessionCreationDate; - } - - @Override - public String getMaterialType() { - return materialType; - } - - public void setMaterialType(String materialType) { - this.materialType = materialType; - } - - @Override - public String getCollectors() { - return collectors; - } - - public void setCollectors(String collectors) { - this.collectors = collectors; - } - - @Override - public Integer getRegistrationYear() { - return registrationYear; - } - - public void setRegistrationYear(Integer registrationYear) { - this.registrationYear = registrationYear; - } - - @Override - public Integer getDeregistrationYear() { - return deregistrationYear; - } - - public void setDeregistrationYear(Integer deregistrationYear) { - this.deregistrationYear = deregistrationYear; - } - - @Override - public String getDistributionStatus() { - return distributionStatus; - } - - public void setDistributionStatus(String distributionStatus) { - this.distributionStatus = distributionStatus; - } - -} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmMcpdVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmMcpdVO.java new file mode 100644 index 0000000000000000000000000000000000000000..6f07e42128e8161747214e9be4735634be33ca2c --- /dev/null +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmMcpdVO.java @@ -0,0 +1,342 @@ +package fr.inra.urgi.gpds.domain.data.germplasm; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmMcpd; +import fr.inra.urgi.gpds.elasticsearch.document.annotation.Document; +import fr.inra.urgi.gpds.elasticsearch.document.annotation.Id; + +import java.io.Serializable; +import java.util.List; + +@Document(type = "germplasm-mcpd") +public class GermplasmMcpdVO implements Serializable, BrapiGermplasmMcpd, ExtendedGermplasmMcpd { + + private Long groupId; + + @Id + private String germplasmDbId; + private String germplasmPUI; + private String accessionNumber; + private List<String> alternateIDs; + private List<String> accessionNames; + + private String cropName; + private String genus; + private String species; + private String speciesAuthority; + private String subtaxon; + private String subtaxonAuthority; + + private String ancestralData; + private String biologicalStatusOfAccessionCode; + private String mlsStatus; + private String geneticNature; + private String presenceStatus; + private String remarks; + + private String countryOfOriginCode; + private SiteVO originSite; + + private String instituteCode; + private InstituteVO holdingInstitute; + private InstituteVO holdingGenbank; + + private CollectingInfoVO collectingInfo; + private String acquisitionDate; + private String acquisitionSourceCode; + + private List<DonorInfoVO> donorInfo; + private List<DistributorInfoVO> distributorInfo; + + + @JsonDeserialize(contentAs = InstituteVO.class) + private List<InstituteVO> breedingInstitutes; + private String breederAccessionNumber; + private String breedingCreationYear; + private String catalogRegistrationYear; + private String catalogDeregistrationYear; + + @JsonDeserialize(contentAs = InstituteVO.class) + private List<InstituteVO> safetyDuplicateInstitutes; + private List<String> storageTypeCodes; + + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + public String getGermplasmDbId() { + return germplasmDbId; + } + + public void setGermplasmDbId(String germplasmDbId) { + this.germplasmDbId = germplasmDbId; + } + + public String getGermplasmPUI() { + return germplasmPUI; + } + + public void setGermplasmPUI(String germplasmPUI) { + this.germplasmPUI = germplasmPUI; + } + + public String getAccessionNumber() { + return accessionNumber; + } + + public void setAccessionNumber(String accessionNumber) { + this.accessionNumber = accessionNumber; + } + + public List<String> getAlternateIDs() { + return alternateIDs; + } + + public void setAlternateIDs(List<String> alternateIDs) { + this.alternateIDs = alternateIDs; + } + + public List<String> getAccessionNames() { + return accessionNames; + } + + public void setAccessionNames(List<String> accessionNames) { + this.accessionNames = accessionNames; + } + + public String getCropName() { + return cropName; + } + + public void setCropName(String cropName) { + this.cropName = cropName; + } + + public String getGenus() { + return genus; + } + + public void setGenus(String genus) { + this.genus = genus; + } + + public String getSpecies() { + return species; + } + + public void setSpecies(String species) { + this.species = species; + } + + public String getSpeciesAuthority() { + return speciesAuthority; + } + + public void setSpeciesAuthority(String speciesAuthority) { + this.speciesAuthority = speciesAuthority; + } + + public String getSubtaxon() { + return subtaxon; + } + + public void setSubtaxon(String subtaxon) { + this.subtaxon = subtaxon; + } + + public String getSubtaxonAuthority() { + return subtaxonAuthority; + } + + public void setSubtaxonAuthority(String subtaxonAuthority) { + this.subtaxonAuthority = subtaxonAuthority; + } + + public String getAncestralData() { + return ancestralData; + } + + public void setAncestralData(String ancestralData) { + this.ancestralData = ancestralData; + } + + public String getBiologicalStatusOfAccessionCode() { + return biologicalStatusOfAccessionCode; + } + + public void setBiologicalStatusOfAccessionCode(String biologicalStatusOfAccessionCode) { + this.biologicalStatusOfAccessionCode = biologicalStatusOfAccessionCode; + } + + public String getMlsStatus() { + return mlsStatus; + } + + public void setMlsStatus(String mlsStatus) { + this.mlsStatus = mlsStatus; + } + + public String getGeneticNature() { + return geneticNature; + } + + public void setGeneticNature(String geneticNature) { + this.geneticNature = geneticNature; + } + + public String getPresenceStatus() { + return presenceStatus; + } + + public void setPresenceStatus(String presenceStatus) { + this.presenceStatus = presenceStatus; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getCountryOfOriginCode() { + return countryOfOriginCode; + } + + public void setCountryOfOriginCode(String countryOfOriginCode) { + this.countryOfOriginCode = countryOfOriginCode; + } + + public SiteVO getOriginSite() { + return originSite; + } + + public void setOriginSite(SiteVO originSite) { + this.originSite = originSite; + } + + public String getInstituteCode() { + return instituteCode; + } + + public void setInstituteCode(String instituteCode) { + this.instituteCode = instituteCode; + } + + public InstituteVO getHoldingInstitute() { + return holdingInstitute; + } + + public void setHoldingInstitute(InstituteVO holdingInstitute) { + this.holdingInstitute = holdingInstitute; + } + + public InstituteVO getHoldingGenbank() { + return holdingGenbank; + } + + public void setHoldingGenbank(InstituteVO holdingGenbank) { + this.holdingGenbank = holdingGenbank; + } + + public CollectingInfoVO getCollectingInfo() { + return collectingInfo; + } + + public void setCollectingInfo(CollectingInfoVO collectingInfo) { + this.collectingInfo = collectingInfo; + } + + public String getAcquisitionDate() { + return acquisitionDate; + } + + public void setAcquisitionDate(String acquisitionDate) { + this.acquisitionDate = acquisitionDate; + } + + public String getAcquisitionSourceCode() { + return acquisitionSourceCode; + } + + public void setAcquisitionSourceCode(String acquisitionSourceCode) { + this.acquisitionSourceCode = acquisitionSourceCode; + } + + public List<DonorInfoVO> getDonorInfo() { + return donorInfo; + } + + public void setDonorInfo(List<DonorInfoVO> donorInfo) { + this.donorInfo = donorInfo; + } + + public List<DistributorInfoVO> getDistributorInfo() { + return distributorInfo; + } + + public void setDistributorInfo(List<DistributorInfoVO> distributorInfo) { + this.distributorInfo = distributorInfo; + } + + public List<InstituteVO> getBreedingInstitutes() { + return breedingInstitutes; + } + + public void setBreedingInstitutes(List<InstituteVO> breedingInstitutes) { + this.breedingInstitutes = breedingInstitutes; + } + + public String getBreederAccessionNumber() { + return breederAccessionNumber; + } + + public void setBreederAccessionNumber(String breederAccessionNumber) { + this.breederAccessionNumber = breederAccessionNumber; + } + + public String getBreedingCreationYear() { + return breedingCreationYear; + } + + public void setBreedingCreationYear(String breedingCreationYear) { + this.breedingCreationYear = breedingCreationYear; + } + + public String getCatalogRegistrationYear() { + return catalogRegistrationYear; + } + + public void setCatalogRegistrationYear(String catalogRegistrationYear) { + this.catalogRegistrationYear = catalogRegistrationYear; + } + + public String getCatalogDeregistrationYear() { + return catalogDeregistrationYear; + } + + public void setCatalogDeregistrationYear(String catalogDeregistrationYear) { + this.catalogDeregistrationYear = catalogDeregistrationYear; + } + + public List<InstituteVO> getSafetyDuplicateInstitutes() { + return safetyDuplicateInstitutes; + } + + public void setSafetyDuplicateInstitutes(List<InstituteVO> safetyDuplicateInstitutes) { + this.safetyDuplicateInstitutes = safetyDuplicateInstitutes; + } + + public List<String> getStorageTypeCodes() { + return storageTypeCodes; + } + + public void setStorageTypeCodes(List<String> storageTypeCodes) { + this.storageTypeCodes = storageTypeCodes; + } +} diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmVO.java index 10c8779f8b44f5991f645cbb79da8d36d8750a8d..2ff825651aaf7ef0c274245e47c78317ef5ff02f 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/GermplasmVO.java @@ -24,7 +24,6 @@ public class GermplasmVO private static final long serialVersionUID = -7719928853974382749L; private Long groupId; - private List<Long> speciesGroup; @Id private String germplasmDbId; @@ -56,25 +55,13 @@ public class GermplasmVO private List<String> taxonSynonyms; private List<String> taxonCommonNames; private String taxonComment; - private String geneticNature; - private String comment; - private PhotoVO photo; - private InstituteVO holdingInstitute; - private InstituteVO holdingGenbank; - private String presenceStatus; private GenealogyVO genealogy; private List<GenealogyVO> children; - private List<SimpleVO> descriptors; - private SiteVO originSite; - private SiteVO collectingSite; + private PhotoVO photo; private List<SiteVO> evaluationSites; - private GermplasmInstituteVO collector; - private GermplasmInstituteVO breeder; - private List<GermplasmInstituteVO> distributors; - private List<CollPopVO> panel; private List<CollPopVO> collection; private List<CollPopVO> population; @@ -130,16 +117,7 @@ public class GermplasmVO this.groupId = groupId; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - - @Override + @Override public String getGermplasmDbId() { return germplasmDbId; } @@ -364,60 +342,6 @@ public class GermplasmVO this.taxonComment = taxonComment; } - @Override - public String getGeneticNature() { - return geneticNature; - } - - public void setGeneticNature(String geneticNature) { - this.geneticNature = geneticNature; - } - - @Override - public String getComment() { - return comment; - } - - public void setComment(String comment) { - this.comment = comment; - } - - @Override - public PhotoVO getPhoto() { - return photo; - } - - public void setPhoto(PhotoVO photo) { - this.photo = photo; - } - - @Override - public InstituteVO getHoldingInstitute() { - return holdingInstitute; - } - - public void setHoldingInstitute(InstituteVO holdingInstitute) { - this.holdingInstitute = holdingInstitute; - } - - @Override - public InstituteVO getHoldingGenbank() { - return holdingGenbank; - } - - public void setHoldingGenbank(InstituteVO holdingGenbank) { - this.holdingGenbank = holdingGenbank; - } - - @Override - public String getPresenceStatus() { - return presenceStatus; - } - - public void setPresenceStatus(String presenceStatus) { - this.presenceStatus = presenceStatus; - } - @Override public GenealogyVO getGenealogy() { return genealogy; @@ -437,30 +361,8 @@ public class GermplasmVO } @Override - public List<SimpleVO> getDescriptors() { - return descriptors; - } - - public void setDescriptors(List<SimpleVO> descriptors) { - this.descriptors = descriptors; - } - - @Override - public SiteVO getOriginSite() { - return originSite; - } - - public void setOriginSite(SiteVO originSite) { - this.originSite = originSite; - } - - @Override - public SiteVO getCollectingSite() { - return collectingSite; - } - - public void setCollectingSite(SiteVO collectingSite) { - this.collectingSite = collectingSite; + public PhotoVO getPhoto() { + return photo; } @Override @@ -468,35 +370,12 @@ public class GermplasmVO return evaluationSites; } - public void setEvaluationSites(List<SiteVO> evaluationSites) { - this.evaluationSites = evaluationSites; - } - - @Override - public GermplasmInstituteVO getCollector() { - return collector; - } - - public void setCollector(GermplasmInstituteVO collector) { - this.collector = collector; - } - - @Override - public GermplasmInstituteVO getBreeder() { - return breeder; - } - - public void setBreeder(GermplasmInstituteVO breeder) { - this.breeder = breeder; - } - - @Override - public List<GermplasmInstituteVO> getDistributors() { - return distributors; + public void setPhoto(PhotoVO photo) { + this.photo = photo; } - public void setDistributors(List<GermplasmInstituteVO> distributors) { - this.distributors = distributors; + public void setEvaluationSites(List<SiteVO> evaluationSites) { + this.evaluationSites = evaluationSites; } @Override diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/InstituteVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/InstituteVO.java index b1e4f8fa23605b46cae8a8cda28e3e2ee70a8628..7e7eb0ea997c8222a6eb5e1e7ce8c9fde6601d07 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/InstituteVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/InstituteVO.java @@ -1,8 +1,10 @@ package fr.inra.urgi.gpds.domain.data.germplasm; +import fr.inra.urgi.gpds.domain.brapi.v1.data.BrapiGermplasmInstitute; + import java.io.Serializable; -public class InstituteVO implements Serializable, Institute { +public class InstituteVO implements Serializable, BrapiGermplasmInstitute, ExtendedInstitute { private static final long serialVersionUID = -680211100453576319L; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/SimpleVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/PuiNameValueVO.java similarity index 82% rename from backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/SimpleVO.java rename to backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/PuiNameValueVO.java index 27006991db19639526bcfd31473cf7c649f8f2a4..4f881bf471f85bfb2bd8014177a0718125c96b4c 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/SimpleVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/PuiNameValueVO.java @@ -5,7 +5,7 @@ import java.io.Serializable; /** * @author C. Michotey */ -public class SimpleVO implements Serializable, PuiNameValue { +public class PuiNameValueVO implements Serializable, PuiNameValue { private static final long serialVersionUID = 3440255005695104200L; @@ -13,10 +13,10 @@ public class SimpleVO implements Serializable, PuiNameValue { private String name; private String value; - public SimpleVO() { + public PuiNameValueVO() { } - public SimpleVO(String pui, String name, String value) { + public PuiNameValueVO(String pui, String name, String value) { this.pui = pui; this.name = name; this.value = value; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Site.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Site.java index e23d19b3c962ee5c6f61decd8558e8c88beedf77..afc0bad482d7466f18db64a86230e25483c00dea 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Site.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/Site.java @@ -8,7 +8,7 @@ import fr.inra.urgi.gpds.domain.JSONView; */ public interface Site { @JsonView(JSONView.GnpISFields.class) - Long getSiteId(); + String getLocationDbId(); @JsonView(JSONView.GnpISFields.class) String getSiteName(); diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/SiteVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/SiteVO.java index 72db155a6bc50fb4090389083ce968e049596c3b..dbc4626a2a06f6dc1d44c6db381346c8f8992de3 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/SiteVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/germplasm/SiteVO.java @@ -6,19 +6,19 @@ public class SiteVO implements Serializable, Site { private static final long serialVersionUID = 7058708694739141664L; - private Long siteId; + private String locationDbId; private String siteName; private Float latitude; private Float longitude; private String siteType; @Override - public Long getSiteId() { - return siteId; + public String getLocationDbId() { + return locationDbId; } - public void setSiteId(Long siteId) { - this.siteId = siteId; + public void setLocationDbId(String locationDbId) { + this.locationDbId = locationDbId; } @Override diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/phenotype/ObservationUnitVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/phenotype/ObservationUnitVO.java index 88b4c7252d6ea88bd71cad2d9c3a07e702772c57..a32f5aed10211299921b5f7702d812ee652f723c 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/phenotype/ObservationUnitVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/phenotype/ObservationUnitVO.java @@ -312,13 +312,4 @@ public class ObservationUnitVO implements BrapiObservationUnit, GnpISInternal, H this.groupId = groupId; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - } diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudyDetailVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudyDetailVO.java index e61775edf7e28bf4b6da594d73c0f95f629b00b6..f0236e96d9a44d0f24cdb7931fb455f137b96c10 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudyDetailVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudyDetailVO.java @@ -233,15 +233,6 @@ public class StudyDetailVO implements GnpISInternal, BrapiStudyDetail, HasURI, H this.additionalInfo = additionalInfo; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - @Override public Long getGroupId() { return groupId; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudySummaryVO.java b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudySummaryVO.java index 328a695e83ea64b91a88fc458344082de39ac46c..36bb922b05d297eeaa10aa622bc27dc61ce91ca6 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudySummaryVO.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/domain/data/study/StudySummaryVO.java @@ -244,15 +244,6 @@ public class StudySummaryVO implements GnpISInternal, BrapiStudySummary, HasURI, this.seasons = seasons; } - @Override - public List<Long> getSpeciesGroup() { - return speciesGroup; - } - - public void setSpeciesGroup(List<Long> speciesGroup) { - this.speciesGroup = speciesGroup; - } - @Override public Long getGroupId() { return groupId; diff --git a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepository.java b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepository.java index c1bf7b19ccf2ceef33fa3ab1df27d06672901057..f5256126dd54604d80354ca09da977ed64927c68 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepository.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepository.java @@ -1,6 +1,7 @@ package fr.inra.urgi.gpds.repository.es; import fr.inra.urgi.gpds.domain.criteria.GermplasmSearchCriteria; +import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmMcpdVO; import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmVO; import fr.inra.urgi.gpds.domain.data.germplasm.PedigreeVO; import fr.inra.urgi.gpds.domain.data.germplasm.ProgenyVO; @@ -23,6 +24,10 @@ public interface GermplasmRepository */ GermplasmVO getById(String germplasmDbId); + + GermplasmMcpdVO getMcpdById(String germplasmDbId); + + /** * Scroll through all germplasm matching the given criteria. */ diff --git a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryImpl.java b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryImpl.java index 84108f48d1a4159f84bee3099453de921c5e693e..a0b36332bf3d0d8c30da794f5dca22f360e7ab6f 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryImpl.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryImpl.java @@ -2,6 +2,7 @@ package fr.inra.urgi.gpds.repository.es; import com.fasterxml.jackson.databind.ObjectMapper; import fr.inra.urgi.gpds.domain.criteria.GermplasmSearchCriteria; +import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmMcpdVO; import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmVO; import fr.inra.urgi.gpds.domain.data.germplasm.PedigreeVO; import fr.inra.urgi.gpds.domain.data.germplasm.ProgenyVO; @@ -42,6 +43,7 @@ public class GermplasmRepositoryImpl implements GermplasmRepository { private final ESFindRepository<GermplasmSearchCriteria, GermplasmVO> findRepository; private final ESGetByIdRepository<GermplasmVO> getByIdRepository; + private final ESGetByIdRepository<GermplasmMcpdVO> getMcpdByIdRepository; private final ESGenericQueryFactory<GermplasmSearchCriteria> queryFactory; @Autowired @@ -56,9 +58,14 @@ public class GermplasmRepositoryImpl implements GermplasmRepository { this.mapper = mapper; this.parser = parser; Class<GermplasmVO> voClass = GermplasmVO.class; + Class<GermplasmMcpdVO> voMcpdClass = GermplasmMcpdVO.class; this.queryFactory = new ESGenericQueryFactory<>(); this.findRepository = new ESGenericFindRepository<>(client, requestFactory, voClass, this.parser); this.getByIdRepository = new ESGenericGetByIdRepository<>(client, requestFactory, voClass, this.parser); + this.getMcpdByIdRepository = new ESGenericGetByIdRepository<>(client, requestFactory, voMcpdClass, this.parser); + + + } @Override @@ -73,6 +80,11 @@ public class GermplasmRepositoryImpl implements GermplasmRepository { return getByIdRepository.getById(germplasmDbId); } + @Override + public GermplasmMcpdVO getMcpdById(String germplasmDbId) { + return getMcpdByIdRepository.getById(germplasmDbId); + } + @Override public PaginatedList<GermplasmVO> find(GermplasmSearchCriteria criteria) { return findRepository.find(criteria); diff --git a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/XRefDocumentRepositoryImpl.java b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/XRefDocumentRepositoryImpl.java index 72eddc190a12e7804573a6f3a1992605a17ce055..ae2f9e86004c6898761468994687b49ce9f677f7 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/repository/es/XRefDocumentRepositoryImpl.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/repository/es/XRefDocumentRepositoryImpl.java @@ -69,6 +69,9 @@ public class XRefDocumentRepositoryImpl implements XRefDocumentRepository { LOGGER.debug("Search Xref aliases: " + String.join(",", aliases)); LOGGER.debug("Query:\n " + source.toString()); + + + SearchRequest searchRequest = new SearchRequest() .indices(aliases) .source(source); diff --git a/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmService.java b/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmService.java index dc79a190d895bebbd1007560752c622988747753..6ccf7a778e4df01b507edbc033bbe733e28a1c3e 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmService.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmService.java @@ -1,6 +1,7 @@ package fr.inra.urgi.gpds.service.es; import fr.inra.urgi.gpds.domain.criteria.GermplasmSearchCriteria; +import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmMcpdVO; import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmVO; import fr.inra.urgi.gpds.domain.data.germplasm.PedigreeVO; import fr.inra.urgi.gpds.domain.data.germplasm.ProgenyVO; @@ -13,6 +14,8 @@ public interface GermplasmService { GermplasmVO getById(String germplasmDbId); + GermplasmMcpdVO getMcpdById(String germplasmDbId); + PaginatedList<GermplasmVO> find(GermplasmSearchCriteria criteria); File exportCSV(GermplasmSearchCriteria criteria); diff --git a/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmServiceImpl.java b/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmServiceImpl.java index d48999a901b3a8768b3509e96e91b3a5079c1476..6cdbe0e4cf6e60260efe4adb2890dfa7ab937fd3 100644 --- a/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmServiceImpl.java +++ b/backend/src/main/java/fr/inra/urgi/gpds/service/es/GermplasmServiceImpl.java @@ -3,6 +3,7 @@ package fr.inra.urgi.gpds.service.es; import com.opencsv.CSVWriter; import fr.inra.urgi.gpds.api.gnpis.v1.GnpISGermplasmController; import fr.inra.urgi.gpds.domain.criteria.GermplasmSearchCriteria; +import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmMcpdVO; import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmVO; import fr.inra.urgi.gpds.domain.data.germplasm.PedigreeVO; import fr.inra.urgi.gpds.domain.data.germplasm.ProgenyVO; @@ -69,6 +70,11 @@ public class GermplasmServiceImpl implements GermplasmService { return germplasmRepository.getById(germplasmDbId); } + @Override + public GermplasmMcpdVO getMcpdById(String germplasmDbId) { + return germplasmRepository.getMcpdById(germplasmDbId); + } + @Override public PaginatedList<GermplasmVO> find(GermplasmSearchCriteria sCrit) { return germplasmRepository.find(sCrit); diff --git a/backend/src/test/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryTest.java b/backend/src/test/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryTest.java index ae608d3137122445a5444d59769ed112f397531b..83063d083e04cab3a2ccf48944c667c1ca72de96 100644 --- a/backend/src/test/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryTest.java +++ b/backend/src/test/java/fr/inra/urgi/gpds/repository/es/GermplasmRepositoryTest.java @@ -6,6 +6,7 @@ import fr.inra.urgi.gpds.Application; import fr.inra.urgi.gpds.domain.criteria.GermplasmGETSearchCriteria; import fr.inra.urgi.gpds.domain.criteria.GermplasmPOSTSearchCriteria; import fr.inra.urgi.gpds.domain.criteria.GermplasmSearchCriteria; +import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmMcpdVO; import fr.inra.urgi.gpds.domain.data.germplasm.GermplasmVO; import fr.inra.urgi.gpds.domain.data.germplasm.PedigreeVO; import fr.inra.urgi.gpds.domain.data.germplasm.ProgenyVO; @@ -45,6 +46,7 @@ class GermplasmRepositoryTest { @BeforeAll void before() { esSetUp.initialize(GermplasmVO.class, 0L); + esSetUp.initialize(GermplasmMcpdVO.class, 0L); esSetUp.initialize(ProgenyVO.class, 0L); esSetUp.initialize(PedigreeVO.class, 0L); } @@ -60,6 +62,26 @@ class GermplasmRepositoryTest { assertThat(germplasm.getGermplasmDbId()).isEqualTo(germplasmDbId); } + + @Test + void should_Get_By_Id_Mcpd() { + String germplasmDbId = "13705"; + GermplasmMcpdVO germplasm = repository.getMcpdById(germplasmDbId); + assertThat(germplasm).isNotNull(); + assertThat(germplasm.getGermplasmDbId()).isEqualTo(germplasmDbId); + } + + + @Test + void should_Not_Get_Mcpd_With_Wrong_Id() { + String germplasmDbId = "489485184"; + GermplasmMcpdVO germplasm = repository.getMcpdById(germplasmDbId); + assertThat(germplasm).isNull(); + } + + + + @Test void should_Find_By_PUI() { String germplasmPUI = "doi:10.15454/1.4921786381783696E12"; diff --git a/backend/src/test/java/fr/inra/urgi/gpds/repository/es/setup/ESSetUp.java b/backend/src/test/java/fr/inra/urgi/gpds/repository/es/setup/ESSetUp.java index 7f38d301ba6ca9714d75f879d66d7a3668a3e5fd..6d7fa9f6a5acabbddd1cff74bacffd8d4564784f 100644 --- a/backend/src/test/java/fr/inra/urgi/gpds/repository/es/setup/ESSetUp.java +++ b/backend/src/test/java/fr/inra/urgi/gpds/repository/es/setup/ESSetUp.java @@ -170,7 +170,11 @@ public class ESSetUp { @SuppressWarnings("UnstableApiUsage") private String readResource(String path) { try { - return CharStreams.toString(new InputStreamReader(getClass().getResourceAsStream(path))); + InputStream resource = getClass().getResourceAsStream(path); + if (resource == null) { + throw new RuntimeException("Could not find resource at path '"+path+"'"); + } + return CharStreams.toString(new InputStreamReader(resource)); } catch (IOException e) { throw new RuntimeException(e); } diff --git a/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/germplasm-mcpd0.json b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/germplasm-mcpd0.json new file mode 100644 index 0000000000000000000000000000000000000000..4981d539735ebe4d7a8c2d079f2683221af9cc4a --- /dev/null +++ b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/germplasm-mcpd0.json @@ -0,0 +1,78 @@ +[{ + "docId": 13705, + "groupId": 0, + "accessionNames": [ + "Belle Magnifique", + "Angleterre tardive,Belle de Chatenay,Belle de Sceaux,Belle de Spa,Cerise d'Agen,Cerise de Crêve,Cerise de Planchoury,Cerise de Saxe,de Spa,Gros de Sceaux,Magnifique de Sceaux" + ], + "accessionNumber": "V3853", + "acquisitionDate": 20040000, + "acquisitionSourceCode": null, + "alternateIDs": [ + "V3853", + "https://doi.org/10.15454/QOYDZ8", + "13705" + ], + "ancestralData": "Il y a deux hypothèses sur l'origine de cette variété : elle aurait été obtenue dans une pépinière de Vitry-sur-Seine ou trouvée dans une propriété à Chatenay (Pomologie de la France 1871).", + "biologicalStatusOfAccessionCode": null, + "breedingInstitutes": [ + { + "instituteName": null, + "instituteCode": null + } + ], + "collectingInfo": { + "collectingDate": 20040000, + "collectingInstitutes": [ + { + "instituteAddress": "", + "instituteCode": null, + "instituteName": null + } + ], + "collectingMissionIdentifier": null, + "collectingNumber": null, + "collectingSite": { + "coordinateUncertainty": null, + "elevation": null, + "georeferencingMethod": null, + "latitudeDecimal": null, + "latitudeDegrees": null, + "locationDescription": null, + "longitudeDecimal": null, + "longitudeDegrees": null, + "spatialReferenceSystem": null + } + }, + "cropName": "Cherry", + "countryOfOriginCode": "France", + "donorInfo ": [ + { + "donorAccessionNumber": "C101", + "donorInstitute": { + "donorInstituteCode": null, + "donorInstitute": "Conservatoire Végétal Régional d'Aquitaine" + } + } + ], + "genus": "Prunus", + "germplasmDbId": 13705, + "germplasmPUI": "https://doi.org/10.15454/QOYDZ8", + "instituteCode": "FRA057", + "mlsStatus": "0", + "remarks": "Quelques auteurs disent que cette variété a été obtenue vers 1795 par un nommé Chatenay, dit le Magnifique, pépiniériste à Vitry-sur-Seine (Pomologie de la France 1871). D'autres disent qu'elle a été trouvée dans une propriété à Chatenay, et multipliée par les pépiniéristes de Sceaux et de Chatenay, localités où elle a porté pendant longtemps le nom de Cerise de la Madeleine (Pomologie de la France 1871).", + "safetyDuplicateInstitues": [ + { + "instituteCode": null, + "instituteName": null + } + ], + "species": "cerasus", + "speciesAuthority": "L.", + "storageTypeCodes": [ + "" + ], + "subtaxon": "", + "subtaxonAuthority": "L." +} +] diff --git a/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/urgi_xref_test-group0.json b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/urgi_xref_test-group0.json index 05809a8ce030a613e8cb4cc1d2649afe33e08063..a51b8787c82d00d4f19c60e75771508442cf65df 100644 --- a/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/urgi_xref_test-group0.json +++ b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/fixture/urgi_xref_test-group0.json @@ -17,6 +17,7 @@ "sequence_id": "", "sequence_version": "", "start_position": "", + "end_position": "", "map": "", "map_position": "", diff --git a/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/index/germplasm-mcpd_mapping.json b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/index/germplasm-mcpd_mapping.json new file mode 100644 index 0000000000000000000000000000000000000000..64e68c060eb54f68fefc947f8b6cfd42061e6887 --- /dev/null +++ b/backend/src/test/resources/fr/inra/urgi/gpds/repository/es/setup/index/germplasm-mcpd_mapping.json @@ -0,0 +1,13 @@ +{ + "germplasm-mcpd": { + "dynamic": "false", + "properties": { + "germplasmDbId": { + "type": "keyword" + }, + "groupId": { + "type": "long" + } + } + } +} diff --git a/frontend/src/app/brapi.service.ts b/frontend/src/app/brapi.service.ts index a32154a558e86966cdc2a69014343a7c2649e6fc..ac197c24ec7a13f2cfad2e949f0260062cf45785 100644 --- a/frontend/src/app/brapi.service.ts +++ b/frontend/src/app/brapi.service.ts @@ -12,7 +12,7 @@ import { BrapiStudy, BrapiTrial } from './models/brapi.model'; -import { Germplasm } from './models/gnpis.model'; +import { Germplasm, GermplasmMcpd } from './models/gnpis.model'; export const BASE_URL = 'brapi/v1'; @@ -29,6 +29,11 @@ export class BrapiService { .get<Germplasm>(`${BASE_URL}/germplasm/${germplasmDbId}`); } + germplasmMcpd(germplasmDbId: string): Observable<BrapiResult<GermplasmMcpd>> { + return this.http + .get<BrapiResult<GermplasmMcpd>>(`${BASE_URL}/germplasm/${germplasmDbId}/mcpd`); + } + germplasmPedigree(germplasmDbId: string): Observable<BrapiResult<BrapiGermplasmPedigree>> { return this.http .get<BrapiResult<BrapiGermplasmPedigree>>(`${BASE_URL}/germplasm/${germplasmDbId}/pedigree`); diff --git a/frontend/src/app/germplasm-card/germplasm-card.component.html b/frontend/src/app/germplasm-card/germplasm-card.component.html index 45d8adb7825386544951ae4cbd2997dfa7120d7d..faac57788487fa7f55930921915955957ffaa5ed 100644 --- a/frontend/src/app/germplasm-card/germplasm-card.component.html +++ b/frontend/src/app/germplasm-card/germplasm-card.component.html @@ -1,10 +1,12 @@ <gpds-loading-spinner [loading]="loading" class="float-right"></gpds-loading-spinner> -<ng-container *ngIf="germplasmGnpis"> +<ng-container *ngIf="germplasmGnpis && germplasmMcpd"> <h3 class="mb-4"> <img *ngIf="germplasmGnpis.holdingGenbank && germplasmGnpis.holdingGenbank.instituteName" [src]="germplasmGnpis.holdingGenbank.logo" align="right"/> + + Germplasm: {{ germplasmGnpis.germplasmName }} </h3> @@ -493,9 +495,7 @@ <gpds-card-table [headers]="[ - 'Institute name', 'Institute code', - 'Donation date', 'Accession number', 'Accession PUI' ]" @@ -503,7 +503,7 @@ <ng-template let-row> <tr> <ng-template #donorInstituteTemplate> - <ng-container *ngTemplateOutlet="instituteTemplate;context:row.donorInstitute"> + <ng-container *ngTemplateOutlet="instituteTemplate;context:row.donors"> </ng-container> </ng-template> @@ -511,12 +511,11 @@ <a class="popovers" placement="auto" [autoClose]="'outside'" [ngbPopover]="donorInstituteTemplate" - [popoverTitle]="row.donorInstitute.instituteName"> - {{ row.donorInstitute.instituteName }} + [popoverTitle]="row.donorInstituteCode"> + {{ row.donorInstituteCode }} </a> </td> <td>{{ row.donorInstituteCode }}</td> - <td>{{ row.donationDate }}</td> <td>{{ row.donorAccessionNumber }}</td> <td>{{ row.donorGermplasmPUI }}</td> </tr> @@ -782,6 +781,9 @@ </ng-template> </gpds-card-section> + + + <!-- XRefs part --> <gpds-xrefs [xrefId]="germplasmGnpis.germplasmPUI"></gpds-xrefs> </ng-container> diff --git a/frontend/src/app/germplasm-card/germplasm-card.component.ts b/frontend/src/app/germplasm-card/germplasm-card.component.ts index b1aaf9f658b29aae12832fdd3e0f33c57ceca47d..112d00cadf5595e8fca0219b367c04af444b9d1f 100644 --- a/frontend/src/app/germplasm-card/germplasm-card.component.ts +++ b/frontend/src/app/germplasm-card/germplasm-card.component.ts @@ -3,7 +3,7 @@ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { BrapiService } from '../brapi.service'; import { GnpisService } from '../gnpis.service'; import { BrapiAttributeData, BrapiGermplasmPedigree, BrapiLocation, BrapiTaxonIds } from '../models/brapi.model'; -import { Children, Germplasm, Site } from '../models/gnpis.model'; +import { Children, Germplasm, GermplasmMcpd, Site } from '../models/gnpis.model'; import { DataDiscoverySource } from '../models/data-discovery.model'; @Component({ @@ -36,6 +36,7 @@ export class GermplasmCardComponent implements OnInit { taxonIdsWithURL: BrapiTaxonIds[] = []; germplasmGnpis: Germplasm; + germplasmMcpd: GermplasmMcpd; germplasmPedigree: BrapiGermplasmPedigree; germplasmProgeny: Children[]; germplasmAttributes: BrapiAttributeData[]; @@ -53,6 +54,13 @@ export class GermplasmCardComponent implements OnInit { this.germplasmId = this.route.snapshot.queryParams.id; this.germplasmPuid = this.route.snapshot.queryParams.pui; + + const germplasmMcpd$ = this.brapiService.germplasmMcpd(this.germplasmId).toPromise(); + germplasmMcpd$ + .then(germplasmMcpd => { + this.germplasmMcpd = germplasmMcpd.result; + }); + const germplasm$ = this.getGermplasm(this.germplasmId, this.germplasmPuid); germplasm$.then(result => { const germplasmId = this.germplasmId ? this.germplasmId : result.germplasmDbId; @@ -80,7 +88,7 @@ export class GermplasmCardComponent implements OnInit { }); }); - this.loaded = Promise.all([germplasm$]); + this.loaded = Promise.all([germplasm$, germplasmMcpd$]); this.loaded.then(() => { this.loading = false; this.alreadyInitialize = true; @@ -107,6 +115,7 @@ export class GermplasmCardComponent implements OnInit { return germplasm$; } + // TODO Remove the condition when the field includedInDataCatalog will be added to URGI study. getGermplasmSource(sourceURI: string) { if (sourceURI) { diff --git a/frontend/src/app/models/gnpis.model.ts b/frontend/src/app/models/gnpis.model.ts index edee6ddf7211609bc3009ecf1f15df4f404590da..d7cd3a47053dd259432359e9e15278d4857ac93a 100644 --- a/frontend/src/app/models/gnpis.model.ts +++ b/frontend/src/app/models/gnpis.model.ts @@ -25,6 +25,13 @@ export interface Germplasm extends BrapiGermplasm { population: GermplasmSet[]; } + + +export interface GermplasmMcpd extends BrapiGermplasm{ + mlsStatus: string; +} + + export interface Site { latitude: number; longitude: number;