diff --git a/src/main/java/org/alliancegenome/curation_api/controllers/base/BaseEntityCrudController.java b/src/main/java/org/alliancegenome/curation_api/controllers/base/BaseEntityCrudController.java index dec1bb10a..9fee8a6fe 100644 --- a/src/main/java/org/alliancegenome/curation_api/controllers/base/BaseEntityCrudController.java +++ b/src/main/java/org/alliancegenome/curation_api/controllers/base/BaseEntityCrudController.java @@ -61,6 +61,10 @@ public SearchResponse find(Integer page, Integer limit, HashMap findForPublic(Integer page, Integer limit, HashMap params) { + return find(page, limit, params); + } public SearchResponse search(Integer page, Integer limit, HashMap params) { if (params == null) diff --git a/src/main/java/org/alliancegenome/curation_api/interfaces/base/BaseIdCrudInterface.java b/src/main/java/org/alliancegenome/curation_api/interfaces/base/BaseIdCrudInterface.java index e647b1e57..e7ac29a6b 100644 --- a/src/main/java/org/alliancegenome/curation_api/interfaces/base/BaseIdCrudInterface.java +++ b/src/main/java/org/alliancegenome/curation_api/interfaces/base/BaseIdCrudInterface.java @@ -60,6 +60,12 @@ public interface BaseIdCrudInterface { @JsonView(View.FieldsAndLists.class) public SearchResponse find(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, @RequestBody HashMap params); + @POST + @Path("/findForPublic") + @Tag(name = "Public Web API Database Searching Endpoints") + @JsonView(View.ForPublic.class) + public SearchResponse findForPublic(@DefaultValue("0") @QueryParam("page") Integer page, @DefaultValue("10") @QueryParam("limit") Integer limit, @RequestBody HashMap params); + @POST @Path("/search") @Tag(name = "Search Database Browsing Endpoints") diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/AGMDiseaseAnnotation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/AGMDiseaseAnnotation.java index 06a59977f..b258c78dc 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/AGMDiseaseAnnotation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/AGMDiseaseAnnotation.java @@ -48,21 +48,21 @@ public class AGMDiseaseAnnotation extends DiseaseAnnotation { @Fetch(FetchMode.SELECT) @org.hibernate.annotations.OnDelete(action = org.hibernate.annotations.OnDeleteAction.CASCADE) @JoinColumn(foreignKey = @ForeignKey(name = "fk_agmdasubject")) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private AffectedGenomicModel subject; @IndexedEmbedded(includeDepth = 2) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Gene inferredGene; @IndexedEmbedded(includeDepth = 2) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Allele inferredAllele; @IndexedEmbedded(includeDepth = 2) @@ -70,14 +70,14 @@ public class AGMDiseaseAnnotation extends DiseaseAnnotation { @ManyToMany @Fetch(FetchMode.SELECT) @JoinTable(indexes = @Index(columnList = "agmdiseaseannotation_id")) - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) private List assertedGenes; @IndexedEmbedded(includeDepth = 2) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Allele assertedAllele; @Transient diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/AffectedGenomicModel.java b/src/main/java/org/alliancegenome/curation_api/model/entities/AffectedGenomicModel.java index 33b2e871c..2f3ab6749 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/AffectedGenomicModel.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/AffectedGenomicModel.java @@ -34,7 +34,7 @@ public class AffectedGenomicModel extends GenomicEntity { @Column(columnDefinition = "TEXT") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private String name; @OneToMany(mappedBy = "subject", cascade = CascadeType.ALL, orphanRemoval = true) @@ -43,6 +43,6 @@ public class AffectedGenomicModel extends GenomicEntity { @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private VocabularyTerm subtype; } diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/Allele.java b/src/main/java/org/alliancegenome/curation_api/model/entities/Allele.java index 89cee5ede..8a9793b5d 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/Allele.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/Allele.java @@ -94,7 +94,7 @@ public class Allele extends GenomicEntity { @IndexedEmbedded(includePaths = { "displayText", "formatText", "nameType.name", "synonymScope.name", "evidence.curie", "displayText_keyword", "formatText_keyword", "nameType.name_keyword", "synonymScope.name_keyword", "evidence.curie_keyword"}) @OneToOne(mappedBy = "singleAllele", cascade = CascadeType.ALL, orphanRemoval=true) @JsonManagedReference - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private AlleleSymbolSlotAnnotation alleleSymbol; @IndexedEmbedded(includePaths = { "displayText", "formatText", "nameType.name", "synonymScope.name", "evidence.curie", "displayText_keyword", "formatText_keyword", "nameType.name_keyword", "synonymScope.name_keyword", "evidence.curie_keyword"}) diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/AlleleDiseaseAnnotation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/AlleleDiseaseAnnotation.java index ee454ed10..dc7029d9a 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/AlleleDiseaseAnnotation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/AlleleDiseaseAnnotation.java @@ -50,14 +50,14 @@ public class AlleleDiseaseAnnotation extends DiseaseAnnotation { @Fetch(FetchMode.SELECT) @org.hibernate.annotations.OnDelete(action = org.hibernate.annotations.OnDeleteAction.CASCADE) @JoinColumn(foreignKey = @ForeignKey(name = "fk_alleledasubject")) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Allele subject; @IndexedEmbedded(includeDepth = 2) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Gene inferredGene; @IndexedEmbedded(includeDepth = 2) @@ -65,7 +65,7 @@ public class AlleleDiseaseAnnotation extends DiseaseAnnotation { @ManyToMany @Fetch(FetchMode.SELECT) @JoinTable(indexes = { @Index(columnList = "allelediseaseannotation_id"), @Index(columnList = "assertedgenes_curie")}) - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) private List assertedGenes; @Transient diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/Annotation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/Annotation.java index 3e54dbc33..afd5ecbb7 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/Annotation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/Annotation.java @@ -87,14 +87,14 @@ public class Annotation extends SingleReferenceAssociation { @IndexedEmbedded(includeDepth = 2) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToMany - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) @JoinTable(indexes = { @Index(name = "annotation_conditionrelation_annotation_id_index", columnList = "annotation_id"), @Index(name = "annotation_conditionrelation_conditionrelations_id_index", columnList = "conditionrelations_id")}) private List conditionRelations; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @OneToMany(cascade = CascadeType.ALL, orphanRemoval=true) - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) @JoinTable(indexes = { @Index(name = "annotation_note_annotation_id_index", columnList = "annotation_id"), @Index(name = "annotation_note_relatednotes_id_index",columnList = "relatednotes_id")}) private List relatedNotes; @@ -102,7 +102,7 @@ public class Annotation extends SingleReferenceAssociation { @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) protected DataProvider dataProvider; } diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/BiologicalEntity.java b/src/main/java/org/alliancegenome/curation_api/model/entities/BiologicalEntity.java index e09052072..e6ece09f1 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/BiologicalEntity.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/BiologicalEntity.java @@ -48,7 +48,7 @@ public class BiologicalEntity extends CurieAuditedObject { @IndexedEmbedded(includePaths = {"name", "curie", "name_keyword", "curie_keyword"}) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private NCBITaxonTerm taxon; @IndexedEmbedded(includePaths = {"sourceOrganization.abbreviation", "sourceOrganization.fullName", "sourceOrganization.shortName", "crossReference.displayName", "crossReference.referencedCurie", diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/ConditionRelation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/ConditionRelation.java index 50eeedff9..c0bf5dd8c 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/ConditionRelation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/ConditionRelation.java @@ -42,7 +42,7 @@ public class ConditionRelation extends UniqueIdAuditedObject { @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private VocabularyTerm conditionRelationType; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @@ -60,7 +60,7 @@ public class ConditionRelation extends UniqueIdAuditedObject { @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToMany - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ConditionRelationView.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ConditionRelationView.class, View.ForPublic.class }) private List conditions; public void addExperimentCondition(ExperimentalCondition experimentalCondition) { diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/CrossReference.java b/src/main/java/org/alliancegenome/curation_api/model/entities/CrossReference.java index 69bab30ce..c7490337f 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/CrossReference.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/CrossReference.java @@ -41,7 +41,7 @@ public class CrossReference extends GeneratedAuditedObject { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "referencedCurie_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include private String referencedCurie; @@ -55,7 +55,7 @@ public class CrossReference extends GeneratedAuditedObject { @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private ResourceDescriptorPage resourceDescriptorPage; public String getPrefix() { diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/DataProvider.java b/src/main/java/org/alliancegenome/curation_api/model/entities/DataProvider.java index 5ff0c4d52..453f5012b 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/DataProvider.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/DataProvider.java @@ -35,13 +35,13 @@ public class DataProvider extends GeneratedAuditedObject { @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @OneToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Organization sourceOrganization; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @OneToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private CrossReference crossReference; } diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/DiseaseAnnotation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/DiseaseAnnotation.java index 503bdb787..20560bd01 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/DiseaseAnnotation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/DiseaseAnnotation.java @@ -67,25 +67,25 @@ public abstract class DiseaseAnnotation extends Annotation { @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private DOTerm object; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer", valueBridge = @ValueBridgeRef(type = BooleanValueBridge.class)) @KeywordField(name = "negated_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, valueBridge = @ValueBridgeRef(type = BooleanValueBridge.class)) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @Column(columnDefinition = "boolean default false", nullable = false) private Boolean negated = false; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private VocabularyTerm relation; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToMany - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) @JoinTable(indexes = { @Index(columnList = "diseaseannotation_id"), @Index(columnList = "evidencecodes_curie")}) private List evidenceCodes; @@ -94,47 +94,47 @@ public abstract class DiseaseAnnotation extends Annotation { @ManyToMany @Fetch(FetchMode.SELECT) @JoinTable(indexes = { @Index(columnList = "diseaseannotation_id"), @Index(columnList = "with_curie") }) - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) private List with; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private VocabularyTerm annotationType; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToMany - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) @JoinTable(indexes = { @Index(columnList = "diseaseannotation_id"), @Index(columnList = "diseasequalifiers_id")}) private List diseaseQualifiers; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private VocabularyTerm geneticSex; @IndexedEmbedded(includeDepth = 2) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private DataProvider secondaryDataProvider; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToMany @Fetch(FetchMode.SELECT) - @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class }) + @JsonView({ View.FieldsAndLists.class, View.DiseaseAnnotation.class, View.ForPublic.class }) @JoinTable(indexes = { @Index(columnList = "diseaseannotation_id"), @Index(columnList = "diseasegeneticmodifiers_curie")}) private List diseaseGeneticModifiers; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private VocabularyTerm diseaseGeneticModifierRelation; @Transient diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/ExperimentalCondition.java b/src/main/java/org/alliancegenome/curation_api/model/entities/ExperimentalCondition.java index 0aaddf49a..c0cf3718e 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/ExperimentalCondition.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/ExperimentalCondition.java @@ -48,7 +48,7 @@ public class ExperimentalCondition extends UniqueIdAuditedObject { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "conditionSummary_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private String conditionSummary; @IndexedEmbedded(includeDepth = 1) diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/Gene.java b/src/main/java/org/alliancegenome/curation_api/model/entities/Gene.java index 3fb40aa88..ef2e96c3c 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/Gene.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/Gene.java @@ -52,13 +52,13 @@ public class Gene extends GenomicEntity { @IndexedEmbedded(includePaths = { "displayText", "formatText", "nameType.name", "synonymScope.name", "evidence.curie", "displayText_keyword", "formatText_keyword", "nameType.name_keyword", "synonymScope.name_keyword", "evidence.curie_keyword"}) @OneToOne(mappedBy = "singleGene", cascade = CascadeType.ALL, orphanRemoval = true) @JsonManagedReference - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private GeneSymbolSlotAnnotation geneSymbol; @IndexedEmbedded(includePaths = { "displayText", "formatText", "nameType.name", "synonymScope.name", "evidence.curie", "displayText_keyword", "formatText_keyword", "nameType.name_keyword", "synonymScope.name_keyword", "evidence.curie_keyword"}) @OneToOne(mappedBy = "singleGene", cascade = CascadeType.ALL, orphanRemoval = true) @JsonManagedReference - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private GeneFullNameSlotAnnotation geneFullName; @IndexedEmbedded(includePaths = { "displayText", "formatText", "nameType.name", "synonymScope.name", "evidence.curie", "displayText_keyword", "formatText_keyword", "nameType.name_keyword", "synonymScope.name_keyword", "evidence.curie_keyword"}) diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/GeneDiseaseAnnotation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/GeneDiseaseAnnotation.java index 1f73389b8..033b8154e 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/GeneDiseaseAnnotation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/GeneDiseaseAnnotation.java @@ -40,7 +40,7 @@ public class GeneDiseaseAnnotation extends DiseaseAnnotation { @ManyToOne @org.hibernate.annotations.OnDelete(action = org.hibernate.annotations.OnDeleteAction.CASCADE) @JoinColumn(foreignKey = @ForeignKey(name = "fk_genedasubject")) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Gene subject; @IndexedEmbedded(includeDepth = 1) diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/GenomicEntity.java b/src/main/java/org/alliancegenome/curation_api/model/entities/GenomicEntity.java index 829b35f0a..55323dbe8 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/GenomicEntity.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/GenomicEntity.java @@ -42,7 +42,7 @@ public class GenomicEntity extends BiologicalEntity { @Index(columnList = "genomicentity_curie", name = "genomicentity_crossreference_genomicentity_curie_index"), @Index(columnList = "crossreferences_id", name = "genomicentity_crossreference_crossreferences_id_index") }) - @JsonView({ View.FieldsAndLists.class }) + @JsonView({ View.FieldsAndLists.class, View.ForPublic.class }) private List crossReferences; @IndexedEmbedded(includePaths = {"constructSubject.curie", "constructSubject.constructSymbol.displayText", "constructSubject.constructSymbol.formatText", diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/Note.java b/src/main/java/org/alliancegenome/curation_api/model/entities/Note.java index 050680823..fc9bba667 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/Note.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/Note.java @@ -9,6 +9,8 @@ import org.alliancegenome.curation_api.model.entities.base.GeneratedAuditedObject; import org.alliancegenome.curation_api.view.View; import org.eclipse.microprofile.openapi.annotations.media.Schema; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; import org.hibernate.envers.Audited; import org.hibernate.search.engine.backend.types.Aggregable; import org.hibernate.search.engine.backend.types.Searchable; @@ -47,14 +49,15 @@ public class Note extends GeneratedAuditedObject { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer", valueBridge = @ValueBridgeRef(type = FreeTextValueBridge.class)) @KeywordField(name = "freeText_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer", valueBridge = @ValueBridgeRef(type = FreeTextValueBridge.class)) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @Column(columnDefinition = "TEXT") private String freeText; @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @Fetch(FetchMode.SELECT) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private VocabularyTerm noteType; @IndexedEmbedded(includeDepth = 1) diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/Organization.java b/src/main/java/org/alliancegenome/curation_api/model/entities/Organization.java index 01eb846c9..c444c4776 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/Organization.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/Organization.java @@ -42,7 +42,7 @@ public class Organization extends Agent { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "abbreviation_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class, View.PersonSettingView.class }) + @JsonView({ View.FieldsOnly.class, View.PersonSettingView.class, View.ForPublic.class }) @Column(unique = true) private String abbreviation; @@ -59,6 +59,6 @@ public class Organization extends Agent { @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @OneToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private ResourceDescriptorPage homepageResourceDescriptorPage; } diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/Reference.java b/src/main/java/org/alliancegenome/curation_api/model/entities/Reference.java index 723cf5a4f..45c42ccf3 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/Reference.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/Reference.java @@ -50,7 +50,7 @@ public class Reference extends InformationContentEntity { @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToMany - @JsonView({View.FieldsOnly.class}) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @JoinTable(indexes = {@Index(columnList = "Reference_curie"), @Index(columnList = "crossReferences_id")}) @EqualsAndHashCode.Include private List crossReferences; diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptor.java b/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptor.java index 4ae8e2145..a5ef4991c 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptor.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptor.java @@ -46,14 +46,14 @@ public class ResourceDescriptor extends GeneratedAuditedObject { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "prefix_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @Column(unique = true) @EqualsAndHashCode.Include protected String prefix; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "name_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include private String name; @@ -78,7 +78,7 @@ public class ResourceDescriptor extends GeneratedAuditedObject { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "defaultUrlTemplate_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include private String defaultUrlTemplate; diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptorPage.java b/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptorPage.java index d5f1e4a91..629810836 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptorPage.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/ResourceDescriptorPage.java @@ -43,25 +43,25 @@ public class ResourceDescriptorPage extends GeneratedAuditedObject { @IndexedEmbedded(includeDepth = 1) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.ResourceDescriptorPageView.class }) + @JsonView({ View.ResourceDescriptorPageView.class, View.ForPublic.class }) private ResourceDescriptor resourceDescriptor; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "name_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include private String name; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "urlTemplate_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include private String urlTemplate; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "pageDescription_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include private String pageDescription; } diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/SingleReferenceAssociation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/SingleReferenceAssociation.java index 4968f36c1..7be52e9a8 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/SingleReferenceAssociation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/SingleReferenceAssociation.java @@ -37,7 +37,7 @@ public class SingleReferenceAssociation extends Association { @IndexedEmbedded(includeDepth = 2) @IndexingDependency(reindexOnUpdate = ReindexOnUpdate.SHALLOW) @ManyToOne - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Reference singleReference; } diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/VocabularyTerm.java b/src/main/java/org/alliancegenome/curation_api/model/entities/VocabularyTerm.java index 0a307d082..0c06d2e47 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/VocabularyTerm.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/VocabularyTerm.java @@ -51,12 +51,12 @@ public class VocabularyTerm extends GeneratedAuditedObject { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "name_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private String name; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "abbreviation_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private String abbreviation; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/base/AuditedObject.java b/src/main/java/org/alliancegenome/curation_api/model/entities/base/AuditedObject.java index 37576f7e3..e7472898d 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/base/AuditedObject.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/base/AuditedObject.java @@ -64,13 +64,13 @@ public class AuditedObject extends BaseEntity { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer", valueBridge = @ValueBridgeRef(type = BooleanValueBridge.class)) @KeywordField(name = "internal_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, valueBridge = @ValueBridgeRef(type = BooleanValueBridge.class)) - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @Column(columnDefinition = "boolean default false", nullable = false) private Boolean internal = false; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer", valueBridge = @ValueBridgeRef(type = BooleanValueBridge.class)) @KeywordField(name = "obsolete_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, valueBridge = @ValueBridgeRef(type = BooleanValueBridge.class)) - @JsonView(View.FieldsOnly.class) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @Column(columnDefinition = "boolean default false", nullable = false) private Boolean obsolete = false; diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/base/CurieAuditedObject.java b/src/main/java/org/alliancegenome/curation_api/model/entities/base/CurieAuditedObject.java index 9a392bac8..bc93cda68 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/base/CurieAuditedObject.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/base/CurieAuditedObject.java @@ -27,7 +27,7 @@ public class CurieAuditedObject extends AuditedObject { @DocumentId @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "curie_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include @ToString.Include protected String curie; diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/ECOTerm.java b/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/ECOTerm.java index b8ff67189..aa255dcc8 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/ECOTerm.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/ECOTerm.java @@ -29,6 +29,6 @@ public class ECOTerm extends OntologyTerm { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "abbreviation_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView(View.FieldsOnly.class) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private String abbreviation; } diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/OntologyTerm.java b/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/OntologyTerm.java index 2a6c43485..a398c6988 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/OntologyTerm.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/ontology/OntologyTerm.java @@ -52,7 +52,7 @@ public class OntologyTerm extends CurieAuditedObject { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "name_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView(View.FieldsOnly.class) + @JsonView({View.FieldsOnly.class, View.ForPublic.class}) @Column(length = 2000) protected String name; diff --git a/src/main/java/org/alliancegenome/curation_api/model/entities/slotAnnotations/NameSlotAnnotation.java b/src/main/java/org/alliancegenome/curation_api/model/entities/slotAnnotations/NameSlotAnnotation.java index 31498d242..e486fa132 100644 --- a/src/main/java/org/alliancegenome/curation_api/model/entities/slotAnnotations/NameSlotAnnotation.java +++ b/src/main/java/org/alliancegenome/curation_api/model/entities/slotAnnotations/NameSlotAnnotation.java @@ -49,13 +49,13 @@ public abstract class NameSlotAnnotation extends SlotAnnotation { @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "formatText_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include protected String formatText; @FullTextField(analyzer = "autocompleteAnalyzer", searchAnalyzer = "autocompleteSearchAnalyzer") @KeywordField(name = "displayText_keyword", aggregable = Aggregable.YES, sortable = Sortable.YES, searchable = Searchable.YES, normalizer = "sortNormalizer") - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) @EqualsAndHashCode.Include protected String displayText; diff --git a/src/main/java/org/alliancegenome/curation_api/response/SearchResponse.java b/src/main/java/org/alliancegenome/curation_api/response/SearchResponse.java index e376a6d0e..a902a6f86 100644 --- a/src/main/java/org/alliancegenome/curation_api/response/SearchResponse.java +++ b/src/main/java/org/alliancegenome/curation_api/response/SearchResponse.java @@ -16,22 +16,22 @@ @Schema(name = "SearchResponse", description = "POJO that represents the SearchResponse") public class SearchResponse extends APIResponse { - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private List results = new ArrayList(); - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Long totalResults; - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Integer returnedRecords; - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private Map> aggregations; - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private String debug; - @JsonView({ View.FieldsOnly.class }) + @JsonView({ View.FieldsOnly.class, View.ForPublic.class }) private String esQuery; @JsonView({ View.FieldsOnly.class }) diff --git a/src/main/java/org/alliancegenome/curation_api/view/View.java b/src/main/java/org/alliancegenome/curation_api/view/View.java index 5cfd2b7c7..a9374d871 100644 --- a/src/main/java/org/alliancegenome/curation_api/view/View.java +++ b/src/main/java/org/alliancegenome/curation_api/view/View.java @@ -2,12 +2,14 @@ public class View { + // Curation Views + public static class FieldsOnly { } public static class FieldsAndLists extends FieldsOnly { } - + public static class ConditionRelationView extends FieldsOnly { } @@ -43,7 +45,7 @@ public static class ReportHistory extends FieldsOnly { public static class ConstructView extends FieldsOnly { } - + public static class DiseaseAnnotation extends FieldsOnly { } @@ -91,5 +93,12 @@ public static class PersonSettingView { public static class PrivateOnlyView { } - + + // Public only views + + public static class ForPublic { + } + + public static class DiseaseAnnotationForPublic extends ForPublic { + } } diff --git a/src/test/java/org/alliancegenome/curation_api/bulkupload/fms/OrthologyBulkUploadFmsITCase.java b/src/test/java/org/alliancegenome/curation_api/bulkupload/fms/OrthologyBulkUploadFmsITCase.java index 47be2559c..7ca0c4266 100644 --- a/src/test/java/org/alliancegenome/curation_api/bulkupload/fms/OrthologyBulkUploadFmsITCase.java +++ b/src/test/java/org/alliancegenome/curation_api/bulkupload/fms/OrthologyBulkUploadFmsITCase.java @@ -1,8 +1,8 @@ package org.alliancegenome.curation_api.bulkupload.fms; +import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.Matchers.not; import org.alliancegenome.curation_api.base.BaseITCase;