r992 - in trunk/wikitty-struts/src/main: java/org/nuiton/wikitty/struts java/org/nuiton/wikitty/struts/component java/org/nuiton/wikitty/struts/tag tld
Author: mfortun Date: 2011-06-29 10:52:25 +0200 (Wed, 29 Jun 2011) New Revision: 992 Url: http://nuiton.org/repositories/revision/wikitty/992 Log: * forgot tld in previous commit * basic class to wikitty edit action * organize package (component package only for class that inherit of component class) Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/ExtensionFieldStrutsBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/FieldSpecialisation.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/Option.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/WikittyFieldHandler.java Removed: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/ExtensionFieldStrutsBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FieldSpecialisation.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/Option.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldHandler.java Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FixedSelectBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldTagBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittySelectBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyTagBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/WikittyFieldTag.java trunk/wikitty-struts/src/main/tld/wikitty-struts.tld Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java 2011-06-29 08:52:25 UTC (rev 992) @@ -0,0 +1,38 @@ +package org.nuiton.wikitty.struts; + +import org.nuiton.wikitty.WikittyProxy; + +import com.opensymphony.xwork2.ActionSupport; + +public abstract class AbstractWikittyEditAction extends ActionSupport { + + /** + * + */ + private static final long serialVersionUID = 1959245739866183821L; + + + /* + rajouter les attributs par défaut id tout ça + et ensuite on rajoute les méthodes de parsage des arguments + et qui les rajoute dans les wikitty field tout ça. + sauf les file parce que les files compliqué. + + */ + + @Override + public String execute() throws Exception { + + WikittyProxy proxy = getProxy(); + + + + + return SUCCESS; + } + + + public abstract WikittyProxy getProxy(); + + +} Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/ExtensionFieldStrutsBean.java (from rev 991, trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/ExtensionFieldStrutsBean.java) =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/ExtensionFieldStrutsBean.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/ExtensionFieldStrutsBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -0,0 +1,61 @@ +package org.nuiton.wikitty.struts; + +import java.util.Collection; +import java.util.LinkedList; + + +public class ExtensionFieldStrutsBean { + + + protected String name; + protected String type; + protected Object value =""; + protected String label; + protected Collection<Option> listOption; + + public ExtensionFieldStrutsBean() { + listOption = new LinkedList<Option>(); + } + public Collection<Option> getListOption() { + return listOption; + } + public void setListOption(Collection<Option> listOption) { + this.listOption = listOption; + } + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public Object getValue() { + return value; + } + public void setValue(Object value) { + this.value = value; + } + + + public void addOption(String val, String desc){ + Option opt= new Option(); + opt.setDescription(desc); + opt.setValeur(val); + this.listOption.add(opt); + } + + + + +} Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/ExtensionFieldStrutsBean.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/FieldSpecialisation.java (from rev 979, trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FieldSpecialisation.java) =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/FieldSpecialisation.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/FieldSpecialisation.java 2011-06-29 08:52:25 UTC (rev 992) @@ -0,0 +1,70 @@ +package org.nuiton.wikitty.struts; + +public class FieldSpecialisation { + + protected String name; + protected String type; + protected String criteria; + protected String subtype; + protected String label; + protected String descfields; + protected String fixvalues; + + + public String getDescfields() { + return descfields; + } + + public void setDescfields(String descfields) { + this.descfields = descfields; + } + + public String getFixvalues() { + return fixvalues; + } + + public void setFixvalues(String fixvalues) { + this.fixvalues = fixvalues; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCriteria() { + return criteria; + } + + public void setCriteria(String criteria) { + this.criteria = criteria; + } + + public String getSubtype() { + return subtype; + } + + public void setSubtype(String subtype) { + this.subtype = subtype; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + +} Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/FieldSpecialisation.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/Option.java (from rev 986, trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/Option.java) =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/Option.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/Option.java 2011-06-29 08:52:25 UTC (rev 992) @@ -0,0 +1,30 @@ +package org.nuiton.wikitty.struts; + +public class Option { + + protected String valeur; + protected String description; + public String getValeur() { + return valeur; + } + public void setValeur(String valeur) { + this.valeur = valeur; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + + public Option() { + + } + public Option(String valeur, String description) { + this.valeur = valeur; + this.description = description; + } + + + +} \ No newline at end of file Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/Option.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/WikittyFieldHandler.java (from rev 991, trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldHandler.java) =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/WikittyFieldHandler.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/WikittyFieldHandler.java 2011-06-29 08:52:25 UTC (rev 992) @@ -0,0 +1,342 @@ +package org.nuiton.wikitty.struts; + +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang.StringEscapeUtils; +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.entities.FieldType; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyExtension; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; +import org.nuiton.wikitty.search.Search; + + +public class WikittyFieldHandler { + + protected Wikitty wikitty; + protected WikittyProxy proxy; + protected String include = ""; + protected String exclude = ""; + protected String order = ""; + + protected Boolean orderBefore; + + + protected Map<String, FieldSpecialisation> field; + protected Set<String> fieldAdded; + + public Set<String> getFieldAdded() { + return fieldAdded; + } + + public void setFieldAdded(Set<String> fieldAdded) { + this.fieldAdded = fieldAdded; + } + + public WikittyFieldHandler() { + field = new HashMap<String, FieldSpecialisation>(); + fieldAdded = new HashSet<String>(); + } + + public Wikitty getWikitty() { + return wikitty; + } + + public void setWikitty(Wikitty wikitty) { + this.wikitty = wikitty; + } + + public Boolean getOrderBefore() { + return orderBefore; + } + + public void setOrderBefore(Boolean orderBefore) { + this.orderBefore = orderBefore; + } + + public WikittyProxy getProxy() { + return proxy; + } + + public void setProxy(WikittyProxy proxy) { + this.proxy = proxy; + } + + public String getInclude() { + return include; + } + + public void setInclude(String include) { + this.include = include; + } + + public String getExclude() { + return exclude; + } + + public void setExclude(String exclude) { + this.exclude = exclude; + } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } + + public Map<String, FieldSpecialisation> getField() { + return field; + } + + public void setField(Map<String, FieldSpecialisation> field) { + this.field = field; + } + + public void specialiseField(FieldSpecialisation fieldSpe) { + field.put(fieldSpe.getName(), fieldSpe); + } + + public Collection<ExtensionFieldStrutsBean> getWikittyField() { + + Map<String, ExtensionFieldStrutsBean> mapField = new HashMap<String, ExtensionFieldStrutsBean>(); + + /* + * if no include defined, by default will select all wikitty field + * except ones which are exclude + * + * excluded fields are more important than included, if a field is + * included and excluded, it will not appear in the result + */ + + // delegate construction of map + Map<String, List<String>> excludeMap = constructIncludeExcludeMap(exclude); + Map<String, List<String>> includeMap = constructIncludeExcludeMap(include); + // if include is enable it change how to construct result + boolean includeEnable = includeMap.size() != 0; + + for (WikittyExtension ext : wikitty.getExtensions()) { + String extName = ext.getName(); + + /* + * if extension excluded or not include while include is enable jump + * to the next extension + */ + if ((excludeMap.containsKey(extName) && excludeMap.get(extName) + .contains("*")) + || (includeEnable && !includeMap.containsKey(extName))) { + continue; + + } + + for (String fieldName : ext.getFieldNames()) { + FieldType fieldType = wikitty.getExtension(extName) + .getFieldType(fieldName); + /* + * if field is excluded or field not included while include mode + * jump to the next field or if field allready added to the page + */ + if ((excludeMap.containsKey(extName) && excludeMap.get(extName) + .contains(fieldName)) + || (includeEnable && !includeMap.get(extName).contains( + fieldName)) || fieldAdded.contains(extName+"."+fieldName)) { + continue; + + } + + ExtensionFieldStrutsBean temp = new ExtensionFieldStrutsBean(); + + temp.setName(extName + "." + fieldName); + temp.setLabel(temp.getName()); + temp.setValue(""); + + + // set the field type. + switch (fieldType.getType()) { + case BINARY: + temp.setType("file"); + + break; + case BOOLEAN: + boolean valueBool = wikitty.getFieldAsBoolean( + ext.getName(), fieldName); + temp.setType("boolean"); + temp.setValue(valueBool); + + break; + default: + Object valueObject = wikitty.getFieldAsObject( + ext.getName(), fieldName); + String valueString = ""; + + if (valueObject != null) { + valueString = String.valueOf(valueObject); + } + + temp.setValue(valueString); + + valueString = StringEscapeUtils.escapeHtml(valueString); + if (valueString.contains("\n") + || "true" + .equals(fieldType.getTagValue("multiline"))) { + temp.setType("textarea"); + + } else { + temp.setType("textfield"); + + } + + } + mapField.put(temp.getName(), temp); + } + } + + /* + * specialize field. With name, label, type etc. + */ + for (Map.Entry<String, FieldSpecialisation> speEntry : field.entrySet()) { + ExtensionFieldStrutsBean fieldExtension = mapField.get(speEntry.getKey()); + FieldSpecialisation spe = speEntry.getValue(); + if (fieldExtension != null) { + + if (!"".equals(spe.getLabel())) { + fieldExtension.setLabel(spe.getLabel()); + } + if (!"".equals(spe.getType())) { + fieldExtension.setType(spe.getType()); + } + + // if fixed list of item is passed via fixvalues attribut + if ("fixed".equals(spe.getSubtype())) { + String[] valu = StringUtil.split(spe.getFixvalues(), ","); + for (String va : valu) { + fieldExtension.addOption(va, va); + } + + // if wikitty load all the options values + } else if ("wikitty".equals(spe.getSubtype())) { + PagedResult<Wikitty> wikitties = null; + + // check the criteria and request wikitty + if (!"".equals(spe.getCriteria())) { + + Criteria criteria = Search.query() + .keyword(spe.getCriteria()).criteria(); + wikitties = proxy.findAllByCriteria(criteria); + } + + String[] descriptor = StringUtil.split(spe.getDescfields(), + ","); + + if (wikitties != null) { + for (Wikitty wiki : wikitties) { + // by default value and description are the same + // wikitty id + String val = wiki.getId(); + + String desc = wiki.getId(); + + // if attribute descripteur fill with something + // extract from wikitty corresponding field value + if (descriptor.length != 0) { + desc = ""; + for (String descriptorIt : descriptor) { + String[] descTable = StringUtil.split( + descriptorIt, "."); + + desc += wiki.getFieldAsString(descTable[0], + descTable[1]); + + } + } + fieldExtension.addOption(val, desc); + } + + } + + } + + } + + } + + String[] fieldOrder = StringUtil.split(order, ","); + + /* + * if an order is define parse order and construct ordering result if + * all the field are not defined in the order juste add the rest at the + * end of the result list. + */ + if (fieldOrder.length != 0) { + + List<ExtensionFieldStrutsBean> orderedResult = new LinkedList<ExtensionFieldStrutsBean>(); + + for (String orderIt : fieldOrder) { + + if (mapField.containsKey(orderIt)) { + orderedResult.add(mapField.remove(orderIt)); + } + + } + orderedResult.addAll(mapField.values()); + return orderedResult; + } + + return mapField.values(); + } + + protected enum fieldTypeSpecialization { + wikitty, fixed; + } + + /** + * construct map for exclude or include template + * + * @param entry + * the attribut of the wikitty field tag exemple + * include="machin.*, truc.bob, truc.tt" + * @return a map with key the string before the dot and a list with the + * value after the dot example: [machin:[*], truc:[tt,bob]] + */ + protected Map<String, List<String>> constructIncludeExcludeMap(String entry) { + + String[] entryTab = StringUtil.split(entry, ","); + + Map<String, List<String>> result = new HashMap<String, List<String>>(); + + // prepare list of excluded field and extension + for (String excludeIt : entryTab) { + String[] extfield = StringUtil.split(excludeIt, "."); + if (extfield.length == 2) { + List<String> listFields = result.get(extfield[0]); + if (listFields == null) { + listFields = new LinkedList<String>(); + } + listFields.add(extfield[1]); + result.put(extfield[0], listFields); + + } else { + // TODO mfortun-2011-06-24 exception + } + + } + return result; + } + + public void addAddedField(String field) { + fieldAdded.add(field); + } + + public boolean isIncluded(String fieldname) { + return true; + } +} Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/WikittyFieldHandler.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/BooleanBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -6,6 +6,7 @@ import org.apache.struts2.components.ClosingUIBean; import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Deleted: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/ExtensionFieldStrutsBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/ExtensionFieldStrutsBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/ExtensionFieldStrutsBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -1,61 +0,0 @@ -package org.nuiton.wikitty.struts.component; - -import java.util.Collection; -import java.util.LinkedList; - - -public class ExtensionFieldStrutsBean { - - - protected String name; - protected String type; - protected Object value =""; - protected String label; - protected Collection<Option> listOption; - - public ExtensionFieldStrutsBean() { - listOption = new LinkedList<Option>(); - } - public Collection<Option> getListOption() { - return listOption; - } - public void setListOption(Collection<Option> listOption) { - this.listOption = listOption; - } - public String getLabel() { - return label; - } - public void setLabel(String label) { - this.label = label; - } - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - public Object getValue() { - return value; - } - public void setValue(Object value) { - this.value = value; - } - - - public void addOption(String val, String desc){ - Option opt= new Option(); - opt.setDescription(desc); - opt.setValeur(val); - this.listOption.add(opt); - } - - - - -} Deleted: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FieldSpecialisation.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FieldSpecialisation.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FieldSpecialisation.java 2011-06-29 08:52:25 UTC (rev 992) @@ -1,70 +0,0 @@ -package org.nuiton.wikitty.struts.component; - -public class FieldSpecialisation { - - protected String name; - protected String type; - protected String criteria; - protected String subtype; - protected String label; - protected String descfields; - protected String fixvalues; - - - public String getDescfields() { - return descfields; - } - - public void setDescfields(String descfields) { - this.descfields = descfields; - } - - public String getFixvalues() { - return fixvalues; - } - - public void setFixvalues(String fixvalues) { - this.fixvalues = fixvalues; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getCriteria() { - return criteria; - } - - public void setCriteria(String criteria) { - this.criteria = criteria; - } - - public String getSubtype() { - return subtype; - } - - public void setSubtype(String subtype) { - this.subtype = subtype; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - -} Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FixedSelectBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FixedSelectBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/FixedSelectBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -7,6 +7,8 @@ import org.apache.struts2.components.ClosingUIBean; import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.struts.Option; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/HiddenBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -6,6 +6,7 @@ import org.apache.struts2.components.ClosingUIBean; import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Deleted: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/Option.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/Option.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/Option.java 2011-06-29 08:52:25 UTC (rev 992) @@ -1,30 +0,0 @@ -package org.nuiton.wikitty.struts.component; - -public class Option { - - protected String valeur; - protected String description; - public String getValeur() { - return valeur; - } - public void setValeur(String valeur) { - this.valeur = valeur; - } - public String getDescription() { - return description; - } - public void setDescription(String description) { - this.description = description; - } - - public Option() { - - } - public Option(String valeur, String description) { - this.valeur = valeur; - this.description = description; - } - - - -} \ No newline at end of file Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextAreaBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -6,6 +6,7 @@ import org.apache.struts2.components.ClosingUIBean; import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/TextFieldBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -6,6 +6,7 @@ import org.apache.struts2.components.ClosingUIBean; import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Deleted: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldHandler.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldHandler.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldHandler.java 2011-06-29 08:52:25 UTC (rev 992) @@ -1,342 +0,0 @@ -package org.nuiton.wikitty.struts.component; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.commons.lang.StringEscapeUtils; -import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.entities.FieldType; -import org.nuiton.wikitty.entities.Wikitty; -import org.nuiton.wikitty.entities.WikittyExtension; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.search.PagedResult; -import org.nuiton.wikitty.search.Search; - - -public class WikittyFieldHandler { - - protected Wikitty wikitty; - protected WikittyProxy proxy; - protected String include = ""; - protected String exclude = ""; - protected String order = ""; - - protected Boolean orderBefore; - - - protected Map<String, FieldSpecialisation> field; - protected Set<String> fieldAdded; - - public Set<String> getFieldAdded() { - return fieldAdded; - } - - public void setFieldAdded(Set<String> fieldAdded) { - this.fieldAdded = fieldAdded; - } - - public WikittyFieldHandler() { - field = new HashMap<String, FieldSpecialisation>(); - fieldAdded = new HashSet<String>(); - } - - public Wikitty getWikitty() { - return wikitty; - } - - public void setWikitty(Wikitty wikitty) { - this.wikitty = wikitty; - } - - public Boolean getOrderBefore() { - return orderBefore; - } - - public void setOrderBefore(Boolean orderBefore) { - this.orderBefore = orderBefore; - } - - public WikittyProxy getProxy() { - return proxy; - } - - public void setProxy(WikittyProxy proxy) { - this.proxy = proxy; - } - - public String getInclude() { - return include; - } - - public void setInclude(String include) { - this.include = include; - } - - public String getExclude() { - return exclude; - } - - public void setExclude(String exclude) { - this.exclude = exclude; - } - - public String getOrder() { - return order; - } - - public void setOrder(String order) { - this.order = order; - } - - public Map<String, FieldSpecialisation> getField() { - return field; - } - - public void setField(Map<String, FieldSpecialisation> field) { - this.field = field; - } - - public void specialiseField(FieldSpecialisation fieldSpe) { - field.put(fieldSpe.getName(), fieldSpe); - } - - public Collection<ExtensionFieldStrutsBean> getWikittyField() { - - Map<String, ExtensionFieldStrutsBean> mapField = new HashMap<String, ExtensionFieldStrutsBean>(); - - /* - * if no include defined, by default will select all wikitty field - * except ones which are exclude - * - * excluded fields are more important than included, if a field is - * included and excluded, it will not appear in the result - */ - - // delegate construction of map - Map<String, List<String>> excludeMap = constructIncludeExcludeMap(exclude); - Map<String, List<String>> includeMap = constructIncludeExcludeMap(include); - // if include is enable it change how to construct result - boolean includeEnable = includeMap.size() != 0; - - for (WikittyExtension ext : wikitty.getExtensions()) { - String extName = ext.getName(); - - /* - * if extension excluded or not include while include is enable jump - * to the next extension - */ - if ((excludeMap.containsKey(extName) && excludeMap.get(extName) - .contains("*")) - || (includeEnable && !includeMap.containsKey(extName))) { - continue; - - } - - for (String fieldName : ext.getFieldNames()) { - FieldType fieldType = wikitty.getExtension(extName) - .getFieldType(fieldName); - /* - * if field is excluded or field not included while include mode - * jump to the next field or if field allready added to the page - */ - if ((excludeMap.containsKey(extName) && excludeMap.get(extName) - .contains(fieldName)) - || (includeEnable && !includeMap.get(extName).contains( - fieldName)) || fieldAdded.contains(extName+"."+fieldName)) { - continue; - - } - - ExtensionFieldStrutsBean temp = new ExtensionFieldStrutsBean(); - - temp.setName(extName + "." + fieldName); - temp.setLabel(temp.getName()); - temp.setValue(""); - - - // set the field type. - switch (fieldType.getType()) { - case BINARY: - temp.setType("file"); - - break; - case BOOLEAN: - boolean valueBool = wikitty.getFieldAsBoolean( - ext.getName(), fieldName); - temp.setType("boolean"); - temp.setValue(valueBool); - - break; - default: - Object valueObject = wikitty.getFieldAsObject( - ext.getName(), fieldName); - String valueString = ""; - - if (valueObject != null) { - valueString = String.valueOf(valueObject); - } - - temp.setValue(valueString); - - valueString = StringEscapeUtils.escapeHtml(valueString); - if (valueString.contains("\n") - || "true" - .equals(fieldType.getTagValue("multiline"))) { - temp.setType("textarea"); - - } else { - temp.setType("textfield"); - - } - - } - mapField.put(temp.getName(), temp); - } - } - - /* - * specialize field. With name, label, type etc. - */ - for (Map.Entry<String, FieldSpecialisation> speEntry : field.entrySet()) { - ExtensionFieldStrutsBean fieldExtension = mapField.get(speEntry.getKey()); - FieldSpecialisation spe = speEntry.getValue(); - if (fieldExtension != null) { - - if (!"".equals(spe.getLabel())) { - fieldExtension.setLabel(spe.getLabel()); - } - if (!"".equals(spe.getType())) { - fieldExtension.setType(spe.getType()); - } - - // if fixed list of item is passed via fixvalues attribut - if ("fixed".equals(spe.getSubtype())) { - String[] valu = StringUtil.split(spe.getFixvalues(), ","); - for (String va : valu) { - fieldExtension.addOption(va, va); - } - - // if wikitty load all the options values - } else if ("wikitty".equals(spe.getSubtype())) { - PagedResult<Wikitty> wikitties = null; - - // check the criteria and request wikitty - if (!"".equals(spe.getCriteria())) { - - Criteria criteria = Search.query() - .keyword(spe.getCriteria()).criteria(); - wikitties = proxy.findAllByCriteria(criteria); - } - - String[] descriptor = StringUtil.split(spe.getDescfields(), - ","); - - if (wikitties != null) { - for (Wikitty wiki : wikitties) { - // by default value and description are the same - // wikitty id - String val = wiki.getId(); - - String desc = wiki.getId(); - - // if attribute descripteur fill with something - // extract from wikitty corresponding field value - if (descriptor.length != 0) { - desc = ""; - for (String descriptorIt : descriptor) { - String[] descTable = StringUtil.split( - descriptorIt, "."); - - desc += wiki.getFieldAsString(descTable[0], - descTable[1]); - - } - } - fieldExtension.addOption(val, desc); - } - - } - - } - - } - - } - - String[] fieldOrder = StringUtil.split(order, ","); - - /* - * if an order is define parse order and construct ordering result if - * all the field are not defined in the order juste add the rest at the - * end of the result list. - */ - if (fieldOrder.length != 0) { - - List<ExtensionFieldStrutsBean> orderedResult = new LinkedList<ExtensionFieldStrutsBean>(); - - for (String orderIt : fieldOrder) { - - if (mapField.containsKey(orderIt)) { - orderedResult.add(mapField.remove(orderIt)); - } - - } - orderedResult.addAll(mapField.values()); - return orderedResult; - } - - return mapField.values(); - } - - protected enum fieldTypeSpecialization { - wikitty, fixed; - } - - /** - * construct map for exclude or include template - * - * @param entry - * the attribut of the wikitty field tag exemple - * include="machin.*, truc.bob, truc.tt" - * @return a map with key the string before the dot and a list with the - * value after the dot example: [machin:[*], truc:[tt,bob]] - */ - protected Map<String, List<String>> constructIncludeExcludeMap(String entry) { - - String[] entryTab = StringUtil.split(entry, ","); - - Map<String, List<String>> result = new HashMap<String, List<String>>(); - - // prepare list of excluded field and extension - for (String excludeIt : entryTab) { - String[] extfield = StringUtil.split(excludeIt, "."); - if (extfield.length == 2) { - List<String> listFields = result.get(extfield[0]); - if (listFields == null) { - listFields = new LinkedList<String>(); - } - listFields.add(extfield[1]); - result.put(extfield[0], listFields); - - } else { - // TODO mfortun-2011-06-24 exception - } - - } - return result; - } - - public void addAddedField(String field) { - fieldAdded.add(field); - } - - public boolean isIncluded(String fieldname) { - return true; - } -} Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldTagBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldTagBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldTagBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -4,6 +4,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.struts2.components.ClosingUIBean; import org.apache.struts2.views.annotations.StrutsTag; +import org.nuiton.wikitty.struts.FieldSpecialisation; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittySelectBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittySelectBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittySelectBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -13,6 +13,8 @@ import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.search.Search; +import org.nuiton.wikitty.struts.Option; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyTagBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyTagBean.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyTagBean.java 2011-06-29 08:52:25 UTC (rev 992) @@ -6,6 +6,7 @@ import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.struts.WikittyFieldHandler; import com.opensymphony.xwork2.util.ValueStack; Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/WikittyFieldTag.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/WikittyFieldTag.java 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/WikittyFieldTag.java 2011-06-29 08:52:25 UTC (rev 992) @@ -5,7 +5,7 @@ import org.apache.struts2.components.Component; import org.apache.struts2.views.jsp.ui.AbstractClosingTag; -import org.nuiton.wikitty.struts.component.FieldSpecialisation; +import org.nuiton.wikitty.struts.FieldSpecialisation; import org.nuiton.wikitty.struts.component.WikittyFieldTagBean; import com.opensymphony.xwork2.util.ValueStack; Modified: trunk/wikitty-struts/src/main/tld/wikitty-struts.tld =================================================================== --- trunk/wikitty-struts/src/main/tld/wikitty-struts.tld 2011-06-29 08:50:09 UTC (rev 991) +++ trunk/wikitty-struts/src/main/tld/wikitty-struts.tld 2011-06-29 08:52:25 UTC (rev 992) @@ -58,6 +58,13 @@ <rtexprvalue>true</rtexprvalue> </attribute> <attribute> + <description><![CDATA[Used to know if the ordered fields has to be write before or after the custom field]]></description> + <name>orderBefore</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + + + <attribute> <description><![CDATA[If a delele button must be in the form]]></description> <name>allowDelete</name> <rtexprvalue>true</rtexprvalue>
participants (1)
-
mfortun@users.nuiton.org