All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
pl.fhframework.event.EventRegistry Maven / Gradle / Ivy
package pl.fhframework.event;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import pl.fhframework.SessionManager;
import pl.fhframework.UserSession;
import pl.fhframework.event.dto.*;
import pl.fhframework.core.model.dto.client.AbstractClientOutputData;
import pl.fhframework.model.forms.Component;
import pl.fhframework.model.forms.FormElement;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
public class EventRegistry {
private static final String FILE_DOWNLOAD_RESOURCE_URL = "fileDownload/resource/";
private final static String FILE_DOWNLOAD_FORM_ELEMENT_URL = "fileDownload/formElement";
private final static String FILE_DOWNLOAD_BINDING_URL = "fileDownload/binding";
private final static String FORM_ID_PARAM = "formId";
private final static String FORM_ELEMENT_ID_PARAM = "id";
private final static String BINDING_PARAM = "binding";
public void fireDataToClientEvent(AbstractClientOutputData clientData) {
getEvents().add(new DataToClientEvent(clientData));
}
public void fireDownloadEvent(Resource resource) {
String uuid = UUID.randomUUID().toString();
SessionManager.getUserSession().getDownloadFileIndexes().put(uuid, resource);
fireDownloadEvent(FILE_DOWNLOAD_RESOURCE_URL + uuid);
}
public void fireDownloadEvent(FormElement formElement) {
final Map map = Collections.unmodifiableMap(Stream.of(
new AbstractMap.SimpleEntry<>(FORM_ELEMENT_ID_PARAM, formElement.getId()),
new AbstractMap.SimpleEntry<>(FORM_ID_PARAM, formElement.getForm().getId()))
.collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue)));
fireDownloadEvent(buildUrl(FILE_DOWNLOAD_FORM_ELEMENT_URL, map));
}
public void fireDownloadEventByBinding(Component formElement, String binding) {
final Map map = Collections.unmodifiableMap(Stream.of(
new AbstractMap.SimpleEntry<>(BINDING_PARAM, binding),
new AbstractMap.SimpleEntry<>(FORM_ID_PARAM, formElement.getForm().getId()))
.collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue)));
fireDownloadEvent(buildUrl(FILE_DOWNLOAD_BINDING_URL, map));
}
public void fireNotificationEvent(NotificationEvent.Level level, String message) {
getEvents().add(new NotificationEvent(level, message));
}
public void fireRedirectEvent(String url, boolean newWindow) {
getEvents().add(new RedirectEvent(url, newWindow));
}
public void fireRedirectEvent(String uuid, String url, boolean newWindow) {
getEvents().add(new RedirectEvent(uuid, url, newWindow));
}
public void fireRedirectHomeEvent() {
UserSession session = SessionManager.getUserSession();
if (session != null) {
session.getUseCaseContainer().clear();
}
getEvents().add(new RedirectHomeEvent());
}
public void fireRedirectEvent(String uuid, String url, boolean newWindow, boolean closeable) {
getEvents().add(new RedirectEvent(uuid, url, newWindow, closeable));
}
public void fireCloseTabEvent(String uuid) {
getEvents().add(new CloseTabEvent(uuid));
}
public void fireShutdownEvent(boolean graceful) {
getEvents().add(new ShutdownEvent(graceful));
}
public void fireFrocedLogoutEvent(ForcedLogoutEvent.Reason reason) {
getEvents().add(new ForcedLogoutEvent(reason));
}
public void fireFocusEvent(String containerId, String formElementId) {
getEvents().add(new FocusEvent(containerId, formElementId));
}
public void fireMessageEvent(String title, String message) {
getEvents().add(new MessageEvent(title, message));
}
public void fireStylesheetChangeEvent(String styleName) {
getEvents().add(new StylesheetChangeEvent(styleName));
}
public void fireLanguageChangeEvent(String code) {
getEvents().add(new LanguageChangeEvent(code));
}
public void fireCustomActionEvent(String actionName) {
fireCustomActionEvent(actionName, null);
}
public void fireCustomActionEvent(String actionName, String data) {
getEvents().add(new CustomActionEvent(actionName, data));
}
private void fireDownloadEvent(String url) {
getEvents().add(new FileDownloadEvent(addURLPreffix(url)));
}
private String buildUrl(String url, Map params) {
final StringBuilder stringBuilder = new StringBuilder().append(url);
if (!params.isEmpty()) {
stringBuilder.append("?");
params.entrySet().forEach(entry -> {
stringBuilder.append(entry.getKey()).append("=").append(entry.getValue());
stringBuilder.append("&");
});
stringBuilder.setLength(stringBuilder.length() - 1);
}
return stringBuilder.toString();
}
private List getEvents() {
UserSession session = SessionManager.getUserSession();
if (session == null) {
return new ArrayList<>();
}
return SessionManager.getUserSession().getUseCaseRequestContext().getEvents();
}
private String addURLPreffix(String url) {
String prefix = SessionManager.getUserSession().getResourcesUrlPrefix();
return prefix != null ? prefix + url : url;
}
public void fireScrollEvent(String formElementId, Integer animateDuration) {
getEvents().add(new ScrollEvent(formElementId, true, animateDuration));
}
public void fireScrollEvent(String formElementId) {
getEvents().add(new ScrollEvent(formElementId, false, 0));
}
}