Author: mfortun Date: 2011-06-24 13:39:42 +0200 (Fri, 24 Jun 2011) New Revision: 970 Url: http://nuiton.org/repositories/revision/wikitty/970 Log: * include/exclude mechanism works Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/ExtensionFieldStrutsBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldHandler.java trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-close.ftl Modified: 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-23 16:16:58 UTC (rev 969) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/ExtensionFieldStrutsBean.java 2011-06-24 11:39:42 UTC (rev 970) @@ -6,6 +6,8 @@ protected String name; protected String type; protected Object value; + + public String getName() { return name; } @@ -24,17 +26,19 @@ public void setValue(Object value) { this.value = value; } + + public ExtensionFieldStrutsBean() { + super(); + + } public ExtensionFieldStrutsBean(String name, String type, Object value) { + super(); this.name = name; this.type = type; this.value = value; } - public ExtensionFieldStrutsBean() { - super(); - } - Modified: 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-23 16:16:58 UTC (rev 969) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/WikittyFieldHandler.java 2011-06-24 11:39:42 UTC (rev 970) @@ -1,10 +1,17 @@ package org.nuiton.wikitty.struts.component; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; +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; public class WikittyFieldHandler { @@ -74,18 +81,140 @@ public List<ExtensionFieldStrutsBean> getWikittyField() { - List<ExtensionFieldStrutsBean> list = new LinkedList<ExtensionFieldStrutsBean>(); + List<ExtensionFieldStrutsBean> result = new LinkedList<ExtensionFieldStrutsBean>(); - for (String fielNa : wikitty.getAllFieldNames()) { - ExtensionFieldStrutsBean temp = new ExtensionFieldStrutsBean( - fielNa, "textfield", null); - // TODO mfortun-2011-06-23 handle field with specific wikitty class - // ? + /* + * 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 + */ - list.add(temp); + // parse include and exclude + String[] excludeTab = StringUtil.split(exclude, ","); + String[] includeTab = StringUtil.split(include, ","); + + // if include is enable it change how to construct result + boolean includeEnable = includeTab.length != 0; + + Map<String, List<String>> excludeMap = new HashMap<String, List<String>>(); + Map<String, List<String>> includeMap = new HashMap<String, List<String>>(); + + // prepare list of excluded field and extension + for (String excludeIt : excludeTab) { + String[] extfield = StringUtil.split(excludeIt, "."); + if (extfield.length == 2) { + List<String> listFields = excludeMap.get(extfield[0]); + if (listFields == null) { + listFields = new LinkedList<String>(); + } + listFields.add(extfield[1]); + excludeMap.put(extfield[0], listFields); + + } else { + // TODO mfortun-2011-06-24 exception + } + } - return list; + // prepare list of included field and extension + if (includeEnable) { + + for (String includeIt : includeTab) { + String[] extfield = StringUtil.split(includeIt, "."); + if (extfield.length == 2) { + List<String> listFields = includeMap.get(extfield[0]); + if (listFields == null) { + listFields = new LinkedList<String>(); + } + listFields.add(extfield[1]); + includeMap.put(extfield[0], listFields); + + } else { + // TODO mfortun-2011-06-24 exception + } + + } + + } + + 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 + */ + if ((excludeMap.containsKey(extName) && excludeMap.get(extName) + .contains(fieldName)) + || (includeEnable && !includeMap.get(extName).contains( + fieldName))) { + continue; + + } + + ExtensionFieldStrutsBean temp = new ExtensionFieldStrutsBean(); + + temp.setName(extName + "." + fieldName); + temp.setValue(""); + + 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 = ""; + String checkedNull = ""; + if (valueObject != null) { + valueString = String.valueOf(valueObject); + } else { + checkedNull = "checked='true'"; + } + + temp.setValue(valueString); + + valueString = StringEscapeUtils.escapeHtml(valueString); + if (valueString.contains("\n") + || "true" + .equals(fieldType.getTagValue("multiline"))) { + temp.setType("textarea"); + + } else { + temp.setType("textfield"); + + } + + } + result.add(temp); + } + } + + return result; } } Modified: trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-close.ftl =================================================================== --- trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-close.ftl 2011-06-23 16:16:58 UTC (rev 969) +++ trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-close.ftl 2011-06-24 11:39:42 UTC (rev 970) @@ -14,13 +14,20 @@ </#if> <#if aKey.type=="boolean" > -<input type="checkbox" name="${aKey.name}" value="true" "checked " /> +<input type="checkbox" name="${aKey.name}" value="true" + <#if aKey.value=="true" > + checked='true' + </#if> + /> </#if> -<#if parametters.nulle?? > - <input type="checkbox" name="isNull- ${aKey.name}" - value="true" " checkedNull "/>(null)" -</#if> - + +<#-- +/*<#if parameters.nullable?? > +*<input type="checkbox" name="isNull- ${aKey.name}" +* value="true" " checkedNull "/>(null)" +*</#if>*/ +--> +</br> </#list><#t/>