Changeset 2001
- Timestamp:
- 06/21/09 23:18:34 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
molgenis3_3/src/org/molgenis/generators/screen/FormScreenGen.java.ftl
r1979 r2001 37 37 38 38 // molgenis 39 import org.molgenis.framework.data.QueryRule.Operator; 39 40 import org.molgenis.framework.data.QueryRule; 40 41 import org.molgenis.framework.screen.Screen; 41 42 import org.molgenis.framework.screen.form.FormScreen; 42 43 import org.molgenis.framework.html.*; 44 import org.molgenis.framework.data.DatabaseException; 43 45 44 46 ${imports(model,model.getEntity(entity),"data.types")} … … 46 48 47 49 <#if parent_form?exists> 48 <#list form.getRecord().getAllFields() as field> 49 <#if field.getType().toString() = "xref"> 50 <#--check parent record. FIXME: move to model as parent_child relationships--> 51 <#assign parent_xref = false> 52 <#list superclasses(parent_form.getRecord()) as parent_entity> 53 <#if parent_entity.getName() == field.getXRefEntity()> 54 <#assign parent_xref = true/> 55 </#if> 56 </#list> 57 58 <#if parent_xref> 59 <#assign xref_entity = model.getEntity(field.getXRefEntity())> 60 import ${xref_entity.getNamespace()}.data.types.${Name(xref_entity)}; 61 </#if> 62 </#if> 63 </#list> 50 <#assign xref_entity = parent_form.getRecord()> 51 import ${xref_entity.getNamespace()}.data.types.${JavaName(xref_entity)}; 64 52 </#if> 65 53 … … 184 172 { 185 173 List<QueryRule> rules = new ArrayList<QueryRule>(); 174 175 <#assign parent_xref = false> 186 176 <#if parent_form?exists> 187 <#list form.getRecord().getAllFields() as field> 188 <#if field.getType().toString() = "xref"> 189 <#--check parent record. FIXME: move to model as parent_child relationships--> 190 <#assign parent_xref = false> 191 <#list superclasses(parent_form.getRecord()) as parent_entity> 192 <#if parent_entity.getName() == field.getXRefEntity()> 193 <#assign parent_xref = true/> 194 </#if> 195 </#list> 196 197 <#if parent_xref> 198 <#assign xrefentity = Name(field.getXRefEntity())> 177 <#assign xrefentity = Name(parent_form.getRecord())> 199 178 FormScreen<${xrefentity}> parent = (FormScreen<${xrefentity}>)this.get("${parent_form.getVelocityName()}"); 200 179 List<${xrefentity}> records = parent.getRecords(); 180 181 //add filters for xref or mref relationships (if any) 182 //if multiple xrefs apply then the filters are union (so xref1 OR xref2 OR etc) 201 183 if(records.size()>0) 202 { 203 <#if form.isEmbedchild()> 204 if (this.getMode() == Mode.EMBEDDED_VIEW) 205 { 206 List<Object> ids = new ArrayList<Object>(); 207 for(${form.getEmbedparentname()} record: records) 184 { 185 List<QueryRule> xref_filters = new ArrayList<QueryRule>(); 186 <#-- subform to parent form xrefs:--> 187 <#list form.getRecord().getAllFields() as field> 188 <#--if subform entity refers to parent form entity: show only records that point to parent record--> 189 <#--if multiple references exist, then use union, so 'OR' in query rule--> 190 <#if field.getType() == "xref" || field.getType() == "mref"> 191 <#list superclasses(parent_form.getRecord()) as parent_entity> 192 <#if parent_entity.getName() == field.getXRefEntity()> 193 //filter on <#if field.getType() == "mref">ANY </#if>subform_entity.${name(field)} == parentform_entity.${field.getXRefField()} 194 { 195 QueryRule rule = new QueryRule("${SqlName(field)}",QueryRule.Operator.EQUALS, records.get(0).get${JavaName(field.getXRefField())}()); 196 rule.setOr(true); 197 xref_filters.add(rule); 198 } 199 </#if> 200 </#list> 201 </#if> 202 </#list> 203 <#--parent to subform xrefs--> 204 <#list parent_form.getRecord().getAllFields() as field> 205 <#--if parent entity refers to subform form entity: show only records that are pointed to by parent record--> 206 <#--if multiple references exist, then use union, so 'OR' in query rule--> 207 <#if field.getType() == "xref" || field.getType() == "mref"> 208 <#list superclasses(form.getRecord()) as subform_entity> 209 <#if subform_entity.getName() == field.getXRefEntity()> 210 //filter on <#if field.getType() == "mref">ANY </#if>parentform_entity.${name(field)} == subform_entity.${field.getXRefField()} 211 { 212 QueryRule rule = null; 213 if( records.get(0).get${JavaName(field)}()<#if field.getType() == "mref">.size() > 0<#else>!= null</#if>) 208 214 { 209 ids.add(record.get${Name(form.getEmbedparentfield())}());215 rule = new QueryRule("${SqlName(field.getXRefField())}",QueryRule.Operator.<#if field.getType() == "mref">IN<#else>EQUALS</#if>, records.get(0).get${JavaName(field)}()); 210 216 } 211 QueryRule rule = new QueryRule("${form.getEmbedchildfield()}",QueryRule.Operator.IN, ids.toArray()); 212 rules.add(rule); 217 else 218 { 219 //disable all results by impossible condition 220 rule = new QueryRule("${SqlName(field.getXRefField())}",QueryRule.Operator.EQUALS, Integer.MIN_VALUE); 221 } 222 rule.setOr(true); 223 xref_filters.add(rule); 213 224 } 214 else215 225 </#if> 216 { 217 QueryRule rule = new QueryRule("${name(field)}",QueryRule.Operator.EQUALS, records.get(0).get${Name(field.getXRefField())}()); 218 rules.add(rule); 219 } 220 } 221 <#break> 222 </#if> 223 </#if> 224 </#list> 226 </#list> 227 </#if> 228 </#list> 229 rules.add(new QueryRule(xref_filters)); 230 } 225 231 </#if> 226 232 <#if form.isFilter()> 233 //add predefined form filter 227 234 { 228 235 QueryRule rule = new QueryRule("${form.getFilterfield()}", QueryRule.Operator.${form.getFiltertype()}, "${form.getFiltervalue()}"); … … 246 253 </#list> 247 254 } 248 255 256 @Override 249 257 public String getSearchField(String fieldName) 250 258 { 251 259 <#list form.getRecord().getAllFields() as field> 252 <#if field.type="xref" >260 <#if field.type="xref" || field.type="mref"> 253 261 if(fieldName.equals("${name(field)}")) return "${name(field)}_${name(field.getXRefLabelString())}"; 254 262 </#if>
Note: See TracChangeset
for help on using the changeset viewer.