package com.wcs.newsletter.util; /* * #%L * Webstar Newsletter * %% * Copyright (C) 2013 Webstar Csoport Kft. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import com.wcs.misc.AbstractHasId; import com.wcs.misc.HasId; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.component.UIForm; import javax.faces.component.UIInput; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.context.PartialViewContext; import javax.faces.convert.Converter; import javax.faces.model.SelectItem; import javax.faces.validator.ValidatorException; public class JsfUtil { public static void resetForm(String formId) { resetValueTree((UIForm) FacesContext.getCurrentInstance().getViewRoot().findComponent(formId)); } public static void resetForm(final UIForm form) { resetValueTree(form); } private static void resetValueTree(final UIComponent component) { if (component == null) { return; //hiba elnyelése } if (component instanceof UIInput) { UIInput input = (UIInput) component; input.resetValue(); } else { for (UIComponent child : component.getChildren()) { resetValueTree(child); } } } public static Object findInputComponentValue(UIComponent component, String componentId) { UIForm form = findParentForm(component); if (form == null) { throw new ValidatorException(new FacesMessage("Couldn't find parent form for field: " + component.getClientId())); } UIComponent otherComponent = form.findComponent(componentId); if (otherComponent == null) { throw new ValidatorException(new FacesMessage(String.format("Field '%s' not found in '%s' form.", componentId, form))); } if (!(otherComponent instanceof UIInput)) { throw new IllegalArgumentException(String.format("%s is not an input field", componentId)); } return ((UIInput) otherComponent).getSubmittedValue(); } public static UIForm findParentForm(UIComponent component) { UIComponent c = component; while (c != null) { c = c.getParent(); if (c instanceof UIForm) { return (UIForm) c; } } return null; } public static void addPartialViewRender(String id) { PartialViewContext pcontext = FacesContext.getCurrentInstance().getPartialViewContext(); if (pcontext != null) { pcontext.getRenderIds().add(id); } } public static Object getManagedBean(String name) { return getManagedBean(name, FacesContext.getCurrentInstance()); } public static Object getManagedBean(String name, FacesContext context) { return context.getApplication().getELResolver(). getValue(context.getELContext(), null, name); } public static SelectItem[] getSelectItems(List<?> entities, boolean selectOne) { int size = selectOne ? entities.size() + 1 : entities.size(); SelectItem[] items = new SelectItem[size]; int i = 0; if (selectOne) { items[0] = new SelectItem("", "---"); i++; } for (Object x : entities) { items[i++] = new SelectItem(x, x.toString()); } return items; } public static void addFatalMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_FATAL, msg, msg); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addFatalMessage(String summary, String detail) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_FATAL, summary, detail); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addWarningMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_WARN, msg, msg); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addWarningMessage(String summary, String detail) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_WARN, summary, detail); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addErrorMessage(Exception ex, String defaultMsg) { String msg = ex.getLocalizedMessage(); if (msg != null && msg.length() > 0) { addErrorMessage(msg); } else { addErrorMessage(defaultMsg); } } public static void addErrorMessages(List<String> messages) { for (String message : messages) { addErrorMessage(message); } } public static void addErrorMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addErrorMessage(String summary, String detail) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addSuccessMessage(String msg) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static void addSuccessMessage(String summary, String detail) { FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail); FacesContext.getCurrentInstance().addMessage(null, facesMsg); } public static String getRequestParameter(String key) { return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key); } public static Object getObjectFromRequestParameter(String requestParameterName, Converter converter, UIComponent component) { String theId = JsfUtil.getRequestParameter(requestParameterName); return converter.getAsObject(FacesContext.getCurrentInstance(), component, theId); } public static <T extends AbstractHasId<Long>> Long getNegativeMinId(List<T> hasIdList) { Long minId = -1L; for (AbstractHasId<Long> actual : hasIdList) { if (actual.getId() < minId) { minId = actual.getId(); } } return minId; } public static <T extends AbstractHasId<Long>> Long getNextNegativId(List<T> hasIdList) { Long minId = JsfUtil.getNegativeMinId(hasIdList); return --minId; } public static <ID extends Number, T extends HasId<ID>> ID getMinNegativeId(List<T> hasIdList) { ID minId = null; long minLong = -1; for (HasId<ID> actual : hasIdList) { ID actualId = actual.getId(); if (actualId.longValue() < minLong) { minId = actualId; minLong = actualId.longValue(); } } return minId; } public static String getApplicationUrl(ExternalContext externalContext) { StringBuilder path = new StringBuilder(); path.append(externalContext.getRequestScheme()); path.append("://"); path.append(externalContext.getRequestServerName()); path.append(":"); path.append(externalContext.getRequestServerPort()); path.append(externalContext.getRequestContextPath()); return path.toString(); } public static void addErrorMessageByKey(String key) { String msg = AppMessageBundle.getString(key); addErrorMessage(msg); } public static void addSuccessMessageByKey(String key) { String msg = AppMessageBundle.getString(key); addSuccessMessage(msg); } public static void addWarningMessageByKey(String key) { String msg = AppMessageBundle.getString(key); addWarningMessage(msg); } }