Search in sources :

Example 1 with BaseStudy

use of org.obiba.mica.study.domain.BaseStudy in project mica2 by obiba.

the class SpecificStudyReportGenerator method writeEachLine.

@Override
protected void writeEachLine(CSVWriter writer) {
    for (String studyId : studyIds) {
        BaseStudy publishedStudy = publishedStudyService.findById(studyId);
        if (publishedStudy != null) {
            List<String> publishedStudyDetails = generatePublishedStudyDetails(publishedStudy);
            Iterator<Population> populationIterator = publishedStudy.getPopulations().iterator();
            if (!populationIterator.hasNext()) {
                writer.writeNext(publishedStudyDetails.toArray(new String[publishedStudyDetails.size()]));
            }
            while (populationIterator.hasNext()) {
                List<String> buildingCompleteLine = new ArrayList<>(publishedStudyDetails);
                Population next = populationIterator.next();
                buildingCompleteLine.addAll(generatePopulationDetails(next));
                writer.writeNext(buildingCompleteLine.toArray(new String[buildingCompleteLine.size()]));
            }
        } else {
            BaseStudy draftStudy = studyService.findStudy(studyId);
            if (draftStudy != null) {
                List<String> lineOfDratStudy = generateDraftStudyDetails(draftStudy);
                writer.writeNext(lineOfDratStudy.toArray(new String[lineOfDratStudy.size()]));
            }
        }
    }
}
Also used : Population(org.obiba.mica.study.domain.Population) LocalizedString(org.obiba.mica.core.domain.LocalizedString) BaseStudy(org.obiba.mica.study.domain.BaseStudy)

Example 2 with BaseStudy

use of org.obiba.mica.study.domain.BaseStudy in project mica2 by obiba.

the class RQLCriteriaOpalConverter method parseField.

private RQLFieldReferences parseField(String path) {
    DatasetVariable.IdResolver resolver = DatasetVariable.IdResolver.from(path);
    if (resolver.getType() == null || DatasetVariable.Type.Collected.equals(resolver.getType())) {
        StudyDataset ds = collectedDatasetService.findById(resolver.getDatasetId());
        BaseStudyTable studyTable = ds.getStudyTable();
        BaseStudy study = studyService.findStudy(studyTable.getStudyId());
        return new RQLFieldReferences(path, ds, studyTable, study, getDatasetVariableInternal(Indexer.VARIABLE_TYPE, path));
    } else if (DatasetVariable.Type.Dataschema.equals(resolver.getType())) {
        HarmonizationDataset ds = harmonizedDatasetService.findById(resolver.getDatasetId());
        BaseStudy study = studyService.findStudy(ds.getHarmonizationTable().getStudyId());
        return new RQLFieldReferences(path, ds, ds.getBaseStudyTables(), study, getDatasetVariableInternal(Indexer.VARIABLE_TYPE, path));
    } else if (DatasetVariable.Type.Harmonized.equals(resolver.getType())) {
        HarmonizationDataset ds = harmonizedDatasetService.findById(resolver.getDatasetId());
        Optional<BaseStudyTable> studyTable = ds.getBaseStudyTables().stream().filter(st -> st.getStudyId().equals(resolver.getStudyId()) && st.getProject().equals(resolver.getProject()) && st.getTable().equals(resolver.getTable())).findFirst();
        if (!studyTable.isPresent())
            throw new IllegalArgumentException("Not a valid variable: " + path);
        BaseStudy study = studyService.findStudy(studyTable.get().getStudyId());
        return new RQLFieldReferences(path, ds, studyTable.get(), study, getDatasetVariableInternal(Indexer.HARMONIZED_VARIABLE_TYPE, path));
    }
    throw new IllegalArgumentException("Not a valid variable: " + path);
}
Also used : SimpleDateFormat(java.text.SimpleDateFormat) BaseStudyTable(org.obiba.mica.core.domain.BaseStudyTable) NoSuchVariableException(org.obiba.magma.NoSuchVariableException) Indexer(org.obiba.mica.spi.search.Indexer) ValueType(org.obiba.magma.ValueType) Scope(org.springframework.context.annotation.Scope) Inject(javax.inject.Inject) Strings(com.google.common.base.Strings) Lists(com.google.common.collect.Lists) StudyDataset(org.obiba.mica.dataset.domain.StudyDataset) Searcher(org.obiba.mica.spi.search.Searcher) HarmonizationStudy(org.obiba.mica.study.domain.HarmonizationStudy) TextType(org.obiba.magma.type.TextType) DatasetVariable(org.obiba.mica.dataset.domain.DatasetVariable) BaseStudy(org.obiba.mica.study.domain.BaseStudy) Collection(java.util.Collection) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) DateTime(org.joda.time.DateTime) VariableNature(org.obiba.magma.support.VariableNature) CollectedDatasetService(org.obiba.mica.dataset.service.CollectedDatasetService) StudyService(org.obiba.mica.study.service.StudyService) RQLParser(net.jazdw.rql.parser.RQLParser) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) HarmonizedDatasetService(org.obiba.mica.dataset.service.HarmonizedDatasetService) Component(org.springframework.stereotype.Component) List(java.util.List) ASTNode(net.jazdw.rql.parser.ASTNode) HarmonizationDataset(org.obiba.mica.dataset.domain.HarmonizationDataset) Optional(java.util.Optional) Joiner(com.google.common.base.Joiner) InputStream(java.io.InputStream) DatasetVariable(org.obiba.mica.dataset.domain.DatasetVariable) BaseStudyTable(org.obiba.mica.core.domain.BaseStudyTable) BaseStudy(org.obiba.mica.study.domain.BaseStudy) StudyDataset(org.obiba.mica.dataset.domain.StudyDataset) HarmonizationDataset(org.obiba.mica.dataset.domain.HarmonizationDataset)

Example 3 with BaseStudy

use of org.obiba.mica.study.domain.BaseStudy in project mica2 by obiba.

the class AbstractPublishedStudyResource method getStudy.

protected BaseStudy getStudy(String id, String locale) {
    BaseStudy study = publishedStudyService.findById(id);
    if (study == null)
        throw NoSuchStudyException.withId(id);
    translateModels(locale, study);
    log.debug("Study acronym {}", study.getAcronym());
    return study;
}
Also used : BaseStudy(org.obiba.mica.study.domain.BaseStudy)

Example 4 with BaseStudy

use of org.obiba.mica.study.domain.BaseStudy in project mica2 by obiba.

the class SubjectAclService method studyDeleted.

@Async
@Subscribe
public void studyDeleted(StudyDeletedEvent event) {
    BaseStudy persistable = event.getPersistable();
    removeInstance(persistable instanceof Study ? "/individual-study" : "/harmonization-study", persistable.getId());
}
Also used : BaseStudy(org.obiba.mica.study.domain.BaseStudy) Study(org.obiba.mica.study.domain.Study) BaseStudy(org.obiba.mica.study.domain.BaseStudy) Async(org.springframework.scheduling.annotation.Async) Subscribe(com.google.common.eventbus.Subscribe)

Example 5 with BaseStudy

use of org.obiba.mica.study.domain.BaseStudy in project mica2 by obiba.

the class NetworkDtos method asDtoBuilder.

@NotNull
Mica.NetworkDto.Builder asDtoBuilder(@NotNull Network network, boolean asDraft) {
    Mica.NetworkDto.Builder builder = Mica.NetworkDto.newBuilder();
    if (network.hasModel())
        builder.setContent(JSONUtils.toJSON(network.getModel()));
    // 
    builder.setId(network.getId()).addAllName(// 
    localizedStringDtos.asDto(network.getName())).addAllDescription(// 
    localizedStringDtos.asDto(network.getDescription())).addAllAcronym(localizedStringDtos.asDto(network.getAcronym()));
    Mica.PermissionsDto permissionsDto = permissionsDtos.asDto(network);
    NetworkState networkState = networkService.getEntityState(network.getId());
    builder.setPublished(networkState.isPublished());
    if (asDraft) {
        // 
        builder.setTimestamps(TimestampsDtos.asDto(network)).setPublished(// 
        networkState.isPublished()).setExtension(Mica.EntityStateDto.state, entityStateDtos.asDto(networkState).setPermissions(permissionsDto).build());
    }
    builder.setPermissions(permissionsDto);
    List<String> roles = micaConfigService.getConfig().getRoles();
    if (network.getMemberships() != null) {
        List<Mica.MembershipsDto> memberships = network.getMemberships().entrySet().stream().filter(e -> roles.contains(e.getKey())).map(e -> Mica.MembershipsDto.newBuilder().setRole(e.getKey()).addAllMembers(e.getValue().stream().map(m -> personDtos.asDto(m.getPerson(), asDraft)).collect(toList())).build()).collect(toList());
        builder.addAllMemberships(memberships);
    }
    List<BaseStudy> publishedStudies = publishedStudyService.findByIds(network.getStudyIds());
    Set<String> publishedStudyIds = publishedStudies.stream().map(AbstractGitPersistable::getId).collect(Collectors.toSet());
    Sets.SetView<String> unpublishedStudyIds = Sets.difference(ImmutableSet.copyOf(network.getStudyIds().stream().filter(sId -> asDraft && subjectAclService.isPermitted("/draft/individual-study", "VIEW", sId) || subjectAclService.isAccessible("/individual-study", sId)).collect(toList())), publishedStudyIds);
    if (!publishedStudies.isEmpty()) {
        Map<String, Long> datasetVariableCounts = asDraft ? null : datasetVariableService.getCountByStudyIds(Lists.newArrayList(publishedStudyIds));
        publishedStudies.forEach(study -> {
            builder.addStudyIds(study.getId());
            builder.addStudySummaries(studySummaryDtos.asDtoBuilder(study, true, datasetVariableCounts == null ? 0 : datasetVariableCounts.get(study.getId())));
        });
    }
    unpublishedStudyIds.forEach(studyId -> {
        try {
            builder.addStudySummaries(studySummaryDtos.asDto(studyId));
            builder.addStudyIds(studyId);
        } catch (NoSuchEntityException e) {
            log.warn("Study not found in network {}: {}", network.getId(), studyId);
        // ignore
        }
    });
    if (network.getLogo() != null) {
        builder.setLogo(attachmentDtos.asDto(network.getLogo()));
    }
    network.getNetworkIds().stream().filter(nId -> asDraft && subjectAclService.isPermitted("/draft/network", "VIEW", nId) || subjectAclService.isAccessible("/network", nId)).forEach(nId -> {
        try {
            builder.addNetworkSummaries(networkSummaryDtos.asDtoBuilder(nId, asDraft));
            builder.addNetworkIds(nId);
        } catch (NoSuchEntityException e) {
            log.warn("Network not found in network {}: {}", network.getId(), nId);
        // ignore
        }
    });
    return builder;
}
Also used : LoggerFactory(org.slf4j.LoggerFactory) Membership(org.obiba.mica.core.domain.Membership) HashMap(java.util.HashMap) AbstractGitPersistable(org.obiba.mica.core.domain.AbstractGitPersistable) Inject(javax.inject.Inject) Strings(com.google.common.base.Strings) Map(java.util.Map) JSONUtils(org.obiba.mica.JSONUtils) Network(org.obiba.mica.network.domain.Network) Lists(jersey.repackaged.com.google.common.collect.Lists) PublishedDatasetVariableService(org.obiba.mica.study.service.PublishedDatasetVariableService) ImmutableSet(com.google.common.collect.ImmutableSet) SubjectAclService(org.obiba.mica.security.service.SubjectAclService) Logger(org.slf4j.Logger) HarmonizationStudy(org.obiba.mica.study.domain.HarmonizationStudy) BaseStudy(org.obiba.mica.study.domain.BaseStudy) Set(java.util.Set) NotNull(javax.validation.constraints.NotNull) Collectors(java.util.stream.Collectors) Maps(com.google.common.collect.Maps) Sets(com.google.common.collect.Sets) NoSuchEntityException(org.obiba.mica.NoSuchEntityException) PublishedStudyService(org.obiba.mica.study.service.PublishedStudyService) List(java.util.List) Component(org.springframework.stereotype.Component) Collectors.toList(java.util.stream.Collectors.toList) Study(org.obiba.mica.study.domain.Study) MicaConfigService(org.obiba.mica.micaConfig.service.MicaConfigService) NetworkState(org.obiba.mica.network.domain.NetworkState) NetworkService(org.obiba.mica.network.service.NetworkService) NoSuchEntityException(org.obiba.mica.NoSuchEntityException) Sets(com.google.common.collect.Sets) NetworkState(org.obiba.mica.network.domain.NetworkState) BaseStudy(org.obiba.mica.study.domain.BaseStudy) NotNull(javax.validation.constraints.NotNull)

Aggregations

BaseStudy (org.obiba.mica.study.domain.BaseStudy)15 List (java.util.List)6 Collectors (java.util.stream.Collectors)6 Inject (javax.inject.Inject)6 Study (org.obiba.mica.study.domain.Study)5 Component (org.springframework.stereotype.Component)5 Strings (com.google.common.base.Strings)4 HarmonizationStudy (org.obiba.mica.study.domain.HarmonizationStudy)4 StudyService (org.obiba.mica.study.service.StudyService)4 Map (java.util.Map)3 Collectors.toList (java.util.stream.Collectors.toList)3 NotNull (javax.validation.constraints.NotNull)3 NoSuchEntityException (org.obiba.mica.NoSuchEntityException)3 DatasetVariable (org.obiba.mica.dataset.domain.DatasetVariable)3 MicaConfigService (org.obiba.mica.micaConfig.service.MicaConfigService)3 NoSuchStudyException (org.obiba.mica.study.NoSuchStudyException)3 Population (org.obiba.mica.study.domain.Population)3 PublishedStudyService (org.obiba.mica.study.service.PublishedStudyService)3 Logger (org.slf4j.Logger)3 LoggerFactory (org.slf4j.LoggerFactory)3