|
From: <tri...@us...> - 2008-11-05 23:55:44
|
Revision: 828
http://equanda.svn.sourceforge.net/equanda/?rev=828&view=rev
Author: triathlon98
Date: 2008-11-05 23:55:39 +0000 (Wed, 05 Nov 2008)
Log Message:
-----------
EQ-271 make it possible to have a select on a link field
Modified Paths:
--------------
trunk/equanda-generate/src/main/java/org/equanda/domain/xml/AbstractSelect.java
trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Selection.java
trunk/equanda-generate/src/main/velocity/ejb3/DMObjectSelector.java.vm
trunk/equanda-generate/src/main/velocity/ejb3/ObjectProxy.java.vm
trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorBean.java.vm
trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorEJB.java.vm
trunk/equanda-generate/src/main/velocity/import/DatabaseMap.java.vm
Modified: trunk/equanda-generate/src/main/java/org/equanda/domain/xml/AbstractSelect.java
===================================================================
--- trunk/equanda-generate/src/main/java/org/equanda/domain/xml/AbstractSelect.java 2008-11-05 21:16:30 UTC (rev 827)
+++ trunk/equanda-generate/src/main/java/org/equanda/domain/xml/AbstractSelect.java 2008-11-05 23:55:39 UTC (rev 828)
@@ -26,13 +26,12 @@
import com.thoughtworks.xstream.annotations.XStreamOmitField;
import javolution.lang.TextBuilder;
+import org.equanda.domain.xml.aid.ListFilter;
+import org.equanda.domain.xml.aid.TemplateUtil;
import java.util.ArrayList;
import java.util.List;
-import org.equanda.domain.xml.aid.TemplateUtil;
-import org.equanda.domain.xml.aid.ListFilter;
-
/**
* Common code for Select and SubSelect (helper functions for the templates)
*
@@ -47,21 +46,33 @@
@XStreamOmitField
private String parametersList;
@XStreamOmitField
+ private String parametersIdList;
+ @XStreamOmitField
private String parametersListConverted;
@XStreamOmitField
private String parametersListWithTypes;
@XStreamOmitField
+ private String parametersListWithIdTypes;
+ @XStreamOmitField
private String parametersListWithTypesSingleSelect;
@XStreamOmitField
+ private String parametersListWithIdTypesSingleSelect;
+ @XStreamOmitField
private String parametersListSingleSelect;
@XStreamOmitField
private String parametersListNoLimit;
@XStreamOmitField
+ private String parametersIdListNoLimit;
+ @XStreamOmitField
private String parametersListWithTypesNoLimit;
@XStreamOmitField
+ private String parametersListWithIdTypesNoLimit;
+ @XStreamOmitField
private String signature;
@XStreamOmitField
private List<Selection> selectionsDeep;
+ @XStreamOmitField
+ private boolean hasTableParameters;
public abstract List<Selection> getSelections();
@@ -113,12 +124,17 @@
{
numberOfParameters = 0;
TextBuilder parametersList = TextBuilder.newInstance();
+ TextBuilder parametersIdList = TextBuilder.newInstance();
TextBuilder parametersListConverted = TextBuilder.newInstance();
TextBuilder parametersListWithTypes = TextBuilder.newInstance();
+ TextBuilder parametersListWithIdTypes = TextBuilder.newInstance();
TextBuilder parametersListWithTypesSingleSelect = TextBuilder.newInstance();
+ TextBuilder parametersListWithIdTypesSingleSelect = TextBuilder.newInstance();
TextBuilder parametersListSingleSelect = TextBuilder.newInstance();
TextBuilder parametersListNoLimit = TextBuilder.newInstance();
+ TextBuilder parametersIdListNoLimit = TextBuilder.newInstance();
TextBuilder parametersListWithTypesNoLimit = TextBuilder.newInstance();
+ TextBuilder parametersListWithIdTypesNoLimit = TextBuilder.newInstance();
TextBuilder signature = TextBuilder.newInstance();
TextBuilder calculatedQuery = TextBuilder.newInstance();
@@ -137,34 +153,57 @@
for ( Selection selection : getSelectionsDeep() )
{
String fieldType = selection.getField().getJavaFieldType();
+ String fieldIdType = fieldType;
String varName = selection.getVarName();
+ String varListName = varName;
+ String varListIdName = varName;
+ if ( selection.getField().isLink() )
+ {
+ hasTableParameters = true;
+ fieldIdType = "org.equanda.persistence.Uoid";
+ varListName = varListName + ".getId()";
+ }
if ( selection.isTestComparison() ) numberOfParameters++;
if ( selection.isParameter() && selection.isTestComparison() )
{
parametersList.append( sep );
+ parametersIdList.append( sep );
parametersListConverted.append( sep );
parametersListWithTypes.append( sep );
+ parametersListWithIdTypes.append( sep );
parametersListWithTypesSingleSelect.append( sep );
+ parametersListWithIdTypesSingleSelect.append( sep );
parametersListSingleSelect.append( sep );
parametersListNoLimit.append( sep );
+ parametersIdListNoLimit.append( sep );
parametersListWithTypesNoLimit.append( sep );
+ parametersListWithIdTypesNoLimit.append( sep );
- parametersListWithTypes.append( selection.getField().getJavaFieldType() ).append( ' ' );
+ parametersListWithTypes.append( fieldType ).append( ' ' );
+ parametersListWithIdTypes.append( fieldIdType ).append( ' ' );
parametersListWithTypesSingleSelect.append( fieldType ).append( ' ' );
- parametersListWithTypesNoLimit.append( selection.getField().getJavaFieldType() ).append( ' ' );
+ parametersListWithIdTypesSingleSelect.append( fieldIdType ).append( ' ' );
+ parametersListWithTypesNoLimit.append( fieldType ).append( ' ' );
+ parametersListWithIdTypesNoLimit.append( fieldIdType ).append( ' ' );
parametersListWithTypesSingleSelect.append( "_f" );
+ parametersListWithIdTypesSingleSelect.append( "_f" );
parametersListSingleSelect.append( "_f" );
- parametersList.append( varName );
+ parametersList.append( varListName );
+ parametersIdList.append( varListIdName );
parametersListConverted.append( varName ).append( "Converted" );
parametersListWithTypes.append( varName );
+ parametersListWithIdTypes.append( varName );
parametersListWithTypesSingleSelect.append( varName );
+ parametersListWithIdTypesSingleSelect.append( varName );
parametersListSingleSelect.append( varName );
- parametersListNoLimit.append( varName );
+ parametersListNoLimit.append( varListName );
+ parametersIdListNoLimit.append( varListIdName );
parametersListWithTypesNoLimit.append( varName );
+ parametersListWithIdTypesNoLimit.append( varName );
sep = ", ";
}
@@ -205,6 +244,7 @@
calculatedQuery.append( sel.getBase() );
calculatedQuery.append( sel.getQlPath() );
calculatedQuery.append( sel.getField().getVarName() );
+ if ( sel.getField().isLink() ) calculatedQuery.append( ".id" );
calculatedQuery.append( ' ' );
calculatedQuery.append( test );
calculatedQuery.append( " ) " );
@@ -230,6 +270,7 @@
{
parametersListWithTypes.append( sep ).append( "int equandaLimit" );
parametersList.append( sep ).append( "equandaLimit" );
+ parametersIdList.append( sep ).append( "equandaLimit" );
parametersListConverted.append( sep ).append( "equandaLimit" );
signature.append( sep ).append( "int limit" );
signature.append( cnt );
@@ -253,12 +294,17 @@
signature.append( " )" );
this.parametersList = parametersList.toString();
+ this.parametersIdList = parametersIdList.toString();
this.parametersListConverted = parametersListConverted.toString();
this.parametersListWithTypes = parametersListWithTypes.toString();
+ this.parametersListWithIdTypes = parametersListWithIdTypes.toString();
this.parametersListWithTypesSingleSelect = parametersListWithTypesSingleSelect.toString();
+ this.parametersListWithIdTypesSingleSelect = parametersListWithIdTypesSingleSelect.toString();
this.parametersListSingleSelect = parametersListSingleSelect.toString();
this.parametersListNoLimit = parametersListNoLimit.toString();
+ this.parametersIdListNoLimit = parametersIdListNoLimit.toString();
this.parametersListWithTypesNoLimit = parametersListWithTypesNoLimit.toString();
+ this.parametersListWithIdTypesNoLimit = parametersListWithIdTypesNoLimit.toString();
this.signature = signature.toString();
this.calculatedQuery = calculatedQuery.toString();
}
@@ -273,6 +319,11 @@
return parametersListWithTypes;
}
+ public String getParametersListWithIdTypes()
+ {
+ return parametersListWithIdTypes;
+ }
+
public String getParametersListConverted()
{
return parametersListConverted;
@@ -283,16 +334,31 @@
return parametersList;
}
+ public String getParametersIdList()
+ {
+ return parametersIdList;
+ }
+
public String getParametersListNoLimit()
{
return parametersListNoLimit;
}
+ public String getParametersIdListNoLimit()
+ {
+ return parametersIdListNoLimit;
+ }
+
public String getParametersListWithTypesNoLimit()
{
return parametersListWithTypesNoLimit;
}
+ public String getParametersListWithIdTypesNoLimit()
+ {
+ return parametersListWithIdTypesNoLimit;
+ }
+
public String getParametersListSingleSelect()
{
return parametersListSingleSelect;
@@ -303,8 +369,18 @@
return parametersListWithTypesSingleSelect;
}
+ public String getParametersListWithIdTypesSingleSelect()
+ {
+ return parametersListWithIdTypesSingleSelect;
+ }
+
public String getSignature()
{
return signature;
}
+
+ public boolean hasTableParameters()
+ {
+ return hasTableParameters;
+ }
}
Modified: trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Selection.java
===================================================================
--- trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Selection.java 2008-11-05 21:16:30 UTC (rev 827)
+++ trunk/equanda-generate/src/main/java/org/equanda/domain/xml/Selection.java 2008-11-05 23:55:39 UTC (rev 828)
@@ -137,9 +137,9 @@
{
select.err( parser, "invalid test " + test + "on selection " + getName() );
}
- if ( field.isLink() && !"is null".equals( test ) && !"is not null".equals( test ) )
+ if ( field.isLink() && !"=".equals( test ) && !"is null".equals( test ) && !"is not null".equals( test ) )
{
- select.err( parser, "link field can only test for (not) null" );
+ select.err( parser, "link field can only test for equality or (not) null" );
}
if ( field.isCalculated() )
{
Modified: trunk/equanda-generate/src/main/velocity/ejb3/DMObjectSelector.java.vm
===================================================================
--- trunk/equanda-generate/src/main/velocity/ejb3/DMObjectSelector.java.vm 2008-11-05 21:16:30 UTC (rev 827)
+++ trunk/equanda-generate/src/main/velocity/ejb3/DMObjectSelector.java.vm 2008-11-05 23:55:39 UTC (rev 828)
@@ -1,3 +1,7 @@
+#* @vtlvariable name="table" type="org.equanda.domain.xml.transform.RootTable" *#
+#* @vtlvariable name="engine" type="org.equanda.generate.Generator" *#
+#* @vtlvariable name="package" type="java.lang.String" *#
+#* @vtlvariable name="generationdate" type="java.lang.String" *#
#**
* This file is part of the equanda project.
*
@@ -25,8 +29,7 @@
*
* Contributor(s):
* @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a>
- *#
-/**
+ *#/**
* This file is generated by equanda on $generationdate, do not modify
*/
@@ -99,7 +102,7 @@
#if( $select.hasSubSelects() && ( $select.Operator.equals("TRY") || $select.Operator.equals("ADD" ) ) )
#set( $sep = ", " )
#if ( $select.ParametersListWithTypes == "" )#set( $sep = "" )#end
- private static $list equanda${select.Name}( EntityManager em, ObjectType tf$sep$select.ParametersListWithTypes )
+ private static $list equanda${select.Name}( EntityManager em, ObjectType tf$sep$select.ParametersListWithIdTypes )
{
EquandaQuery query;
#if ( $select.Operator=="TRY" )
@@ -206,7 +209,7 @@
*/
#set( $sep = ", " )
#if( $select.ParametersListWithTypes == "" )#set( $sep = "" )#end
- public static EquandaQuery get${select.Name}Query( ObjectType tf$sep$select.ParametersListWithTypes )
+ public static EquandaQuery get${select.Name}Query( ObjectType tf$sep$select.ParametersListWithIdTypes )
{
EquandaQuery query = EquandaGlobal.getQuery( "${table.Name}.${select.Name}" );
#selectQueryParameters( $select )
@@ -256,12 +259,12 @@
public static long count${field.Name}( EntityManager em, ${field.JavaFieldType} ${field.VarName},
${field.UniqueForField.JavaEntityType} equandaFor )
{
- EquandaQuery query = EquandaGlobal.getQuery( "${table.Name}.equanda${field.Name}Unique" );
+ EquandaQuery query;
if ( null != equandaFor )
{
query = EquandaGlobal.getQuery( "${table.Name}.equanda${field.Name}Unique" );
query.setParameter( "equandaFor", equandaFor );
- }
+ }
else
{
query = EquandaGlobal.getQuery( "${table.Name}.equanda${field.Name}UniqueNull" );
Modified: trunk/equanda-generate/src/main/velocity/ejb3/ObjectProxy.java.vm
===================================================================
--- trunk/equanda-generate/src/main/velocity/ejb3/ObjectProxy.java.vm 2008-11-05 21:16:30 UTC (rev 827)
+++ trunk/equanda-generate/src/main/velocity/ejb3/ObjectProxy.java.vm 2008-11-05 23:55:39 UTC (rev 828)
@@ -30,8 +30,7 @@
* Contributor(s):
* @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a>
* @author <a href="mailto:an...@pa...">Andrei Chiritescu</a>
- *#
-/**
+ *#/**
* This file is generated by equanda on $generationdate, do not modify
*/
@@ -642,7 +641,23 @@
if ( sel != null ) sel.remove();
}
}
+#if( $select.hasTableParameters() )
+ public static $return select${select.Name}( $select.ParametersListWithIdTypes )
+ throws EquandaPersistenceException
+ {
+ ${table.Name}SelectorEJB sel = null;
+ try
+ {
+ sel = EquandaGlobal.get${table.Name}Selector();
+ return sel.select${select.Name}( $select.ParametersIdList );
+ }
+ finally
+ {
+ if ( sel != null ) sel.remove();
+ }
+ }
#end
+#end
}
Modified: trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorBean.java.vm
===================================================================
--- trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorBean.java.vm 2008-11-05 21:16:30 UTC (rev 827)
+++ trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorBean.java.vm 2008-11-05 23:55:39 UTC (rev 828)
@@ -1,3 +1,7 @@
+#* @vtlvariable name="generationdate" type="java.lang.String" *#
+#* @vtlvariable name="package" type="java.lang.String" *#
+#* @vtlvariable name="dollar" type="java.lang.String" *#
+#* @vtlvariable name="table" type="org.equanda.domain.xml.transform.RootTable" *#
#**
* This file is part of the equanda project.
*
@@ -25,8 +29,7 @@
*
* Contributor(s):
* @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a>
- *#
-/**
+ *#/**
* This file is generated by equanda on $generationdate, do not modify
*/
@@ -312,7 +315,7 @@
#if( $select.hasSubSelects() && ( $select.Operator.equals("TRY") || $select.Operator.equals("ADD" ) ) )
#set( $return="List<DM${table.Name}Bean>" )
#if( $select.isSingle() )#set( $return="DM${table.Name}Bean" )#end
- private $return equandaSelect${select.Name}( $select.ParametersListWithTypes )
+ private $return equandaSelect${select.Name}( $select.ParametersListWithIdTypes )
throws EquandaPersistenceException
{
#checkSelectorParameters( $select )
@@ -326,13 +329,13 @@
#set( $return="List<${table.Name}EJB>" )
#if( $select.isSingle() )#set( $return="${table.Name}EJB" )#end
#selectSecurityRole( $select )
- public $return select${select.Name}EJB( $select.ParametersListWithTypes )
+ public $return select${select.Name}EJB( $select.ParametersListWithIdTypes )
throws EquandaPersistenceException
{
#if( $select.isSingle() )
- return getEJB( equandaSelect${select.Name}( $select.ParametersList ) );
+ return getEJB( equandaSelect${select.Name}( $select.ParametersNoIdList ) );
#else ## is multiple
- return convertListEJB( equandaSelect${select.Name}( $select.ParametersList ) );
+ return convertListEJB( equandaSelect${select.Name}( $select.ParametersIdList ) );
#end
}
@@ -348,8 +351,21 @@
return convertList( equandaSelect${select.Name}( $select.ParametersList ) );
#end
}
+#if( $select.hasTableParameters() )
+ #selectSecurityRole( $select )
+ public $return select${select.Name}( $select.ParametersListWithIdTypes )
+ throws EquandaPersistenceException
+ {
+ #if( $select.isSingle() )
+ return get( equandaSelect${select.Name}( $select.ParametersIdList ) );
+ #else ## is multiple
+ return convertList( equandaSelect${select.Name}( $select.ParametersIdList ) );
+ #end
+ }
+#end
+
#else##select.hasSubSelects
- private EquandaQuery equandaSelect${select.Name}( $select.ParametersListWithTypes )
+ private EquandaQuery equandaSelect${select.Name}( $select.ParametersListWithIdTypes )
throws EquandaPersistenceException
{
#checkSelectorParameters( $select )
@@ -357,19 +373,19 @@
#if( $select.ParametersList == "" )#set( $sep = "" )#end
#set( $tf = "null" )
#if( ${table.Name}!=${select.TableName} )#set( $tf = "new ${package}.client.type.${select.tableName}Type()" )#end
- return DM${table.Name}Selector.get${select.Name}Query( $tf$sep$select.ParametersList );
+ return DM${table.Name}Selector.get${select.Name}Query( $tf$sep$select.ParametersIdList );
}
#set( $return="List<${table.Name}EJB>" )
#if( $select.isSingle() )#set( $return="${table.Name}EJB" )#end
#selectSecurityRole( $select )
- public $return select${select.Name}EJB( $select.ParametersListWithTypes )
+ public $return select${select.Name}EJB( $select.ParametersListWithIdTypes )
throws EquandaPersistenceException
{
#if( $select.isSingle() )
- return getEJB( equandaSelect${select.Name}( $select.ParametersList ) );
+ return getEJB( equandaSelect${select.Name}( $select.ParametersIdList ) );
#else ## is multiple
- return getLazyEJBList( equandaSelect${select.Name}( $select.ParametersList ) );
+ return getLazyEJBList( equandaSelect${select.Name}( $select.ParametersIdList ) );
#end
}
@@ -385,6 +401,18 @@
return getLazyList( equandaSelect${select.Name}( $select.ParametersList ) );
#end
}
+#if( $select.hasTableParameters() )
+ #selectSecurityRole( $select )
+ public $return select${select.Name}( $select.ParametersListWithIdTypes )
+ throws EquandaPersistenceException
+ {
+ #if( $select.isSingle() )
+ return get( equandaSelect${select.Name}( $select.ParametersIdList ) );
+ #else ## is multiple
+ return getLazyList( equandaSelect${select.Name}( $select.ParametersIdList ) );
+ #end
+ }
+#end
#end##select.hasSubSelects
#end ##macro createSelectors
Modified: trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorEJB.java.vm
===================================================================
--- trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorEJB.java.vm 2008-11-05 21:16:30 UTC (rev 827)
+++ trunk/equanda-generate/src/main/velocity/ejb3/ObjectSelectorEJB.java.vm 2008-11-05 23:55:39 UTC (rev 828)
@@ -1,3 +1,7 @@
+#* @vtlvariable name="generationdate" type="java.lang.String" *#
+#* @vtlvariable name="package" type="java.lang.String" *#
+#* @vtlvariable name="dollar" type="java.lang.String" *#
+#* @vtlvariable name="table" type="org.equanda.domain.xml.transform.RootTable" *#
#**
* This file is part of the equanda project.
*
@@ -25,8 +29,7 @@
*
* Contributor(s):
* @author <a href="mailto:jo...@pr...">Joachim Van der Auwera</a>
- *#
-/**
+ *#/**
* This file is generated by equanda on $generationdate, do not modify
*/
@@ -55,13 +58,17 @@
#set( $return="List<${table.Name}EJB>" )
#if( $select.isSingle() )#set( $return="${table.Name}EJB" )#end
- $return select${select.Name}EJB( $select.ParametersListWithTypes )
+ $return select${select.Name}EJB( $select.ParametersListWithIdTypes )
throws EquandaPersistenceException;
#set( $return="List<${table.Name}>" )
#if( $select.isSingle() )#set( $return="${package}.client.${table.Name}" )#end
$return select${select.Name}( $select.ParametersListWithTypes )
throws EquandaPersistenceException;
+#if( $select.hasTableParameters() )
+ $return select${select.Name}( $select.ParametersListWithIdTypes )
+ throws EquandaPersistenceException;
+#end
#end ##macro
#foreach( $select in $table.Selects )
Modified: trunk/equanda-generate/src/main/velocity/import/DatabaseMap.java.vm
===================================================================
--- trunk/equanda-generate/src/main/velocity/import/DatabaseMap.java.vm 2008-11-05 21:16:30 UTC (rev 827)
+++ trunk/equanda-generate/src/main/velocity/import/DatabaseMap.java.vm 2008-11-05 23:55:39 UTC (rev 828)
@@ -1,3 +1,7 @@
+#* @vtlvariable name="generationdate" type="java.lang.String" *#
+#* @vtlvariable name="package" type="java.lang.String" *#
+#* @vtlvariable name="dollar" type="java.lang.String" *#
+#* @vtlvariable name="dm" type="org.equanda.domain.xml.DomainModel" *#
#**
* This file is part of the equanda project.
*
@@ -58,6 +62,7 @@
#foreach( $table in $dm.RootTables )
#foreach( $select in $table.Selects )
+#if( !$select.hasTableParameters() )
#if( !$select.hasLimit() && !$select.isHidden() && !$select.isAutomatic() && !$select.Selections.isEmpty() )
#if( $select.isLocal() )
## build the parameter list
@@ -179,6 +184,7 @@
#end ## if ! hasLimit
+#end
#end ## foreach select
## without a selector :
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|