package org.jblooming.persistence.objectEditor; import org.jblooming.PlatformRuntimeException; import org.jblooming.oql.QueryHelper; import org.jblooming.ontology.Identifiable; import org.jblooming.utilities.ReflectionUtilities; import org.jblooming.utilities.StringUtilities; import org.jblooming.waf.ActionController; import org.jblooming.waf.view.PageSeed; import org.jblooming.waf.view.PageState; import org.jblooming.waf.html.core.JspHelper; import org.jblooming.waf.html.state.Form; import org.jblooming.waf.html.button.ButtonSupport; import javax.servlet.jsp.PageContext; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Field; import java.util.LinkedHashMap; import java.util.Map; import java.util.List; import java.util.ArrayList; /** * @author Roberto Bicchierai rbicchierai@open-lab.com * Date: 12-apr-2005 : 11.02.00 */ public class ObjectEditor extends JspHelper { private Class mainObjectClass; public String title; public boolean idDrawn = true; // aggiunto per evitare, se voglio, che mi disegni l'id sull'editor /** * @deprecated use queryHelper */ public String query; public QueryHelper queryHelper; public String defaultOrderBy = null; public boolean readOnly = false; public boolean canAdd=true; public boolean canDelete=true; public boolean canEdit=true; public boolean convertToUpperCase = false; public Map<String, FieldFeature> displayFields = new LinkedHashMap(); public Map<String, FieldFeature> editFields = new LinkedHashMap(); public String mainHqlAlias; public static final String listUrl = "/commons/objectEditor/partObjectList.jsp"; public static final String editUrl = "/commons/objectEditor/partObjectEditor.jsp"; public ActionController objController; public Class customizedDeletePreview; public boolean isMultipart=false; public boolean hideListButton = false; public boolean windowCloseOnSubmit = false; public boolean buttonLeft = false; public boolean showDuplicateButton = false; // thanx to RENATO2 public List<ButtonSupport> additionalButtons = new ArrayList<ButtonSupport>(); public Form form; private ObjectEditor(String title) { super(); this.title = title; this.urlToInclude = listUrl; } public ObjectEditor(String title, Class claz, PageContext pageContext) { this(title); try { if (!(claz.newInstance() instanceof Identifiable)) { throw new PlatformRuntimeException("Identifiable required"); } this.mainObjectClass = claz; } catch (InstantiationException e) { throw new PlatformRuntimeException(e); } catch (IllegalAccessException e) { throw new PlatformRuntimeException(e); } PageState pageState = PageState.getCurrentPageState(); PageSeed v = pageState.thisPage((HttpServletRequest) pageContext.getRequest()); form = new Form(v); } public Class getMainObjectClass() { return mainObjectClass; } public void addDisplayField(String fieldName, String alias) { FieldFeature ff = new FieldFeature(fieldName, alias); displayFields.put(ff.propertyName, ff); } public void addEditField(String fieldName, String alias) { FieldFeature ff = new FieldFeature(fieldName, alias); editFields.put(ff.propertyName, ff); } public void addDisplayField(FieldFeature ff) { displayFields.put(ff.propertyName, ff); } public void addEditField(FieldFeature ff) { editFields.put(ff.propertyName, ff); } public void fillFieldFeatures(Identifiable i) { Map<String, Field> dif = ReflectionUtilities.getDeclaredInheritedFields(mainObjectClass); for (Field f : dif.values()) { FieldFeature ff = new FieldFeature(f.getName(), StringUtilities.deCamel(f.getName())); addDisplayField(ff); addEditField(ff); } } }