Changeset 2444
- Timestamp:
- 11/30/09 22:54:33 (2 years ago)
- Location:
- molgenis/3.3/src/org/molgenis/generators/ui
- Files:
-
- 2 edited
-
FormScreenGen.java.ftl (modified) (2 diffs)
-
PluginScreenFTLTemplateGen.ftl.ftl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
molgenis/3.3/src/org/molgenis/generators/ui/FormScreenGen.java.ftl
r2391 r2444 62 62 this.setMode(FormModel.Mode.${form.viewType}); 63 63 this.setCsvReader(new ${entity}CsvReader()); 64 64 65 <#-- parent form filtering --> 66 <#assign parent_xref = false> 67 <#if parent_form?exists> 68 <#assign xrefentity = Name(parent_form.getRecord())> 69 <#list form.getRecord().getAllFields() as field> 70 <#--if subform entity refers to parent form entity: show only records that point to parent record--> 71 <#--if multiple references exist, then use union, so 'OR' in query rule--> 72 <#if field.getType() == "xref" || field.getType() == "mref"> 73 <#list superclasses(parent_form.getRecord()) as parent_entity> 74 <#if parent_entity.getName() == field.getXRefEntity()> 75 //filter on <#if field.getType() == "mref">ANY </#if>subform_entity.${name(field)} == parentform_entity.${field.getXRefField()} 76 this.getParentFilters().add(new ParentFilter("${parent_form.name}","${SqlName(field.getXRefField())}","${SqlName(field.getXRefLabelString())}","${SqlName(name(field))}")); 77 </#if> 78 </#list> 79 </#if> 80 </#list> 81 <#--parent to subform xrefs--> 82 <#list parent_form.getRecord().getAllFields() as field> 83 <#--if parent entity refers to subform form entity: show only records that are pointed to by parent record--> 84 <#--if multiple references exist, then use union, so 'OR' in query rule--> 85 <#if field.getType() == "xref" || field.getType() == "mref"> 86 <#list superclasses(form.getRecord()) as subform_entity> 87 <#if subform_entity.getName() == field.getXRefEntity()> 88 //filter on subform_entity.${field.getXRefField()} == <#if field.getType() == "mref">ANY </#if> parentform_entity.${name(field)} 89 this.getParentFilters().add(new ParentFilter("${parent_form.name}","${SqlName(name(field))}","${SqlName(field.getXRefLabelString())}","${SqlName(field.getXRefField())}")); 90 </#if> 91 </#list> 92 </#if> 93 </#list> 94 </#if> 65 95 <#list form.actions as action> 66 96 this.addAction(new ${action}<${entity}>(this)); 67 97 </#list> 68 69 98 <#if form.readOnly> 70 99 this.setReadonly(true); 71 100 </#if> 72 101 73 <#if !form.isEmbedparent()> 74 <#list form.getChildren() as subscreen> 102 <#list form.getChildren() as subscreen> 75 103 <#assign screentype = Name(subscreen.getType().toString()?lower_case) /> 76 104 new ${package}.${JavaName(subscreen)}${screentype}(this); 77 </#list> 78 79 <#else> 80 this.setEmbedparent(true); 81 this.setEmbedkeyfield("${form.getEmbedkeyfield()}"); 82 this.setEmbedchildfield("${form.getEmbedchildfield()}"); 83 <#if screenpackage = ""> 84 <#assign wanted = package+"."+Name(form.className)+"."+helper.firstToUpper(form.getEmbedname()) /> 85 <#else> 86 <#assign wanted = package+"."+screenpackage+"."+Name(form.className)+"."+helper.firstToUpper(form.getEmbedchildname()) /> 87 </#if> 88 <#list form.getChildren() as subscreen> 89 <#assign screentype = Name(subscreen.getType().toString()?lower_case) /> 90 <#if name(model)+".screen."+subscreen.getCanonicalClassName() == wanted> 91 this.setEmbedform(new ${name(model)}.screen.${subscreen.getCanonicalClassName()}${screentype}(this)); 92 <#else> 93 new ${name(model)}.screen.${subscreen.getCanonicalClassName()}${screentype}(this); 94 </#if> 95 </#list> 96 </#if> 97 <#if form.isEmbedchild()> 98 this.setEmbedchild(true); 99 Vector<String> fields = new Vector<String>(); 100 fields.addAll(Arrays.asList("${form.getEmbedfields()}".split(","))); 101 this.setEmbedfields(fields); 102 103 this.setEmbedparentname("${form.getEmbedparentname()}"); 104 this.setEmbedparentfield("${form.getEmbedparentfield()}"); 105 this.setEmbedchildfield("${form.getEmbedchildfield()}"); 106 </#if> 105 </#list> 107 106 } 108 107 … … 126 125 public HtmlForm<${entity}> getInputs(${entity} entity, boolean newrecord) 127 126 { 128 <#if parent_form?exists> 129 <#list form.getRecord().getAllFields() as field> 130 <#if field.getType().toString() = "xref"> 131 <#--check parent record. FIXME: move to model as parent_child relationships--> 132 <#assign parent_xref = false> 133 <#list superclasses(parent_form.getRecord()) as parent_entity> 134 <#if parent_entity.getName() == field.getXRefEntity()> 135 <#assign parent_xref = true/> 136 </#if> 137 </#list> 138 <#if parent_xref> 139 <#assign xrefentity = Name(field.getXRefEntity())> 140 <#list form.getRecord().getAllFields() as parent_field> 141 <#if name(parent_field) = name(field.getXRefField())> 142 //default ${Name(field)} via parent form to ${Name(field.getXRefField())} 143 if(newrecord) 144 { 145 FormModel<${xrefentity}> parent = (FormModel<${xrefentity}>)this.get("${parent_form.getVelocityName()}"); 146 List<${xrefentity}> records = parent.getRecords(); 147 if(records.size()>0) 148 { 149 entity.set${Name(field)}(records.get(0).get${Name(field.getXRefField())}()); 150 entity.set${Name(field)}Label(records.get(0).get${Name(field.getXRefLabelString())}().toString()); 151 } 152 } 153 </#if> 154 </#list> 155 </#if> 156 </#if> 157 </#list> 158 </#if> 159 160 HtmlForm<${Name(entity)}> form = new ${model.getEntity(entity).namespace}.ui.${Name(entity)}HtmlForm(entity); 127 HtmlForm<${Name(entity)}> form = new HtmlForm<${Name(entity)}>(); 161 128 form.setNewRecord(newrecord); 162 129 form.setReadonly(isReadonly()); 130 131 List<HtmlInput> inputs = new ArrayList<HtmlInput>(); 132 <#list allFields(model.getEntity(entity)) as field> 133 <#assign inputtype = Name(field.getType().toString())> 134 //${JavaName(field)}: ${field} 135 { 136 ${inputtype}Input input = new ${inputtype}Input("${name(field)}",entity.get${JavaName(field)}()); 137 input.setLabel("${field.label}"); 138 input.setDescription("${escapeXml(field.description)}"); 139 <#if field.isNillable() && field.type != "file"><#--whether files are filled in is only checked in the db--> 140 input.setNillable(true); 141 <#else> 142 input.setNillable(false); 143 </#if> 144 <#if field.readOnly && field.auto> 145 input.setReadonly(true); //automatic fields that are readonly, are also readonly on newrecord 146 <#elseif field.readOnly> 147 if(!newrecord || isReadonly() || entity.isReadonly()) input.setReadonly(true); //readonly if not new record 148 <#else> 149 input.setReadonly( isReadonly() || entity.isReadonly()); 150 </#if> 151 <#if inputtype = "Enum"> 152 input.setOptions(entity.get${JavaName(field)}Options()); 153 </#if> 154 <#if inputtype = "Xref" || inputtype = "Mref"> 155 <#assign xref_entity = model.getEntity(field.XRefEntity)> 156 input.setXrefEntity("${xref_entity.getNamespace()}.${field.XRefEntity}"); 157 input.setXrefField("${name(field.XRefField)}"); 158 input.setXrefLabel("${name(field.XRefLabelString)}"); 159 //initialize the ${field.XRefEntity}.${field.XRefLabelString} of current record 160 input.setValueLabel<#if inputtype = "Mref">s</#if>(entity.get${JavaName(field)}Label<#if inputtype = "Mref">s</#if>()); 161 </#if> 162 <#if field.hidden> 163 input.setHidden(<#if (field.auto && field.readOnly) || (field.defaultValue?exists)>true<#else>!isNewRecord()</#if>); 164 </#if> 165 inputs.add(input); 166 } 167 </#list> 168 form.setInputs(inputs); 163 169 return form; 164 }165 166 @Override167 public List<QueryRule> getSystemRules()168 {169 List<QueryRule> rules = new ArrayList<QueryRule>();170 171 <#assign parent_xref = false>172 <#if parent_form?exists>173 <#assign xrefentity = Name(parent_form.getRecord())>174 FormModel<${xrefentity}> parent = (FormModel<${xrefentity}>)this.get("${parent_form.getVelocityName()}");175 List<${xrefentity}> records = parent.getRecords();176 177 //add filters for xref or mref relationships (if any)178 //if multiple xrefs apply then the filters are union (so xref1 OR xref2 OR etc)179 if(records.size()>0)180 {181 List<QueryRule> xref_filters = new ArrayList<QueryRule>();182 <#-- subform to parent form xrefs:-->183 <#list form.getRecord().getAllFields() as field>184 <#--if subform entity refers to parent form entity: show only records that point to parent record-->185 <#--if multiple references exist, then use union, so 'OR' in query rule-->186 <#if field.getType() == "xref" || field.getType() == "mref">187 <#list superclasses(parent_form.getRecord()) as parent_entity>188 <#if parent_entity.getName() == field.getXRefEntity()>189 //filter on <#if field.getType() == "mref">ANY </#if>subform_entity.${name(field)} == parentform_entity.${field.getXRefField()}190 {191 QueryRule rule = new QueryRule("${SqlName(field)}",QueryRule.Operator.EQUALS, records.get(0).get${JavaName(field.getXRefField())}());192 rule.setOr(true);193 xref_filters.add(rule);194 }195 </#if>196 </#list>197 </#if>198 </#list>199 <#--parent to subform xrefs-->200 <#list parent_form.getRecord().getAllFields() as field>201 <#--if parent entity refers to subform form entity: show only records that are pointed to by parent record-->202 <#--if multiple references exist, then use union, so 'OR' in query rule-->203 <#if field.getType() == "xref" || field.getType() == "mref">204 <#list superclasses(form.getRecord()) as subform_entity>205 <#if subform_entity.getName() == field.getXRefEntity()>206 //filter on <#if field.getType() == "mref">ANY </#if>parentform_entity.${name(field)} == subform_entity.${field.getXRefField()}207 {208 QueryRule rule = null;209 if( records.get(0).get${JavaName(field)}()<#if field.getType() == "mref">.size() > 0<#else>!= null</#if>)210 {211 rule = new QueryRule("${SqlName(field.getXRefField())}",QueryRule.Operator.<#if field.getType() == "mref">IN<#else>EQUALS</#if>, records.get(0).get${JavaName(field)}());212 }213 else214 {215 //disable all results by impossible condition216 rule = new QueryRule("${SqlName(field.getXRefField())}",QueryRule.Operator.EQUALS, Integer.MIN_VALUE);217 }218 rule.setOr(true);219 xref_filters.add(rule);220 }221 </#if>222 </#list>223 </#if>224 </#list>225 rules.add(new QueryRule(xref_filters));226 }227 </#if>228 <#if form.isFilter()>229 //add predefined form filter230 {231 QueryRule rule = new QueryRule("${form.getFilterfield()}", QueryRule.Operator.${form.getFiltertype()}, "${form.getFiltervalue()}");232 rules.add(rule);233 }234 </#if>235 {236 QueryRule rule = super.getRootScreen().getLogin().getRowlevelSecurityFilters(new ${entity}());237 if (rule != null /*&& !rule.equals(new QueryRule())*/)238 rules.add(rule);239 }240 return rules;241 170 } 242 171 -
molgenis/3.3/src/org/molgenis/generators/ui/PluginScreenFTLTemplateGen.ftl.ftl
r2108 r2444 4 4 <#-- ##--> 5 5 <#--#####################################################################--> 6 < !--Date: ${date}6 <#--Date: ${date} 7 7 * Template: ${template} 8 8 * generator: ${generator} ${version}
Note: See TracChangeset
for help on using the changeset viewer.