Author: mfortun Date: 2011-07-06 12:38:11 +0200 (Wed, 06 Jul 2011) New Revision: 1060 Url: http://nuiton.org/repositories/revision/wikitty/1060 Log: * new tag that take entityValues or wikittyValues for select * New abstraction for tag Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyClosingUIBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyClosingTag.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/SelectTag.java trunk/wikitty-struts/src/main/resources/template/wikitty/ws-select-close.ftl trunk/wikitty-struts/src/main/resources/template/wikitty/ws-select.ftl Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponentBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java trunk/wikitty-struts/src/main/tld/wikitty-struts.tld Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyClosingUIBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyClosingUIBean.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyClosingUIBean.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -0,0 +1,30 @@ +package org.nuiton.wikitty.struts.component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.struts2.components.ClosingUIBean; + +import com.opensymphony.xwork2.util.ValueStack; + +public abstract class AbstractWikittyClosingUIBean extends ClosingUIBean { + + public AbstractWikittyClosingUIBean(ValueStack stack, + HttpServletRequest request, HttpServletResponse response) { + super(stack, request, response); + } + + + @Override + protected void evaluateExtraParams() { + super.evaluateExtraParams(); + addParameter("theme", getTheme()); + + } + + @Override + public String getTheme() { + return "wikitty"; + } + +} \ No newline at end of file Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyClosingUIBean.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java 2011-07-05 16:25:09 UTC (rev 1059) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponent.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -3,7 +3,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.struts2.components.ClosingUIBean; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.entities.BusinessEntity; import org.nuiton.wikitty.entities.BusinessEntityImpl; @@ -11,7 +10,7 @@ import com.opensymphony.xwork2.util.ValueStack; -public abstract class AbstractWikittyComponent extends ClosingUIBean { +public abstract class AbstractWikittyComponent extends AbstractWikittyClosingUIBean { /** * Never used directly this attribute use the getter @@ -46,11 +45,6 @@ return businessEntity; } - @Override - public String getTheme() { - return "wikitty"; - } - public void setWikitty(Wikitty wikitty) { this.wikitty = wikitty; } Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponentBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponentBean.java 2011-07-05 16:25:09 UTC (rev 1059) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/AbstractWikittyComponentBean.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -6,11 +6,9 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.entities.BusinessEntity; -import org.nuiton.wikitty.entities.BusinessEntityImpl; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.struts.TagUseException; import org.nuiton.wikitty.struts.WikittyFieldHandler; - import com.opensymphony.xwork2.util.ValueStack; public abstract class AbstractWikittyComponentBean extends AbstractWikittyComponent { @@ -79,8 +77,8 @@ } else { addParameter("name", fqFieldName); } - addParameter("theme", getTheme()); + /* if (id!=null || id.equals("")) { id = name==null?fqFieldName:name; Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java 2011-07-05 16:25:09 UTC (rev 1059) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectAssociationBean.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.struts2.views.annotations.StrutsTag; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.WikittyUtil; import org.nuiton.wikitty.entities.Wikitty; @@ -16,6 +17,9 @@ import com.opensymphony.xwork2.util.ValueStack; + +@StrutsTag(name = "boolean", tldTagClass = "org.nuiton.wikitty.struts.tag.SelectAssociationTag", + description = "", allowDynamicAttributes = false) public class SelectAssociationBean extends AbstractWikittyComponentBean { /** to use log facility, just put in your code: log.info(\"...\"); */ Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectBean.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectBean.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectBean.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -0,0 +1,164 @@ +package org.nuiton.wikitty.struts.component; + +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts2.views.annotations.StrutsTag; +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.entities.BusinessEntity; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.struts.Option; +import org.nuiton.wikitty.struts.TagUseException; +import org.nuiton.wikitty.struts.WikittyFieldHandler; + +import com.opensymphony.xwork2.util.ValueStack; +@StrutsTag(name = "boolean", tldTagClass = "org.nuiton.wikitty.struts.tag.SelectTag", + description = "", allowDynamicAttributes = false) +public class SelectBean extends AbstractWikittyClosingUIBean { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + final static private Log log = LogFactory + .getLog(SelectBean.class); + + public static final String OPEN_TEMPLATE = "ws-select"; + public static final String TEMPLATE = "ws-select-close"; + + protected Integer size; + protected String descField; + protected Collection<Wikitty> wikittyValues; + protected Collection<BusinessEntity> entityValues; + + + + public SelectBean(ValueStack stack, HttpServletRequest request, + HttpServletResponse response) { + super(stack, request, response); + } + + @Override + protected void evaluateExtraParams() { + super.evaluateExtraParams(); + + if (wikittyValues == null && entityValues == null){ + log.info("wikittyValues and entityValues null"); + throw new TagUseException("WikittyValues or entityValues must be define"); + } + + + if (size == null || size <=0 ){ + size = 1; + } + + addParameter("selectSize", size); + + List<Option> resultList = new LinkedList<Option>(); + + String[] descriptor = StringUtil.split(descField, + WikittyFieldHandler.FIELD_SEPARATOR); + + + if (wikittyValues!=null){ + for (Wikitty wiki : wikittyValues){ + Option temp = new Option(); + temp.setValeur(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, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); + + desc += wiki.getFieldAsWikitty(descTable[0], + descTable[1]); + } + } + temp.setDescription(desc); + + + resultList.add(temp); + } + } + + + if (entityValues!=null){ + for(BusinessEntity busi: entityValues){ + Option temp = new Option(); + temp.setValeur(busi.getWikittyId()); + String desc = busi.getWikittyId(); + + // 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, WikittyUtil.FQ_FIELD_NAME_SEPARATOR); + + desc += busi.getField(descTable[0], + descTable[1]); + } + } + temp.setDescription(desc); + + resultList.add(temp); + } + } + + addParameter("values", resultList); + + } + + @Override + public String getDefaultOpenTemplate() { + return OPEN_TEMPLATE; + + } + + @Override + protected String getDefaultTemplate() { + return TEMPLATE; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public String getDescField() { + return descField; + } + + public void setDescField(String descField) { + this.descField = descField; + } + + public Collection<Wikitty> getWikittyValues() { + return wikittyValues; + } + + public void setWikittyValues(Collection<Wikitty> wikittyValues) { + this.wikittyValues = wikittyValues; + } + + public Collection<BusinessEntity> getEntityValues() { + return entityValues; + } + + public void setEntityValues(Collection<BusinessEntity> entityValues) { + this.entityValues = entityValues; + } +} Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/component/SelectBean.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyClosingTag.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyClosingTag.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyClosingTag.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -0,0 +1,17 @@ +package org.nuiton.wikitty.struts.tag; + +import org.apache.struts2.views.jsp.ui.AbstractClosingTag; + + +public abstract class AbstractWikittyClosingTag extends AbstractClosingTag { + + /** + * + */ + private static final long serialVersionUID = -8295712250220293478L; + + public AbstractWikittyClosingTag() { + super(); + } + +} \ No newline at end of file Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyClosingTag.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java 2011-07-05 16:25:09 UTC (rev 1059) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/AbstractWikittyTag.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -1,14 +1,13 @@ package org.nuiton.wikitty.struts.tag; -import org.apache.struts2.views.jsp.ui.AbstractClosingTag; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.entities.BusinessEntity; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.struts.component.AbstractWikittyComponent; -import org.nuiton.wikitty.struts.component.AbstractWikittyComponentBean; -public abstract class AbstractWikittyTag extends AbstractClosingTag { +public abstract class AbstractWikittyTag extends AbstractWikittyClosingTag { + /** * */ Added: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/SelectTag.java =================================================================== --- trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/SelectTag.java (rev 0) +++ trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/SelectTag.java 2011-07-06 10:38:11 UTC (rev 1060) @@ -0,0 +1,83 @@ +package org.nuiton.wikitty.struts.tag; + +import java.util.Collection; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.struts2.components.Component; +import org.nuiton.wikitty.entities.BusinessEntity; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.struts.component.SelectBean; + +import com.opensymphony.xwork2.util.ValueStack; + +public class SelectTag extends AbstractWikittyClosingTag { + + protected Integer size; + protected String descField; + protected Collection<Wikitty> wikittyValues; + protected Collection<BusinessEntity> entityValues; + + /** + * + */ + private static final long serialVersionUID = -3652505449437874066L; + + @Override + public Component getBean(ValueStack stack, HttpServletRequest req, + HttpServletResponse res) { + return new SelectBean(stack, req, res); + + } + + /* + * <ws:select name="userId" size="5" values="<%=action.getPartners()%>" + * nameField="<%=VradiUser.FQ_FIELD_WIKITTYUSER_LOGIN%>" + * descField="<%=VradiUser.FQ_FIELD_VRADIUSER_INFO%>"/> + */ + @Override + protected void populateParams() { + super.populateParams(); + + SelectBean select = (SelectBean) component; + select.setSize(size); + select.setDescField(descField); + select.setEntityValues(entityValues); + select.setWikittyValues(wikittyValues); + + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public String getDescField() { + return descField; + } + + public void setDescField(String descField) { + this.descField = descField; + } + + public Collection<Wikitty> getWikittyValues() { + return wikittyValues; + } + + public void setWikittyValues(Collection<Wikitty> wikittyValues) { + this.wikittyValues = wikittyValues; + } + + public Collection<BusinessEntity> getEntityValues() { + return entityValues; + } + + public void setEntityValues(Collection<BusinessEntity> entityValues) { + this.entityValues = entityValues; + } + +} Property changes on: trunk/wikitty-struts/src/main/java/org/nuiton/wikitty/struts/tag/SelectTag.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/wikitty-struts/src/main/resources/template/wikitty/ws-select.ftl =================================================================== --- trunk/wikitty-struts/src/main/resources/template/wikitty/ws-select.ftl (rev 0) +++ trunk/wikitty-struts/src/main/resources/template/wikitty/ws-select.ftl 2011-07-06 10:38:11 UTC (rev 1060) @@ -0,0 +1,15 @@ +<#if parameters.included?? && parameters.included==true > +<#include "/${parameters.templateDir}/${parameters.theme}/ws-label-commons.ftl" /> +<select +<#include "/${parameters.templateDir}/${parameters.theme}/ws-commons.ftl" /> + size="${parameters.selectSize}"> +<#assign optionKeys = parameters.values><#t/> + <#list optionKeys as optionKey><#t/> + <option value="${optionKey.valeur}" <#t/> + <#if optionKey.valeur==parameters.value > + selected <#t/> + </#if> <#t/> + > ${optionKey.description} </option> + </#list> +</select><#t/> +</#if> \ No newline at end of file Modified: trunk/wikitty-struts/src/main/tld/wikitty-struts.tld =================================================================== --- trunk/wikitty-struts/src/main/tld/wikitty-struts.tld 2011-07-05 16:25:09 UTC (rev 1059) +++ trunk/wikitty-struts/src/main/tld/wikitty-struts.tld 2011-07-06 10:38:11 UTC (rev 1060) @@ -151,6 +151,48 @@ <required>false</required> </attribute> </tag> + <tag> + <name>select</name> + <tagclass>org.nuiton.wikitty.struts.tag.SelectTag</tagclass> + <bodycontent>empty</bodycontent> + <attribute> + <description><![CDATA[id for the field]]></description> + <name>id</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[name for html element. Ignored if tag used inside tag form.]]></description> + <name>name</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[the wikitty to edit]]></description> + <name>size</name> + <rtexprvalue>true</rtexprvalue> + <required>false</required> + </attribute> + <attribute> + <description><![CDATA[the proxy from whom search for wikitty required if tag not used inside form tag]]></description> + <name>descField</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[]]></description> + <name>wikittyValues</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[]]></description> + <name>entityValues</name> + <rtexprvalue>true</rtexprvalue> + </attribute> + <attribute> + <description><![CDATA[the label of the field]]></description> + <name>label</name> + <rtexprvalue>true</rtexprvalue> + <required>false</required> + </attribute> + </tag>