Search in sources :

Example 31 with UID

use of org.hisp.dhis.dxf2.events.trackedentity.store.query.EventQuery.COLUMNS.UID in project dhis2-core by dhis2.

the class AbstractTrackedEntityInstanceService method deleteTrackedEntityInstance.

private ImportSummary deleteTrackedEntityInstance(String uid, TrackedEntityInstance dtoEntityInstance, ImportOptions importOptions) {
    ImportSummary importSummary = new ImportSummary();
    importOptions = updateImportOptions(importOptions);
    boolean teiExists = teiService.trackedEntityInstanceExists(uid);
    if (teiExists) {
        org.hisp.dhis.trackedentity.TrackedEntityInstance daoEntityInstance = teiService.getTrackedEntityInstance(uid);
        if (dtoEntityInstance != null) {
            importSummary.setReference(uid);
            importSummary.setEnrollments(handleEnrollments(dtoEntityInstance, daoEntityInstance, importOptions));
        }
        if (importOptions.getUser() != null) {
            isAllowedToDelete(importOptions.getUser(), daoEntityInstance, importSummary);
            if (importSummary.hasConflicts()) {
                importSummary.setStatus(ImportStatus.ERROR);
                importSummary.setReference(daoEntityInstance.getUid());
                importSummary.incrementIgnored();
                return importSummary;
            }
        }
        teiService.deleteTrackedEntityInstance(daoEntityInstance);
        importSummary.setStatus(ImportStatus.SUCCESS);
        importSummary.setDescription("Deletion of tracked entity instance " + uid + " was successful");
        return importSummary.incrementDeleted();
    } else {
        importSummary.setStatus(ImportStatus.SUCCESS);
        importSummary.setDescription("Tracked entity instance " + uid + " cannot be deleted as it is not present in the system");
        return importSummary.incrementIgnored();
    }
}
Also used : ImportSummary(org.hisp.dhis.dxf2.importsummary.ImportSummary)

Example 32 with UID

use of org.hisp.dhis.dxf2.events.trackedentity.store.query.EventQuery.COLUMNS.UID in project dhis2-core by dhis2.

the class ProgramStageInstanceMapper method mapForInsert.

public ProgramStageInstance mapForInsert(Event event) {
    ImportOptions importOptions = workContext.getImportOptions();
    ProgramStageInstance psi = new ProgramStageInstance();
    if (importOptions.getIdSchemes().getProgramStageInstanceIdScheme().equals(CODE)) {
        psi.setCode(event.getEvent());
    } else if (importOptions.getIdSchemes().getProgramStageIdScheme().equals(UID)) {
        psi.setUid(event.getUid());
    }
    // Program Instance
    psi.setProgramInstance(this.workContext.getProgramInstanceMap().get(event.getUid()));
    // Program Stage
    psi.setProgramStage(this.workContext.getProgramStage(importOptions.getIdSchemes().getProgramStageIdScheme(), event.getProgramStage()));
    // Org Unit
    psi.setOrganisationUnit(this.workContext.getOrganisationUnitMap().get(event.getUid()));
    // Status
    psi.setStatus(fromInt(event.getStatus().getValue()));
    // Attribute Option Combo
    psi.setAttributeOptionCombo(this.workContext.getCategoryOptionComboMap().get(event.getUid()));
    // Geometry
    psi.setGeometry(event.getGeometry());
    // Notes
    psi.setComments(convertNotes(event, this.workContext));
    // Data Values
    psi.setEventDataValues(workContext.getEventDataValueMap().get(event.getUid()));
    Date dueDate = new Date();
    if (event.getDueDate() != null) {
        dueDate = parseDate(event.getDueDate());
    }
    psi.setDueDate(dueDate);
    setCompletedDate(event, psi);
    // Note that execution date can be null
    setExecutionDate(event, psi);
    if (psi.getProgramStage() != null && psi.getProgramStage().isEnableUserAssignment()) {
        psi.setAssignedUser(this.workContext.getAssignedUserMap().get(event.getUid()));
    }
    // CREATED AT CLIENT + UPDATED AT CLIENT
    psi.setCreatedAtClient(parseDate(event.getCreatedAtClient()));
    psi.setLastUpdatedAtClient(parseDate(event.getLastUpdatedAtClient()));
    psi.setStoredBy(event.getStoredBy());
    psi.setCompletedBy(event.getCompletedBy());
    psi.setCreatedByUserInfo(event.getCreatedByUserInfo());
    psi.setLastUpdatedByUserInfo(event.getLastUpdatedByUserInfo());
    return psi;
}
Also used : ImportOptions(org.hisp.dhis.dxf2.common.ImportOptions) ProgramStageInstance(org.hisp.dhis.program.ProgramStageInstance) Date(java.util.Date) DateUtils.parseDate(org.hisp.dhis.util.DateUtils.parseDate)

Example 33 with UID

use of org.hisp.dhis.dxf2.events.trackedentity.store.query.EventQuery.COLUMNS.UID in project dhis2-core by dhis2.

the class AbstractRelationshipService method deleteRelationship.

private ImportSummary deleteRelationship(String uid, ImportOptions importOptions) {
    ImportSummary importSummary = new ImportSummary();
    importOptions = updateImportOptions(importOptions);
    if (uid.isEmpty()) {
        importSummary.setStatus(ImportStatus.WARNING);
        importSummary.setDescription("Missing required property 'relationship'");
        return importSummary.incrementIgnored();
    }
    org.hisp.dhis.relationship.Relationship daoRelationship = relationshipService.getRelationship(uid);
    if (daoRelationship != null) {
        importSummary.setReference(uid);
        List<String> errors = trackerAccessManager.canWrite(importOptions.getUser(), daoRelationship);
        if (!errors.isEmpty()) {
            importSummary.setDescription(errors.toString());
            importSummary.setStatus(ImportStatus.ERROR);
            importSummary.getImportCount().incrementIgnored();
            return importSummary;
        }
        relationshipService.deleteRelationship(daoRelationship);
        importSummary.setStatus(ImportStatus.SUCCESS);
        importSummary.setDescription("Deletion of relationship " + uid + " was successful");
        return importSummary.incrementDeleted();
    } else {
        importSummary.setStatus(ImportStatus.WARNING);
        importSummary.setDescription("Relationship " + uid + " cannot be deleted as it is not present in the system");
        return importSummary.incrementIgnored();
    }
}
Also used : ImportSummary(org.hisp.dhis.dxf2.importsummary.ImportSummary)

Example 34 with UID

use of org.hisp.dhis.dxf2.events.trackedentity.store.query.EventQuery.COLUMNS.UID in project dhis2-core by dhis2.

the class AbstractRelationshipService method includeRelationshipItem.

private org.hisp.dhis.dxf2.events.trackedentity.RelationshipItem includeRelationshipItem(RelationshipItem dao, boolean uidOnly) {
    TrackedEntityInstanceParams teiParams = TrackedEntityInstanceParams.FALSE;
    org.hisp.dhis.dxf2.events.trackedentity.RelationshipItem relationshipItem = new org.hisp.dhis.dxf2.events.trackedentity.RelationshipItem();
    if (dao.getTrackedEntityInstance() != null) {
        org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance tei = new org.hisp.dhis.dxf2.events.trackedentity.TrackedEntityInstance();
        String uid = dao.getTrackedEntityInstance().getUid();
        if (uidOnly) {
            tei.clear();
            tei.setTrackedEntityInstance(uid);
        } else {
            tei = trackedEntityInstanceService.getTrackedEntityInstance(dao.getTrackedEntityInstance(), teiParams);
        }
        relationshipItem.setTrackedEntityInstance(tei);
    } else if (dao.getProgramInstance() != null) {
        Enrollment enrollment = new Enrollment();
        String uid = dao.getProgramInstance().getUid();
        if (uidOnly) {
            enrollment.clear();
            enrollment.setEnrollment(uid);
        } else {
            enrollment = enrollmentService.getEnrollment(dao.getProgramInstance(), teiParams);
        }
        relationshipItem.setEnrollment(enrollment);
    } else if (dao.getProgramStageInstance() != null) {
        Event event = new Event();
        String uid = dao.getProgramStageInstance().getUid();
        if (uidOnly) {
            event.clear();
            event.setEvent(uid);
        } else {
            event = eventService.getEvent(dao.getProgramStageInstance());
            event.setRelationships(null);
        }
        relationshipItem.setEvent(event);
    }
    return relationshipItem;
}
Also used : TrackedEntityInstance(org.hisp.dhis.trackedentity.TrackedEntityInstance) TrackedEntityInstanceParams(org.hisp.dhis.dxf2.events.TrackedEntityInstanceParams) Enrollment(org.hisp.dhis.dxf2.events.enrollment.Enrollment) Event(org.hisp.dhis.dxf2.events.event.Event) RelationshipItem(org.hisp.dhis.relationship.RelationshipItem)

Example 35 with UID

use of org.hisp.dhis.dxf2.events.trackedentity.store.query.EventQuery.COLUMNS.UID in project dhis2-core by dhis2.

the class DefaultCsvImportService method setOptionGroupsFromCsv.

/**
 * Option group format:
 * <p>
 * <ul>
 * <li>option group name</li>
 * <li>option group uid</li>
 * <li>option group code</li>
 * <li>option group short name</li>
 * <li>option set uid</li>
 * <li>option uid</li>
 * </ul>
 */
private void setOptionGroupsFromCsv(CsvReader reader, Metadata metadata) throws IOException {
    ListMap<String, Option> nameOptionMap = new ListMap<>();
    Map<String, OptionGroup> nameOptionGroupMap = new HashMap<>();
    Map<String, OptionSet> mapOptionSet = new HashMap<>();
    while (reader.readRecord()) {
        String[] values = reader.getValues();
        if (values != null && values.length > 0) {
            OptionGroup optionGroup = new OptionGroup();
            setIdentifiableObject(optionGroup, values);
            optionGroup.setShortName(getSafe(values, 3, 50));
            optionGroup.setAutoFields();
            if (optionGroup.getName() == null || optionGroup.getShortName() == null) {
                continue;
            }
            OptionSet optionSet = new OptionSet();
            optionSet.setUid(getSafe(values, 4, 11));
            if (optionSet.getUid() == null) {
                continue;
            }
            OptionSet persistedOptionSet = optionSet.getUid() != null ? mapOptionSet.computeIfAbsent(optionSet.getUid(), key -> optionService.getOptionSet(optionSet.getUid())) : mapOptionSet.computeIfAbsent(optionSet.getCode(), key -> optionService.getOptionSetByCode(optionSet.getCode()));
            if (persistedOptionSet == null) {
                continue;
            }
            optionGroup.setOptionSet(optionSet);
            Option option = new Option();
            option.setUid(getSafe(values, 5, 11));
            option.setCode(getSafe(values, 6, 50));
            if (option.getCode() == null && option.getUid() == null) {
                continue;
            }
            Optional<Option> isOptionExisted = persistedOptionSet.getOptions().stream().filter(persistedOption -> {
                if (option.getUid() != null) {
                    return persistedOption.getUid().equals(option.getUid());
                } else {
                    return persistedOption.getCode().equals(option.getCode());
                }
            }).findFirst();
            if (!isOptionExisted.isPresent()) {
                continue;
            }
            nameOptionGroupMap.put(optionGroup.getName(), optionGroup);
            nameOptionMap.putValue(optionGroup.getName(), isOptionExisted.get());
        }
    }
    // Read option groups from map and set in meta data
    for (Entry<String, OptionGroup> optionGroupEntry : nameOptionGroupMap.entrySet()) {
        optionGroupEntry.getValue().setMembers(new HashSet<>(nameOptionMap.get(optionGroupEntry.getKey())));
    }
    metadata.setOptionGroups(new ArrayList<>(nameOptionGroupMap.values()));
}
Also used : CategoryService(org.hisp.dhis.category.CategoryService) Importance(org.hisp.dhis.validation.Importance) CategoryOption(org.hisp.dhis.category.CategoryOption) ValueType(org.hisp.dhis.common.ValueType) StringUtils(org.apache.commons.lang3.StringUtils) OptionGroup(org.hisp.dhis.option.OptionGroup) MonthlyPeriodType(org.hisp.dhis.period.MonthlyPeriodType) Metadata(org.hisp.dhis.dxf2.metadata.Metadata) Map(java.util.Map) IndicatorGroup(org.hisp.dhis.indicator.IndicatorGroup) OrganisationUnitGroupService(org.hisp.dhis.organisationunit.OrganisationUnitGroupService) BaseIdentifiableObject(org.hisp.dhis.common.BaseIdentifiableObject) OrganisationUnitGroup(org.hisp.dhis.organisationunit.OrganisationUnitGroup) OptionGroupSet(org.hisp.dhis.option.OptionGroupSet) Category(org.hisp.dhis.category.Category) Operator(org.hisp.dhis.expression.Operator) DataElementGroupService(org.hisp.dhis.dataelement.DataElementGroupService) List(java.util.List) IndicatorGroupService(org.hisp.dhis.indicator.IndicatorGroupService) Entry(java.util.Map.Entry) CsvReader(com.csvreader.CsvReader) Optional(java.util.Optional) CategoryCombo(org.hisp.dhis.category.CategoryCombo) DataDimensionType(org.hisp.dhis.common.DataDimensionType) ListMap(org.hisp.dhis.common.ListMap) DateUtils.getMediumDate(org.hisp.dhis.util.DateUtils.getMediumDate) HashMap(java.util.HashMap) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) DataElement(org.hisp.dhis.dataelement.DataElement) MissingValueStrategy(org.hisp.dhis.expression.MissingValueStrategy) Service(org.springframework.stereotype.Service) Indicator(org.hisp.dhis.indicator.Indicator) CategoryOptionGroup(org.hisp.dhis.category.CategoryOptionGroup) OptionService(org.hisp.dhis.option.OptionService) CsvUtils(org.hisp.dhis.system.util.CsvUtils) DataElementDomain(org.hisp.dhis.dataelement.DataElementDomain) AggregationType(org.hisp.dhis.analytics.AggregationType) IOException(java.io.IOException) ValidationRule(org.hisp.dhis.validation.ValidationRule) OrganisationUnit(org.hisp.dhis.organisationunit.OrganisationUnit) Option(org.hisp.dhis.option.Option) FeatureType(org.hisp.dhis.organisationunit.FeatureType) OptionSet(org.hisp.dhis.option.OptionSet) StringUtils.isBlank(org.apache.commons.lang3.StringUtils.isBlank) PeriodType(org.hisp.dhis.period.PeriodType) CodeGenerator(org.hisp.dhis.common.CodeGenerator) Expression(org.hisp.dhis.expression.Expression) AllArgsConstructor(lombok.AllArgsConstructor) DataElementGroup(org.hisp.dhis.dataelement.DataElementGroup) InputStream(java.io.InputStream) HashMap(java.util.HashMap) ListMap(org.hisp.dhis.common.ListMap) OptionGroup(org.hisp.dhis.option.OptionGroup) CategoryOptionGroup(org.hisp.dhis.category.CategoryOptionGroup) CategoryOption(org.hisp.dhis.category.CategoryOption) Option(org.hisp.dhis.option.Option) OptionSet(org.hisp.dhis.option.OptionSet)

Aggregations

WebMessageException (org.hisp.dhis.dxf2.webmessage.WebMessageException)92 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)52 Event (org.hisp.dhis.dxf2.events.event.Event)39 OrganisationUnit (org.hisp.dhis.organisationunit.OrganisationUnit)37 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)34 ResponseStatus (org.springframework.web.bind.annotation.ResponseStatus)29 GetMapping (org.springframework.web.bind.annotation.GetMapping)28 User (org.hisp.dhis.user.User)23 Test (org.junit.jupiter.api.Test)21 HashMap (java.util.HashMap)19 ImportSummary (org.hisp.dhis.dxf2.importsummary.ImportSummary)19 UpdateAccessDeniedException (org.hisp.dhis.hibernate.exception.UpdateAccessDeniedException)19 InputStream (java.io.InputStream)18 PreAuthorize (org.springframework.security.access.prepost.PreAuthorize)18 ArrayList (java.util.ArrayList)17 MetadataImportParams (org.hisp.dhis.dxf2.metadata.MetadataImportParams)17 List (java.util.List)16 BaseIdentifiableObject (org.hisp.dhis.common.BaseIdentifiableObject)16 DataElement (org.hisp.dhis.dataelement.DataElement)15 ImportOptions (org.hisp.dhis.dxf2.common.ImportOptions)15