Search in sources :

Example 21 with Events

use of org.hisp.dhis.dxf2.events.event.Events in project dhis2-core by dhis2.

the class EventDataValueAggregator method aggregateDataValues.

public Map<String, Set<EventDataValue>> aggregateDataValues(List<Event> events, Map<String, ProgramStageInstance> programStageInstanceMap, ImportOptions importOptions) {
    checkNotNull(programStageInstanceMap);
    checkNotNull(events);
    Map<String, Set<EventDataValue>> eventDataValueMap = new HashMap<>();
    for (Event event : events) {
        if (isNew(event.getUid(), programStageInstanceMap)) {
            eventDataValueMap.put(event.getUid(), getDataValues(event.getDataValues()));
        } else {
            eventDataValueMap.put(event.getUid(), aggregateForUpdate(event, programStageInstanceMap, importOptions));
        }
    }
    return eventDataValueMap;
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) HashMap(java.util.HashMap) Event(org.hisp.dhis.dxf2.events.event.Event)

Example 22 with Events

use of org.hisp.dhis.dxf2.events.event.Events in project dhis2-core by dhis2.

the class AssignedUserSupplier method get.

@Override
public Map<String, User> get(ImportOptions importOptions, List<Event> events) {
    // @formatter:off
    // Collect all the "assigned user" uids to pass as SQL query argument
    Set<String> userUids = events.stream().filter(e -> StringUtils.isNotEmpty(e.getAssignedUser())).map(Event::getAssignedUser).collect(Collectors.toSet());
    // Create a map user -> event
    Multimap<String, String> userToEvent = HashMultimap.create();
    for (Event event : events) {
        userToEvent.put(event.getAssignedUser(), event.getUid());
    }
    if (!userUids.isEmpty()) {
        final String sql = "select userinfoid, uid, code from userinfo " + "where uid in (:ids)";
        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("ids", userUids);
        return jdbcTemplate.query(sql, parameters, (ResultSet rs) -> {
            Map<String, User> results = new HashMap<>();
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getLong("userinfoid"));
                user.setUid(rs.getString("uid"));
                user.setCode(rs.getString("code"));
                for (String event : userToEvent.get(user.getUid())) {
                    results.put(event, user);
                }
            }
            return results;
        });
    }
    return new HashMap<>();
}
Also used : MapSqlParameterSource(org.springframework.jdbc.core.namedparam.MapSqlParameterSource) User(org.hisp.dhis.user.User) HashMap(java.util.HashMap) ResultSet(java.sql.ResultSet) Event(org.hisp.dhis.dxf2.events.event.Event)

Example 23 with Events

use of org.hisp.dhis.dxf2.events.event.Events in project dhis2-core by dhis2.

the class CategoryOptionComboSupplier method get.

@Override
public Map<String, CategoryOptionCombo> get(ImportOptions importOptions, List<Event> events) {
    if (events == null) {
        return emptyMap();
    }
    // TODO this should be optimized to execute less SQL queries
    IdScheme idScheme = importOptions.getIdSchemes().getCategoryOptionIdScheme();
    Map<String, CategoryOptionCombo> eventToCocMap = new HashMap<>();
    Map<String, Program> programMap = programSupplier.get(importOptions, events);
    Map<String, ProgramStageInstance> programStageInstanceMap = programStageInstanceSupplier.get(importOptions, events);
    for (Event event : events) {
        Program program = programMap.get(event.getProgram());
        ProgramStageInstance psi = programStageInstanceMap.get(event.getUid());
        // validation stage
        if (program == null) {
            return emptyMap();
        }
        CategoryOptionCombo categoryOptionCombo = getCategoryOptionCombo(program, event, psi, idScheme);
        if (categoryOptionCombo != null) {
            eventToCocMap.put(event.getUid(), categoryOptionCombo);
        }
    }
    return eventToCocMap;
}
Also used : Program(org.hisp.dhis.program.Program) HashMap(java.util.HashMap) Event(org.hisp.dhis.dxf2.events.event.Event) IdScheme(org.hisp.dhis.common.IdScheme) CategoryOptionCombo(org.hisp.dhis.category.CategoryOptionCombo) ProgramStageInstance(org.hisp.dhis.program.ProgramStageInstance)

Example 24 with Events

use of org.hisp.dhis.dxf2.events.event.Events in project dhis2-core by dhis2.

the class DefaultEventPersistenceService method update.

/**
 * Updates the list of given events using a single transaction.
 *
 * @param context a {@see WorkContext}
 * @param events a List of {@see Event}
 */
@Override
@Transactional
public void update(final WorkContext context, final List<Event> events) {
    if (isNotEmpty(events)) {
        ProgramStageInstanceMapper mapper = new ProgramStageInstanceMapper(context);
        List<ProgramStageInstance> programStageInstances = jdbcEventStore.updateEvents(events.stream().map(mapper::map).collect(Collectors.toList()));
        jdbcEventCommentStore.saveAllComments(programStageInstances);
        if (!context.getImportOptions().isSkipLastUpdated()) {
            updateTeis(context, events);
        }
    }
}
Also used : ProgramStageInstanceMapper(org.hisp.dhis.dxf2.events.importer.mapper.ProgramStageInstanceMapper) ProgramStageInstance(org.hisp.dhis.program.ProgramStageInstance) Transactional(org.springframework.transaction.annotation.Transactional)

Example 25 with Events

use of org.hisp.dhis.dxf2.events.event.Events in project dhis2-core by dhis2.

the class EventServiceFacade method parseJsonEvents.

private List<Event> parseJsonEvents(final String input) throws IOException {
    final List<Event> events = new ArrayList<>(0);
    final JsonNode root = jsonMapper.readTree(input);
    if (root.get("events") != null) {
        final Events multiple = fromJson(input, Events.class);
        events.addAll(multiple.getEvents());
    } else {
        final Event single = fromJson(input, Event.class);
        events.add(single);
    }
    return events;
}
Also used : Events(org.hisp.dhis.dxf2.events.event.Events) ArrayList(java.util.ArrayList) Event(org.hisp.dhis.dxf2.events.event.Event) JsonNode(com.fasterxml.jackson.databind.JsonNode)

Aggregations

Event (org.hisp.dhis.dxf2.events.event.Event)40 ImportSummaries (org.hisp.dhis.dxf2.importsummary.ImportSummaries)23 ArrayList (java.util.ArrayList)19 Events (org.hisp.dhis.dxf2.events.event.Events)19 List (java.util.List)18 Program (org.hisp.dhis.program.Program)17 EventSearchParams (org.hisp.dhis.dxf2.events.event.EventSearchParams)16 ImportSummary (org.hisp.dhis.dxf2.importsummary.ImportSummary)16 Date (java.util.Date)13 HashMap (java.util.HashMap)12 HashSet (java.util.HashSet)12 Set (java.util.Set)12 ImportOptions (org.hisp.dhis.dxf2.common.ImportOptions)12 Map (java.util.Map)11 ProgramStage (org.hisp.dhis.program.ProgramStage)11 ProgramStageInstance (org.hisp.dhis.program.ProgramStageInstance)11 User (org.hisp.dhis.user.User)10 Test (org.junit.jupiter.api.Test)10 InputStream (java.io.InputStream)9 OrganisationUnit (org.hisp.dhis.organisationunit.OrganisationUnit)9