package eulerlcs.jsf2sample.webapp.converter;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItem;
import javax.faces.component.UISelectItems;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.inject.Named;
import eulerlcs.jsf2sample.model.DataIdentifier;
/**
* pojo value converter
*/
@Named("EntityConverter")
@RequestScoped
public class EntityConverter implements Converter
{
/**
* {@inheritDoc}
*
* @param facesContext {@inheritDoc}
* @param uiComponent {@inheritDoc}
* @param paramString {@inheritDoc}
* @return {@inheritDoc}
*/
@Override
public Object getAsObject(FacesContext facesContext, UIComponent uiComponent, String paramString)
{
if (uiComponent.getChildren() == null || uiComponent.getChildren().size() == 0)
{
return null;
}
if (paramString == null)
{
return null;
}
for (UIComponent child : uiComponent.getChildren())
{
if (child instanceof UISelectItem)
{
if (!((UISelectItem)child).isNoSelectionOption()
&& paramString.equals(this.getAsString(facesContext, uiComponent, ((UISelectItem)child).getValue())))
{
return ((UISelectItem)child).getValue();
}
}
if (child instanceof UISelectItems)
{
List<?> list = (List<?>)((UISelectItems)child).getValue();
for (Object item : list)
{
if (paramString.equals(this.getAsString(facesContext, uiComponent, item)))
{
return item;
}
}
}
}
return null;
}
/**
* {@inheritDoc}
*
* @param facesContext {@inheritDoc}
* @param uiComponent {@inheritDoc}
* @param paramObject {@inheritDoc}
* @return {@inheritDoc}
*/
@SuppressWarnings("rawtypes")
@Override
public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object paramObject)
{
String result = "";
if (paramObject == null)
{
result = "";
}
else if (paramObject instanceof DataIdentifier)
{
result = ((DataIdentifier)paramObject).getId().toString();
}
return result;
}
}