Author: mfortun Date: 2011-06-29 16:54:50 +0200 (Wed, 29 Jun 2011) New Revision: 1007 Url: http://nuiton.org/repositories/revision/wikitty/1007 Log: * complete basic edit action * add struts tag inside xml (required even if tag stay empty) * remove file option from wikitty template Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-commons.ftl trunk/wikitty-struts/src/main/resources/struts-plugin.xml Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java 2011-06-29 14:31:46 UTC (rev 1006) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/AbstractWikittyEditAction.java 2011-06-29 14:54:50 UTC (rev 1007) @@ -1,7 +1,20 @@ package org.nuiton.wikitty.struts; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.util.StringUtil; import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.entities.FieldType; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.FieldType.TYPE; +import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public abstract class AbstractWikittyEditAction extends ActionSupport { @@ -11,6 +24,15 @@ */ private static final long serialVersionUID = 1959245739866183821L; + /** to use log facility, just put in your code: log.info(\"...\"); */ + final static private Log log = LogFactory.getLog(AbstractWikittyEditAction.class); + + protected String id; + protected String redirect; + protected String delete; + protected String store; + + protected Map<String, Object> wikittyFieldMap = new HashMap<String, Object>(); /* rajouter les attributs par défaut id tout ça @@ -22,10 +44,74 @@ @Override public String execute() throws Exception { + // restore basic element to know what to do + id = getArgument("id", ""); + redirect = getArgument("redirect", ""); + delete = getArgument("delete", ""); + store = getArgument("store", ""); + + WikittyProxy proxy = getProxy(); + if (delete != "" ){ + proxy.delete(id); + + } else if (store != ""){ + Map<String, Object> param = ActionContext.getContext().getParameters(); + this.formatArgs(param); + + Wikitty wikitty = proxy.restore(id); + if (wikitty != null){ + + for (Entry<String, Object> entry : wikittyFieldMap.entrySet()){ + //wikitty.setFqField(entry.getKey(), entry.getValue()); + + FieldType ftype = wikitty.getFieldType(entry.getKey()); + + Object value = entry.getValue(); + + // Patch to handle string collection + if (ftype.isCollection() + && ftype.getType() == TYPE.STRING + && value != null) { + + String valueString = value.toString(); + + valueString = new String(valueString.substring( + 1, valueString.length() - 1)); + + Collection<String> list = new ArrayList<String>(); + + String[] valuesString = StringUtil.split( + valueString, ","); + + for (String element : valuesString) { + list.add(element.trim()); + } + + value = list; + } + + + wikitty.setFqField(entry.getKey(), value); + + + + } + + } + + + proxy.store(wikitty); + + } + + + + + System.out.println(wikittyFieldMap); return SUCCESS; @@ -35,4 +121,48 @@ public abstract WikittyProxy getProxy(); + protected Map<String, Object> formatArgs(Map<String, Object> args) { + wikittyFieldMap = new HashMap<String, Object>(); + for (Entry<String, Object> en : args.entrySet()) { + + if (en.getKey().startsWith("Wikitty")) { + + String value = ""; + + if (en.getValue() instanceof String[]) { + for (String occu : (String[]) en.getValue()) { + value += occu; + } + } else { + value = String.valueOf(en.getValue()); + } + wikittyFieldMap.put(en.getKey(), value); + } + } + return wikittyFieldMap; + } + + + public String getArgument(String key, String defaultValue) { + Object temp = ActionContext.getContext().getParameters().get(key); + // same method used inside wikitty publication base action + String result = ""; + // TODO mfortun-2011-06-29 fix this with something clean + if (temp == null) { + result = defaultValue; + } else { + if (temp instanceof String[]) { + for (String t : (String[]) temp) { + result += t; + } + } else { + result = temp.toString(); + + } + + } + return result; + } + + } Modified: trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-commons.ftl =================================================================== --- trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-commons.ftl 2011-06-29 14:31:46 UTC (rev 1006) +++ trunk/wikitty-struts/src/main/java/template/xhtml/wikitty-commons.ftl 2011-06-29 14:54:50 UTC (rev 1007) @@ -1,9 +1,9 @@ <#assign aKeys = parameters.wikittyfields><#t/> <#list aKeys as aKey><#t/> -<#if aKey.type=="file"> +<#--<#if aKey.type=="file"> <input type="hidden" name="${aKey.name}" value="BINARY" /> ${aKey.label} : <input type="file" name="File" label ="File"/> -</#if> +</#if>--> <#if aKey.type=="hidden"> <input type="hidden" name="${aKey.name}" value="${aKey.value}" /> </#if> Modified: trunk/wikitty-struts/src/main/resources/struts-plugin.xml =================================================================== --- trunk/wikitty-struts/src/main/resources/struts-plugin.xml 2011-06-29 14:31:46 UTC (rev 1006) +++ trunk/wikitty-struts/src/main/resources/struts-plugin.xml 2011-06-29 14:54:50 UTC (rev 1007) @@ -2,4 +2,6 @@ <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> - \ No newline at end of file + + + <struts></struts> \ No newline at end of file