package jpaoletti.jpm.struts.actions; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; import jpaoletti.jpm.converter.ConverterException; import jpaoletti.jpm.core.Entity; import jpaoletti.jpm.core.PMException; import jpaoletti.jpm.struts.CollectionHelper; import jpaoletti.jpm.struts.PMStrutsContext; import jpaoletti.jpm.util.KeyValue; /** * Needs the following parameters. <br/> * * <ul> <li>entity: Entity id of the wanted list</li> <li>display: list of * properties separated by blanks for displaying</li> <li>filter: asuming that * display is a string, the filter looks for the item list with display "like" * the value</li> <li>filter_class: filter class implementing * jpaoletti.jpm.core.ListFilter</li> <li></li> </ul> * * @author jpaoletti */ public class GetListAction extends ActionSupport { @Override protected void doExecute(PMStrutsContext ctx) throws PMException { final CollectionHelper helper = new CollectionHelper((String) ctx.getParameter("display")); final Gson gson = new Gson(); try { final String _entity = (String) ctx.getParameter("entity"); final Entity entity = ctx.getPresentationManager().getEntity(_entity); if (entity == null) { throw new ConverterException("Cannot find entity " + entity); } final String originalEntity = (String) ctx.getParameter("originalEntity", ""); final String originalOp = (String) ctx.getParameter("originalOperation", ""); final String relatedFieldName = (String) ctx.getParameter("relatedFieldName", ""); final String _relatedFieldValue = (String) ctx.getParameter("relatedFieldValue", ""); ctx.setFieldValue(_relatedFieldValue); Object object = null; if (!"".equals(originalEntity) && !"".equals(originalOp) && !"".equals(relatedFieldName) && !"".equals(_relatedFieldValue)) { object = ctx.getPresentationManager().getEntity(originalEntity).getFieldById(relatedFieldName).getConverter(originalOp).build(ctx); } if (object == null && "true".equals(ctx.getParameter("relatedRequired", "false"))) { jSONSuccess(ctx, gson.toJson(new ArrayList<KeyValue>())); } else { final List<KeyValue> finalist = helper.getFullList(ctx, entity, (String) ctx.getParameter("filter_class"), (String) ctx.getParameter("filter"), (String) ctx.getParameter("sortField"), (String) ctx.getParameter("sortDir"), relatedFieldName, object); jSONSuccess(ctx, finalist); } } catch (PMException ex) { throw ex; } catch (Exception ex) { ctx.getPresentationManager().error(ex); jSONSuccess(ctx, ex.getMessage()); } } }