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;
}
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<>();
}
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;
}
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);
}
}
}
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;
}
Aggregations