Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/regionProgram #422

Merged
merged 4 commits into from
Oct 2, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public interface ProgramConverter {
@Mapping(target = "programPrimarySites", ignore = true)
@Mapping(target = "programInstitutions", ignore = true)
@Mapping(target = "programCountries", ignore = true)
@Mapping(target = "programRegions", ignore = true)
@Mapping(target = "active", constant = "true")
@Mapping(target = "legacyShortName", ignore = true)
@Mapping(target = "dataCenterId", ignore = true)
Expand All @@ -66,7 +65,6 @@ public interface ProgramConverter {
@Mapping(target = "programPrimarySites", ignore = true)
@Mapping(target = "programInstitutions", ignore = true)
@Mapping(target = "programCountries", ignore = true)
@Mapping(target = "programRegions", ignore = true)
void updateProgram(ProgramEntity updatingProgram, @MappingTarget ProgramEntity programToUpdate);

@Mapping(target = "clearField", ignore = true)
Expand All @@ -87,7 +85,6 @@ public interface ProgramConverter {
@Mapping(target = "primarySitesList", ignore = true)
@Mapping(target = "institutionsList", ignore = true)
@Mapping(target = "countriesList", ignore = true)
@Mapping(target = "regionsList", ignore = true)
@Mapping(target = "mergeDataCenterId", ignore = true)
Program programEntityToProgram(ProgramEntity entity);

Expand Down Expand Up @@ -148,8 +145,7 @@ default void updateProgramFromEntity(
.addAllCancerTypes(entity.listCancerTypes())
.addAllPrimarySites(entity.listPrimarySites())
.addAllInstitutions(entity.listInstitutions())
.addAllCountries(entity.listCountries())
.addAllRegions(entity.listRegions());
.addAllCountries(entity.listCountries());
}

@Mapping(target = "mergeFrom", ignore = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,4 @@ public class Program {
private List<String> primary_sites;
private List<String> institutions;
private List<String> countries;
private List<String> regions;
}
Original file line number Diff line number Diff line change
@@ -1,32 +1,30 @@
package org.icgc.argo.program_service.model.dto;

import java.util.Set;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ProgramDTO {

private String shortName;

private String description;

private String name;

private String website;

private Set<InstitutionDTO> programInstitutions;

private Set<CountryDTO> programCountries;

private Set<RegionDTO> processingRegions;

private Set<CancerDTO> programCancers;

private Set<PrimarySiteDTO> programPrimarySites;
}
package org.icgc.argo.program_service.model.dto;

import java.util.Set;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ProgramDTO {

private String shortName;

private String description;

private String name;

private String website;

private Set<InstitutionDTO> programInstitutions;

private Set<CountryDTO> programCountries;

private Set<CancerDTO> programCancers;

private Set<PrimarySiteDTO> programPrimarySites;
}
Original file line number Diff line number Diff line change
@@ -1,32 +1,30 @@
package org.icgc.argo.program_service.model.dto;

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ProgramsDTO {

private String shortName;

private String description;

private String name;

private String website;

private List<String> institutions;

private List<String> countries;

private List<String> regions;

private List<String> cancerTypes;

private List<String> primarySites;
}
package org.icgc.argo.program_service.model.dto;

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class ProgramsDTO {

private String shortName;

private String description;

private String name;

private String website;

private List<String> institutions;

private List<String> countries;

private List<String> cancerTypes;

private List<String> primarySites;
}
Original file line number Diff line number Diff line change
@@ -1,35 +1,33 @@
package org.icgc.argo.program_service.model.dto.builder;

import org.icgc.argo.program_service.model.dto.ProgramDTO;
import org.icgc.argo.program_service.model.entity.ProgramEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ProgramDTOBuilder {

@Autowired CancerDTOBuilder canerDtoBuilder;
@Autowired CountryDTOBuilder countryDTOBuilder;
@Autowired InstitutionDTOBuilder institutionDTOBuilder;
@Autowired PrimarySiteDTOBuilder primarySiteDTOBuilder;
@Autowired RegionDTOBuilder regionDTOBuilder;

public ProgramDTO convertEntityToDTO(ProgramEntity programEntity) {
ProgramDTO programDTO = new ProgramDTO();
programDTO.setName(programEntity.getName());
programDTO.setWebsite(programEntity.getWebsite());
programDTO.setShortName(programEntity.getShortName());
programDTO.setDescription(programEntity.getDescription());
programDTO.setProcessingRegions(
regionDTOBuilder.convertEntityToDTO(programEntity.getProgramRegions()));
programDTO.setProgramCancers(
canerDtoBuilder.convertEntityToDTO(programEntity.getProgramCancers()));
programDTO.setProgramCountries(
countryDTOBuilder.convertEntityToDTO(programEntity.getProgramCountries()));
programDTO.setProgramPrimarySites(
primarySiteDTOBuilder.convertEntityToDTO(programEntity.getProgramPrimarySites()));
programDTO.setProgramInstitutions(
institutionDTOBuilder.convertEntityToDTO(programEntity.getProgramInstitutions()));
return programDTO;
}
}
package org.icgc.argo.program_service.model.dto.builder;

import org.icgc.argo.program_service.model.dto.ProgramDTO;
import org.icgc.argo.program_service.model.entity.ProgramEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ProgramDTOBuilder {

@Autowired CancerDTOBuilder canerDtoBuilder;
@Autowired CountryDTOBuilder countryDTOBuilder;
@Autowired InstitutionDTOBuilder institutionDTOBuilder;
@Autowired PrimarySiteDTOBuilder primarySiteDTOBuilder;
@Autowired RegionDTOBuilder regionDTOBuilder;

public ProgramDTO convertEntityToDTO(ProgramEntity programEntity) {
ProgramDTO programDTO = new ProgramDTO();
programDTO.setName(programEntity.getName());
programDTO.setWebsite(programEntity.getWebsite());
programDTO.setShortName(programEntity.getShortName());
programDTO.setDescription(programEntity.getDescription());
programDTO.setProgramCancers(
canerDtoBuilder.convertEntityToDTO(programEntity.getProgramCancers()));
programDTO.setProgramCountries(
countryDTOBuilder.convertEntityToDTO(programEntity.getProgramCountries()));
programDTO.setProgramPrimarySites(
primarySiteDTOBuilder.convertEntityToDTO(programEntity.getProgramPrimarySites()));
programDTO.setProgramInstitutions(
institutionDTOBuilder.convertEntityToDTO(programEntity.getProgramInstitutions()));
return programDTO;
}
Azher2Ali marked this conversation as resolved.
Show resolved Hide resolved
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,16 +137,6 @@ public class ProgramEntity implements NameableEntity<UUID> {
orphanRemoval = true)
private Set<ProgramCountry> programCountries = new TreeSet<>();

@NotNull
@ToString.Exclude
@EqualsAndHashCode.Exclude
@OneToMany(
mappedBy = ProgramRegion.Fields.program,
cascade = CascadeType.ALL,
fetch = FetchType.LAZY,
orphanRemoval = true)
private Set<ProgramRegion> programRegions = new TreeSet<>();

@ToString.Exclude
@EqualsAndHashCode.Exclude
@OneToMany(
Expand Down Expand Up @@ -180,8 +170,4 @@ public List<String> listInstitutions() {
public List<String> listCountries() {
return mapToList(getProgramCountries(), c -> c.getCountry().getName());
}

public List<String> listRegions() {
return mapToList(getProgramRegions(), r -> r.getRegion().getName());
}
}
Original file line number Diff line number Diff line change
@@ -1,68 +1,64 @@
/*
* Copyright (c) 2020 The Ontario Institute for Cancer Research. All rights reserved
*
* This program and the accompanying materials are made available under the terms of the GNU Affero General Public License v3.0.
* You should have received a copy of the GNU Affero General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
*/

package org.icgc.argo.program_service.repositories.query;

import static javax.persistence.criteria.JoinType.LEFT;

import java.util.UUID;
import javax.persistence.criteria.Root;
import lombok.EqualsAndHashCode;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.icgc.argo.program_service.model.entity.ProgramEntity;
import org.icgc.argo.program_service.model.join.*;

@Setter
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class ProgramSpecificationBuilder extends AbstractSpecificationBuilder<ProgramEntity, UUID> {

private boolean fetchCancers;
private boolean fetchPrimarySites;
private boolean fetchInstitutions;
private boolean fetchCountries;
private boolean fetchRegions;

@Override
protected Root<ProgramEntity> setupFetchStrategy(Root<ProgramEntity> root) {
if (fetchCancers) {
root.fetch(ProgramEntity.Fields.programCancers, LEFT)
.fetch(ProgramCancer.Fields.cancer, LEFT);
}
if (fetchPrimarySites) {
root.fetch(ProgramEntity.Fields.programPrimarySites, LEFT)
.fetch(ProgramPrimarySite.Fields.primarySite, LEFT);
}
if (fetchInstitutions) {
root.fetch(ProgramEntity.Fields.programInstitutions, LEFT)
.fetch(ProgramInstitution.Fields.institution, LEFT);
}
if (fetchCountries) {
root.fetch(ProgramEntity.Fields.programCountries, LEFT)
.fetch(ProgramCountry.Fields.country, LEFT);
}
if (fetchRegions) {
root.fetch(ProgramEntity.Fields.programRegions, LEFT)
.fetch(ProgramRegion.Fields.region, LEFT);
}
return root;
}
}
/*
* Copyright (c) 2020 The Ontario Institute for Cancer Research. All rights reserved
*
* This program and the accompanying materials are made available under the terms of the GNU Affero General Public License v3.0.
* You should have received a copy of the GNU Affero General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
*/

package org.icgc.argo.program_service.repositories.query;

import static javax.persistence.criteria.JoinType.LEFT;

import java.util.UUID;
import javax.persistence.criteria.Root;
import lombok.EqualsAndHashCode;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.icgc.argo.program_service.model.entity.ProgramEntity;
import org.icgc.argo.program_service.model.join.*;

@Setter
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class ProgramSpecificationBuilder extends AbstractSpecificationBuilder<ProgramEntity, UUID> {

private boolean fetchCancers;
private boolean fetchPrimarySites;
private boolean fetchInstitutions;
private boolean fetchCountries;
private boolean fetchRegions;

@Override
protected Root<ProgramEntity> setupFetchStrategy(Root<ProgramEntity> root) {
if (fetchCancers) {
root.fetch(ProgramEntity.Fields.programCancers, LEFT)
.fetch(ProgramCancer.Fields.cancer, LEFT);
}
if (fetchPrimarySites) {
root.fetch(ProgramEntity.Fields.programPrimarySites, LEFT)
.fetch(ProgramPrimarySite.Fields.primarySite, LEFT);
}
if (fetchInstitutions) {
root.fetch(ProgramEntity.Fields.programInstitutions, LEFT)
.fetch(ProgramInstitution.Fields.institution, LEFT);
}
if (fetchCountries) {
root.fetch(ProgramEntity.Fields.programCountries, LEFT)
.fetch(ProgramCountry.Fields.country, LEFT);
}
return root;
}
}
Loading