use of org.openforis.collect.event.RecordEvent in project collect by openforis.
the class RecordController method publishRecordPromotedEvents.
private void publishRecordPromotedEvents(CollectRecord record, String userName) {
if (!eventQueue.isEnabled()) {
return;
}
List<RecordEvent> events = new EventProducer().produceFor(record, userName);
eventQueue.publish(new RecordTransaction(record.getSurvey().getName(), record.getId(), record.getStep().toRecordStep(), events));
}
use of org.openforis.collect.event.RecordEvent in project collect by openforis.
the class CommandController method addOrUpdateAttributes.
@RequestMapping(value = "record/attributes", method = POST, consumes = APPLICATION_JSON_VALUE)
@Transactional
@ResponseBody
public List<RecordEventView> addOrUpdateAttributes(@RequestBody UpdateAttributesCommandWrapper commandsWrapper) {
List<RecordEvent> events = new ArrayList<RecordEvent>();
commandsWrapper.commands.forEach(c -> {
UpdateAttributeCommand command = c.toCommand();
events.addAll(commandDispatcher.submit(command));
});
return toView(events);
}
use of org.openforis.collect.event.RecordEvent in project collect by openforis.
the class CommandController method updateAttribute.
@RequestMapping(value = "record/attribute", method = PATCH, consumes = APPLICATION_JSON_VALUE)
@Transactional
@ResponseBody
public List<RecordEventView> updateAttribute(@RequestBody UpdateAttributeCommandWrapper commandWrapper) {
UpdateAttributeCommand command = commandWrapper.toCommand();
List<RecordEvent> events = commandDispatcher.submit(command);
return toView(events);
}
use of org.openforis.collect.event.RecordEvent in project collect by openforis.
the class CreateRecordHandler method execute.
@Override
public List<RecordEvent> execute(CreateRecordCommand command) {
String username = command.getUsername();
User user = userManager.loadByUserName(username);
CollectSurvey survey = surveyManager.getById(command.getSurveyId());
List<EntityDefinition> rootDefs = survey.getSchema().getRootEntityDefinitions();
EntityDefinition firstRootEntity = rootDefs.get(0);
String firstRootEntityName = firstRootEntity.getName();
CollectRecord record = recordManager.instantiateRecord(survey, firstRootEntityName, user, command.getFormVersion(), Step.ENTRY);
NodeChangeSet changeSet = recordManager.initializeRecord(record);
List<String> keyValues = command.getKeyValues();
Iterator<String> keyValuesIt = keyValues.iterator();
List<AttributeDefinition> keyAttributeDefinitions = firstRootEntity.getKeyAttributeDefinitions();
Iterator<AttributeDefinition> keyDefsIt = keyAttributeDefinitions.iterator();
while (keyDefsIt.hasNext()) {
AttributeDefinition keyDef = keyDefsIt.next();
String keyVal = keyValuesIt.next();
Value keyValue = keyDef.createValue(keyVal);
Attribute<?, Value> keyAttr = record.findNodeByPath(keyDef.getPath());
recordUpdater.updateAttribute(keyAttr, keyValue);
}
recordManager.save(record);
List<RecordEvent> events = new EventProducer().produceFor(changeSet, user.getUsername());
for (RecordEvent recordEvent : events) {
recordEvent.initializeRecordId(record.getId());
}
return events;
}
use of org.openforis.collect.event.RecordEvent in project collect by openforis.
the class DeleteNodeCommandHandler method execute.
@Override
public List<RecordEvent> execute(C command) {
CollectRecord record = findRecord(command);
Attribute<?, Value> attribute = findAttribute(command, record);
NodeChangeSet changeSet = recordUpdater.deleteNode(attribute);
recordManager.save(record);
List<RecordEvent> events = new EventProducer().produceFor(changeSet, command.getUsername());
return events;
}
Aggregations