use of org.finos.symphony.toolkit.workflow.content.Addressable in project spring-bot by finos.
the class WorkResponseConverter method convert.
@Override
public Response convert(Object source, ChatHandlerExecutor creator) {
Addressable a = creator.action().getAddressable();
ChatResponseBody wr = creator.getOriginatingMapping().getHandlerMethod().getMethodAnnotation(ChatResponseBody.class);
WorkMode wm = WorkMode.VIEW;
if (wr != null) {
String template = wr.template();
WorkMode wmAnnotation = wr.workMode();
if (wmAnnotation == WorkMode.EDIT) {
wm = wmAnnotation;
}
if (StringUtils.hasText(template)) {
Map<String, Object> entityMap = WorkResponse.createEntityMap(source, null, null);
return new WorkResponse(a, entityMap, template, wm, source.getClass());
}
}
return new WorkResponse(a, source, wm, null, null);
}
use of org.finos.symphony.toolkit.workflow.content.Addressable in project spring-bot by finos.
the class ElementsHandler method accept.
@SuppressWarnings("unchecked")
@Override
public void accept(V4Event t) {
try {
V4SymphonyElementsAction action = t.getPayload().getSymphonyElementsAction();
if (action != null) {
Map<String, Object> formValues = (Map<String, Object>) action.getFormValues();
String verb = (String) formValues.get("action");
String formId = action.getFormId();
Object currentForm;
if (hasFormData(formValues)) {
currentForm = formConverter.convert(formValues, formId);
} else {
currentForm = null;
}
EntityJson data = retrieveData(action.getFormMessageId());
Addressable rr = ruBuilder.loadRoomById(action.getStream().getStreamId());
User u = ruBuilder.loadUserById(t.getInitiator().getUser().getUserId());
// if we're not in a room, address the user directly.
rr = rr == null ? u : rr;
Errors e = ErrorHelp.createErrorHolder();
if (validated(currentForm, e)) {
FormAction ea = new FormAction(rr, u, currentForm, verb, data);
try {
Action.CURRENT_ACTION.set(ea);
for (ActionConsumer c : elementsConsumers) {
try {
c.accept(ea);
} catch (Exception ee) {
LOG.error("Failed to handle consumer " + c, ee);
}
}
} finally {
Action.CURRENT_ACTION.set(Action.NULL_ACTION);
}
} else {
WorkResponse fr = new WorkResponse(rr, currentForm, WorkMode.EDIT, ButtonList.of(new Button(verb, Button.Type.ACTION, "Retry")), convertErrorsToMap(e));
rh.accept(fr);
}
}
} catch (Exception e) {
LOG.error("Couldn't handle event " + t, e);
}
}
use of org.finos.symphony.toolkit.workflow.content.Addressable in project spring-bot by finos.
the class SymphonyHistoryImpl method getEntityJsonFromHistory.
@Override
public List<EntityJson> getEntityJsonFromHistory(Tag t, Addressable address, Instant since) {
MessageSearchQuery msq = createMessageSearchQuery(null, address, since, t);
V4MessageList out = messageApi.v1MessageSearchPost(msq, null, null, 0, 50, null, null);
return out.stream().map(msg -> getEntityJson(msg)).filter(e -> e != null).collect(Collectors.toList());
}
use of org.finos.symphony.toolkit.workflow.content.Addressable in project spring-bot by finos.
the class SymphonyHistoryImpl method getEntityJsonFromHistory.
@Override
public <X> List<EntityJson> getEntityJsonFromHistory(Class<X> type, Addressable address, Instant since) {
MessageSearchQuery msq = createMessageSearchQuery(type, address, since, null);
V4MessageList out = messageApi.v1MessageSearchPost(msq, null, null, 0, 50, null, null);
return out.stream().map(msg -> getEntityJson(msg)).filter(e -> e != null).collect(Collectors.toList());
}
use of org.finos.symphony.toolkit.workflow.content.Addressable in project spring-bot by finos.
the class SymphonyConversationsImpl method getAllConversationsFiltered.
protected Set<Addressable> getAllConversationsFiltered(StreamFilter f) {
f.includeInactiveStreams(false);
Set<Addressable> out = new HashSet<>();
int skip = 0;
StreamList sl;
do {
sl = streamsApi.v1StreamsListPost(null, f, skip, 50);
sl.forEach(si -> {
Addressable a = convertToAddressable(si);
if (a != null) {
out.add(a);
}
});
skip += sl.size();
} while (sl.size() == 50);
return out;
}
Aggregations