Changeset 2677
- Timestamp:
- 03/08/10 13:30:16 (2 years ago)
- Location:
- molgenis/3.3/src/org/molgenis
- Files:
-
- 30 edited
-
generators/DataTypeGen.java.ftl (modified) (14 diffs)
-
generators/R/REntityGen.R.ftl (modified) (4 diffs)
-
generators/csv/CsvReaderGen.java.ftl (modified) (8 diffs)
-
generators/db/JDBCDatabaseGen.java.ftl (modified) (2 diffs)
-
generators/db/JDBCMetaDatabaseGen.java.ftl (modified) (4 diffs)
-
generators/db/MapperCommons.subclass_per_table.java.ftl (modified) (8 diffs)
-
generators/db/MapperMrefs.java.ftl (modified) (4 diffs)
-
generators/db/MultiqueryMapperGen.java.ftl (modified) (1 diff)
-
generators/doc/DotDocGen.java.ftl (modified) (4 diffs)
-
generators/doc/DotDocMinimalGen.java.ftl (modified) (2 diffs)
-
generators/doc/EntityModelDocGen.java.ftl (modified) (1 diff)
-
generators/doc/FileFormatDocGen.java.ftl (modified) (2 diffs)
-
generators/doc/ObjectModelDocGen.java.ftl (modified) (4 diffs)
-
generators/doc/TableDocGen.java.ftl (modified) (1 diff)
-
generators/doc/TextUmlGen.java.ftl (modified) (2 diffs)
-
generators/fieldtypes/MrefField.java (modified) (5 diffs)
-
generators/fieldtypes/XrefField.java (modified) (4 diffs)
-
generators/server/SoapApiGen.java.ftl (modified) (2 diffs)
-
generators/sql/MySqlAlterSubclassPerTableGen.mysql.ftl (modified) (1 diff)
-
generators/sql/MySqlCreateSubclassPerTableGen.mysql.ftl (modified) (1 diff)
-
model/MolgenisModel.java (modified) (4 diffs)
-
model/MolgenisModelParser.java (modified) (7 diffs)
-
model/MolgenisModelValidator.java (modified) (19 diffs)
-
model/elements/DBSchema.java (modified) (2 diffs)
-
model/elements/Entity.java (modified) (17 diffs)
-
model/elements/Field.java (modified) (20 diffs)
-
model/elements/Form.java (modified) (3 diffs)
-
model/elements/Matrix.java (modified) (4 diffs)
-
model/elements/Model.java (modified) (2 diffs)
-
model/elements/View.java (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molgenis/3.3/src/org/molgenis/generators/DataTypeGen.java.ftl
r2592 r2677 74 74 <#assign type_label = field.getType().toString()> 75 75 <#if type_label == "user" || type_label="xref" || type_label="mref"> 76 <#assign xref_entity = model.getEntity(JavaName(field.XRefEntity))>76 <#assign xref_entity = field.xrefEntity> 77 77 import ${xref_entity.namespace}.${JavaName(xref_entity)}; 78 78 </#if> … … 97 97 public ${type(field)} get${JavaName(field)}(); 98 98 public void set${JavaName(field)}(${type(field)} _${name(field)}); 99 <#if type_label == "user" || type_label == "xref" || type_label == "mref" || type_label == "enum" > 100 <#if type_label == "enum"> 99 <#if type_label == "enum"> 101 100 public java.util.List<ValueLabel> get${JavaName(field)}Options(); 102 </#if> 103 <#if type_label == "user" || type_label="xref"> 104 //public void set${JavaName(field)}(${JavaName(field.XRefEntity)} _${name(field)}); 105 public String get${JavaName(field)}Label(); 106 public void set${JavaName(field)}Label(String label); 107 <#elseif type_label == "mref"> 108 //public void set${JavaName(field)}(List<${JavaName(field.XRefEntity)}> _${name(field)}List); 109 public java.util.List<String> get${JavaName(field)}Labels(); 110 public void set${JavaName(field)}Labels(java.util.List<String> labels); 111 </#if> 112 </#if> 113 114 <#if type_label == "file" || type_label=="image" > 101 <#elseif type_label="xref"> 102 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 103 public String get${JavaName(field)}_${label}(); 104 public void set${JavaName(field)}_${label}(String ${name(field)}_${label}); 105 </#list></#if> 106 <#elseif type_label == "mref"> 107 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 108 public java.util.List<String> get${JavaName(field)}_${label}(); 109 public void set${JavaName(field)}_${label}(java.util.List<String> ${name(field)}_${label}List); 110 </#list></#if> 111 <#elseif type_label == "file" || type_label=="image" > 115 112 public File get${JavaName(field)}File(); 116 117 113 public void set${JavaName(field)}File(File file); 118 114 </#if> … … 126 122 <#assign type_label = field.getType().toString()> 127 123 private ${type(field)} _${name(field)} = ${default(field)}; 128 <#if type_label == " user" || type_label == "xref" || type_label == "mref" || type_label == "enum">129 <#if type_label == "enum">124 <#if type_label == "enum"> 125 private String _${name(field)}_label = null; 130 126 private java.util.List<ValueLabel> _${name(field)}_options = new ArrayList<ValueLabel>(); 131 </#if> 132 <#if type_label == "mref"> 133 private java.util.List<String> _${name(field)}_labels = new ArrayList<String>(); 134 private java.util.List<${JavaName(field.getXRefEntity())}> _${name(field)}_objects= new ArrayList<${JavaName(field.getXRefEntity())}>(); 135 <#else> 136 private String _${name(field)}_label = null; 137 <#if type_label == "xref"> 138 private ${JavaName(field.getXRefEntity())} _${name(field)}_object = null; 139 </#if> 140 </#if> 141 </#if> 142 <#if type_label == "file" || type_label=="image" > 127 <#elseif type_label == "xref"> 128 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 129 private String _${name(field)}_${label} = null; 130 </#list></#if> 131 private ${JavaName(field.xrefEntity)} _${name(field)}_object = null; 132 <#elseif type_label == "mref"> 133 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 134 private java.util.List<String> _${name(field)}_${label} = new ArrayList<String>(); 135 </#list></#if> 136 private java.util.List<${JavaName(field.xrefEntity)}> _${name(field)}_objects= new ArrayList<${JavaName(field.xrefEntity)}>(); 137 <#elseif type_label == "file" || type_label=="image" > 143 138 private File _${name(field)}_file = null; 144 139 </#if> … … 154 149 155 150 <#list entity.getFields() as f> 156 <#assign type_label = f.getType().toString()> 157 <#if type_label == "enum"> 151 <#if f.type == "enum"> 158 152 //options for enum ${JavaName(f)} 159 153 <#list f.getEnumOptions() as option> … … 210 204 <#if type_label == "xref"> 211 205 if(this._${name(field)}_object != null) 212 return this._${name(field)}_object.get${JavaName(field. getXRefField())}();206 return this._${name(field)}_object.get${JavaName(field.xrefField)}(); 213 207 <#elseif type_label == "mref"> 214 208 if(this._${name(field)}_objects != null && this._${name(field)}_objects.size() > 0) 215 209 { 216 210 ${type(field)} result = ${default(field)}; 217 for(${JavaName(field. getXRefEntity())} o: _${name(field)}_objects) result.add(o.get${JavaName(field.getXRefField())}());211 for(${JavaName(field.xrefEntity)} o: _${name(field)}_objects) result.add(o.get${JavaName(field.xrefField)}()); 218 212 //this should be smarter, like a List that automatically syncs... 219 213 //and this also doesn't give an informative error why it is not modifiable … … 232 226 <#if type_label == "mref"> 233 227 //check what type the elements in the list are made off because List<E> has same erasure 234 //if ${JavaName(field. getXRefEntity())} then tye should go in the object list235 if( _${name(field)} != null && _${name(field)}.size()>0 && _${name(field)} instanceof ${JavaName(field. getXRefEntity())})228 //if ${JavaName(field.xrefEntity)} then tye should go in the object list 229 if( _${name(field)} != null && _${name(field)}.size()>0 && _${name(field)} instanceof ${JavaName(field.xrefEntity)}) 236 230 { 237 231 this._${name(field)}_objects = _${name(field)}; 238 232 //need to copy ids to this._${name(field)} because get${JavaName(field)} does this. 239 233 //this._${name(field)} = ${default(field)}; 240 //for(${JavaName(field. getXRefEntity())} o: _${name(field)}_objects) result.add(o.get${JavaName(field.getXRefField())}());234 //for(${JavaName(field.xrefEntity)} o: _${name(field)}_objects) result.add(o.get${JavaName(field.xrefField)}()); 241 235 } 242 236 //else make list empty 243 237 else 244 238 { 245 this._${name(field)}_objects = new java.util.ArrayList<${JavaName(field. getXRefEntity())}>();239 this._${name(field)}_objects = new java.util.ArrayList<${JavaName(field.xrefEntity)}>(); 246 240 247 241 if(this._${name(field)} != null) … … 259 253 } 260 254 255 <#-- data type specific methods --> 261 256 <#if type_label =="date"> 262 257 /** … … 268 263 this.set${JavaName(field)}(string2date(datestring)); 269 264 } 270 </#if> 271 272 <#if type_label == "user" || type_label == "xref" || type_label == "mref">/** 273 * Get a pretty label for cross reference ${JavaName(field)} to <a href="${JavaName(field.getXRefEntity())}.html#${JavaName(field.getXRefField())}">${JavaName(field.getXRefEntity())}.${JavaName(field.getXRefField())}</a>. 274 */<#elseif type_label == "enum">/** 265 <#elseif type_label == "enum" > 266 /** 275 267 * Get tha label for enum ${JavaName(field)}. 276 */</#if> 277 <#if type_label == "user" || type_label == "xref" || type_label == "enum" > 268 */ 278 269 public String get${JavaName(field)}Label() 279 270 { 280 <#if type_label != "enum">if(this._${name(field)}_object != null)281 return this._${name(field)}_object.get${JavaName(field.getXRefLabelString())}().toString();</#if>282 271 return this._${name(field)}_label; 283 272 } 284 273 285 <#if type_label == "xref"> 286 /** 287 * Set the ${field.description}. Automatically calls this.set${JavaName(field)}(${name(field)}.get${JavaName(field.getXRefField())}); 274 /** 275 * ${JavaName(field)} is enum. This method returns all available enum options. 276 */ 277 public java.util.List<ValueLabel> get${JavaName(field)}Options() 278 { 279 return _${name(field)}_options; 280 } 281 282 <#elseif type_label == "xref"> 283 /** 284 * Set the ${field.description}. Automatically calls this.set${JavaName(field)}(${name(field)}.get${JavaName(field.xrefField)}); 288 285 * @param _${name(field)} 289 286 */ 290 public void set${JavaName(field)}(${JavaName(field.getXRefEntity())} ${name(field)}) 291 { 292 this.set${JavaName(field)}(${name(field)}.get${JavaName(field.getXRefField())}()); 293 } 294 </#if> 287 public void set${JavaName(field)}(${JavaName(field.xrefEntity)} ${name(field)}) 288 { 289 this.set${JavaName(field)}(${name(field)}.get${JavaName(field.xrefField)}()); 290 } 291 292 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 293 /** 294 * Get a pretty label ${label} for cross reference ${JavaName(field)} to ${JavaName(field.xrefEntity)}.${JavaName(field.xrefField)}. 295 */ 296 public String get${JavaName(field)}_${label}() 297 { 298 return _${name(field)}_${label}; 299 } 300 301 /** 302 * Set a pretty label for cross reference ${JavaName(field)} to <a href="${JavaName(field.xrefEntity)}.html#${JavaName(field.xrefField)}">${JavaName(field.xrefEntity)}.${JavaName(field.xrefField)}</a>. 303 */ 304 public void set${JavaName(field)}_${label}(String ${name(field)}_${label}) 305 { 306 _${name(field)}_${label} = ${name(field)}_${label}; 307 //clear the object cache 308 _${name(field)}_object = null; 309 } 310 </#list></#if> 311 295 312 296 313 <#elseif type_label="mref"> 297 public java.util.List<String> get${JavaName(field)}Labels() 314 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 315 /** 316 * Get a pretty label for cross reference ${JavaName(field)} to <a href="${JavaName(field.xrefEntity)}.html#${JavaName(field.xrefField)}">${JavaName(field.xrefEntity)}.${JavaName(field.xrefField)}</a>. 317 */ 318 public java.util.List<String> get${JavaName(field)}_${label}() 298 319 { 299 320 if(this._${name(field)}_objects != null && this._${name(field)}_objects.size() > 0) 300 321 { 301 322 java.util.List<String> result = new java.util.ArrayList<String>(); 302 for(${JavaName(field. getXRefEntity())} o: _${name(field)}_objects) result.add(o.get${JavaName(field.getXRefLabelString())}().toString());323 for(${JavaName(field.xrefEntity)} o: _${name(field)}_objects) result.add(o.get${JavaName(label)}().toString()); 303 324 //this should be smarter, like a List that automatically syncs... 304 325 //and this also doesn't give an informative error why it is not modifiable 305 326 return java.util.Collections.unmodifiableList(result); 306 327 } 307 return _${name(field)}_labels; 308 } 309 </#if> 310 311 <#if type_label == "enum"> 312 /** 313 * ${JavaName(field)} is enum. This method returns all available enum options. 314 */ 315 </#if> 316 <#if type_label == "enum" > 317 public java.util.List<ValueLabel> get${JavaName(field)}Options() 318 { 319 return _${name(field)}_options; 320 } 321 </#if> 322 323 <#if type_label == "user" || type_label == "xref" > 324 /** 325 * Set a pretty label for cross reference ${JavaName(field)} to <a href="${JavaName(field.getXRefEntity())}.html#${JavaName(field.getXRefField())}">${JavaName(field.getXRefEntity())}.${JavaName(field.getXRefField())}</a>. 326 */ 327 public void set${JavaName(field)}Label(String label) 328 { 329 _${name(field)}_label = label; 330 //deprecates the object cache 331 _${name(field)}_object = null; 332 } 333 <#elseif type_label="mref"> 334 public void set${JavaName(field)}Labels(java.util.List<String> labels) 335 { 336 _${name(field)}_labels = labels; 337 //deprecates the object cache 328 return _${name(field)}_${label}; 329 } 330 331 public void set${JavaName(field)}_${label}(java.util.List<String> ${name(field)}_${label}) 332 { 333 _${name(field)}_${label} = ${name(field)}_${label}; 334 //clear the object cache 338 335 _${name(field)}_objects = null; 339 } 340 </#if>341 342 <# if type_label == "file" || type_label=="image" >336 } 337 </#list></#if> 338 339 <#elseif type_label == "file" || type_label=="image" > 343 340 /** 344 341 * get${JavaName(field)}() is a textual pointer to a file. get${JavaName(field)}AttachedFile() can be used to retrieve the full paht to this file. … … 357 354 _${name(field)}_file = file; 358 355 } 359 </#if>360 <#--</#if> --> 361 </#foreach>356 </#if> 357 358 </#foreach> 362 359 363 360 /** … … 370 367 if (name.toLowerCase().equals("${name(field)?lower_case}")) 371 368 return get${JavaName(field)}(); 372 <#if field.type == " xref" || field.type == "enum" >373 if(name.toLowerCase().equals("${name(field)?lower_case}_ ${name(field.getXRefLabelString())?lower_case}"))369 <#if field.type == "enum" > 370 if(name.toLowerCase().equals("${name(field)?lower_case}_label")) 374 371 return get${JavaName(field)}Label(); 375 </#if> 376 <#if field.type == "mref"> 377 if(name.toLowerCase().equals("${name(field)?lower_case}_${name(field.getXRefLabelString())?lower_case}")) 378 return get${JavaName(field)}Labels(); 372 <#elseif field.type == "xref" || field.type == "mref"> 373 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 374 if(name.toLowerCase().equals("${name(field)?lower_case}_${label?lower_case}")) 375 return get${JavaName(field)}_${label}(); 376 </#list></#if> 379 377 </#if> 380 378 </#foreach> … … 413 411 </#if> 414 412 <#if f.type == "xref"> 415 //set label for field ${JavaName(f)} 416 this.set${JavaName(f)}Label(tuple.getString("${name(f)}_${name(f.getXRefLabelString())}")); 413 <#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label> 414 //set label ${label} for xref field ${JavaName(f)} 415 this.set${JavaName(f)}_${label}(tuple.getString("${name(f)}_${name(label)}")); 416 </#list></#if> 417 417 </#if> 418 418 </#if> … … 438 438 this.set${JavaName(f)}( values ); 439 439 } 440 //set label for field ${JavaName(f)} 441 if( tuple.getObject("${name(f)}_${name(f.getXRefLabelString())}")!= null ) 440 <#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label> 441 //set labels ${label} for mref field ${JavaName(f)} 442 if( tuple.getObject("${name(f)}_${name(label)}")!= null ) 442 443 { 443 444 java.util.List<String> values = new ArrayList<String>(); 444 java.util.List<Object> mrefs = tuple.getList("${name(f)}_${name( f.getXRefLabelString())}");445 java.util.List<Object> mrefs = tuple.getList("${name(f)}_${name(label)}"); 445 446 if(mrefs != null) for(Object ref: mrefs) 446 447 { 447 448 values.add(ref.toString()); 448 449 } 449 this.set${JavaName(f)}Labels( values ); 450 } 451 <#elseif f.name?lower_case != "type" || !entity.hasAncestor()> 450 this.set${JavaName(f)}_${label}( values ); 451 } 452 </#list></#if> 453 <#elseif f.name?lower_case != "type" || !entity.hasAncestor()> 452 454 //set ${JavaName(f)} 453 455 <#if f.type == "xref"> 454 if( strict || tuple.get${settertype(f)}("${name(f)}_${name(f. getXRefField())}") != null) this.set${JavaName(f)}(tuple.get${settertype(f)}("${name(f)}_${name(f.getXRefField())}"));455 if( tuple.get${settertype(f)}("${name(entity)}.${name(f)}_${name(f. getXRefField())}") != null) this.set${JavaName(f)}(tuple.get${settertype(f)}("${name(entity)}.${name(f)}_${name(f.getXRefField())}"));456 if( strict || tuple.get${settertype(f)}("${name(f)}_${name(f.xrefField)}") != null) this.set${JavaName(f)}(tuple.get${settertype(f)}("${name(f)}_${name(f.xrefField)}")); 457 if( tuple.get${settertype(f)}("${name(entity)}.${name(f)}_${name(f.xrefField)}") != null) this.set${JavaName(f)}(tuple.get${settertype(f)}("${name(entity)}.${name(f)}_${name(f.xrefField)}")); 456 458 //alias of xref 457 459 if( tuple.getObject("${name(f)}") != null) this.set${JavaName(f)}(tuple.get${settertype(f)}("${name(f)}")); 458 460 if( tuple.getObject("${name(entity)}.${name(f)}") != null) this.set${JavaName(f)}(tuple.get${settertype(f)}("${name(entity)}.${name(f)}")); 459 461 //set label for field ${JavaName(f)} 460 if( strict || tuple.getObject("${name(f)}_${name(f.getXRefLabelString())}") != null) this.set${JavaName(f)}Label(tuple.getString("${name(f)}_${name(f.getXRefLabelString())}")); 461 if( tuple.getObject("${name(entity)}.${name(f)}_${name(f.getXRefLabelString())}") != null ) this.set${JavaName(f)}Label(tuple.getString("${name(entity)}.${name(f)}_${name(f.getXRefLabelString())}")); 462 <#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label> 463 if( strict || tuple.getObject("${name(f)}_${name(label)}") != null) this.set${JavaName(f)}_${label}(tuple.getString("${name(f)}_${name(label)}")); 464 if( tuple.getObject("${name(entity)}.${name(f)}_${name(label)}") != null ) this.set${JavaName(f)}_${label}(tuple.getString("${name(entity)}.${name(f)}_${name(label)}")); 465 </#list></#if> 462 466 <#elseif f.type == "nsequence"> 463 467 if( strict || tuple.getNSequence("${name(f)}") != null)this.set${JavaName(f)}(tuple.getNSequence("${name(f)}")); … … 496 500 <#else> 497 501 result+= "${name(field)}='" + get${JavaName(field)}()+"'<#if field_has_next> </#if>"; 498 <#if field.type == "xref"> 499 result+= " ${name(field)}_${name(field.getXRefLabelString())}='" + get${JavaName(field)}Label()+"' "; 500 </#if> 501 <#if field.type == "mref"> 502 result+= " ${name(field)}_${name(field.getXRefLabelString())}='" + get${JavaName(field)}Labels()+"' "; 503 </#if> 504 <#--if field.type == "xref" || field.type == "enum"> 505 if(verbose) result+= " ${name(field)}_options='" + get${JavaName(field)}Options()+"'<#if field_has_next> </#if>"; 506 </#if--> 502 <#if field.type == "xref" || field.type == "mref"> 503 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 504 result+= " ${name(field)}_${name(label)}='" + get${JavaName(field)}_${label}()+"' "; 505 </#list></#if> 506 </#if> 507 507 </#if> 508 508 </#list> … … 535 535 fields.add("${name(field)}"); 536 536 <#if field.type="xref" || field.type="mref"> 537 fields.add("${name(field)}_${name(field.getXRefLabelString())}"); 537 <#if field.xrefLabelNames[0] != field.xrefFieldName><#list field.xrefLabelNames as label> 538 fields.add("${name(field)}_${name(label)}"); 539 </#list></#if> 538 540 </#if> 539 541 </#list> -
molgenis/3.3/src/org/molgenis/generators/R/REntityGen.R.ftl
r2269 r2677 42 42 43 43 <#list skey_fields as f><#if f.type == "xref"> 44 <#assign session_var = ".MOLGENIS$session." + RName(f. getXRefEntity()) + "."+ RName(f.getXRefField())>45 <#assign xref_entity = model.getEntity(f.getXRefEntity())>44 <#assign session_var = ".MOLGENIS$session." + RName(f.xrefEntity) + "."+ RName(f.xrefField)> 45 <#assign xref_entity = f.xrefEntity> 46 46 #add missing xref values from session parameters (optional) 47 if(.usesession && is.null(data_frame$${RName(f)}__${RName(f. getXRefField())}) && !is.null(${session_var}))47 if(.usesession && is.null(data_frame$${RName(f)}__${RName(f.xrefField)}) && !is.null(${session_var})) 48 48 { 49 49 data_frame$${RName(f)} = ${session_var} … … 64 64 65 65 #freely find ${JavaName(entity)} 66 find.${RName(entity)} <- function( <#list allFields(entity) as f><#if f.type="xref">${RName(f)}_${RName(f. getXRefField())}=NULL<#if f.getXRefLabelString()?exists && f.getXRefField() != f.getXRefLabelString()>, ${RName(f)}_${RName(f.getXRefLabelString())}=NULL</#if><#else>${RName(f)}=NULL</#if> <#if f_has_next>, </#if></#list>, .usesession = T, .verbose=T )66 find.${RName(entity)} <- function( <#list allFields(entity) as f><#if f.type="xref">${RName(f)}_${RName(f.xrefField)}=NULL<#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label>, ${RName(f)}_${RName(label)}=NULL</#list></#if><#else>${RName(f)}=NULL</#if> <#if f_has_next>, </#if></#list>, .usesession = T, .verbose=T ) 67 67 { 68 68 #add session parameters 69 69 <#list skey_fields as f><#if f.type == "xref"> 70 <#assign session_var = ".MOLGENIS$session." + RName(f. getXRefEntity()) + "."+ RName(f.getXRefField())>71 <#assign xref_entity = model.getEntity(f.getXRefEntity())>72 if(.usesession && is.null(${RName(f)}_${RName(f. getXRefField())}) && !is.null(${session_var}))70 <#assign session_var = ".MOLGENIS$session." + RName(f.xrefEntity) + "."+ RName(f.xrefField)> 71 <#assign xref_entity = f.xrefEntity> 72 if(.usesession && is.null(${RName(f)}_${RName(f.xrefField)}) && !is.null(${session_var})) 73 73 { 74 ${RName(f)}_${RName(f. getXRefField())} = ${session_var}75 cat("Using ${RName(f)}_${RName(f. getXRefField())} (${RName(pkey(xref_entity))}='",${session_var},"'", sep="")74 ${RName(f)}_${RName(f.xrefField)} = ${session_var} 75 cat("Using ${RName(f)}_${RName(f.xrefField)} (${RName(pkey(xref_entity))}='",${session_var},"'", sep="") 76 76 <#list skeys(xref_entity) as skey><#list key_fields(skey) as f> 77 77 cat(", ${RName(f)}='",.MOLGENIS$session.${RName(xref_entity)}.${RName(f)},"'", sep="") … … 91 91 #add data.frame of ${JavaName(entity)} or each column individually 92 92 #note: each column must have the same length 93 add.${RName(entity)} <- function(.data_frame=NULL<#list allFields(entity) as f><#if f.type="xref">, ${RName(f)}_${RName(f. getXRefField())}=NULL<#if f.getXRefLabelString()?exists && f.getXRefField() != f.getXRefLabelString()>, ${RName(f)}_${RName(f.getXRefLabelString())}=NULL</#if><#elseif !f.auto>, ${RName(f)}=NULL</#if></#list>, .usesession = T, .verbose=T )93 add.${RName(entity)} <- function(.data_frame=NULL<#list allFields(entity) as f><#if f.type="xref">, ${RName(f)}_${RName(f.xrefField)}=NULL<#if f.type="xref">${RName(f)}_${RName(f.xrefField)}=NULL<#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label>, ${RName(f)}_${RName(label)}=NULL</#list></#if></#if><#elseif !f.auto>, ${RName(f)}=NULL</#if></#list>, .usesession = T, .verbose=T ) 94 94 { 95 95 .data_frame = .create.${RName(entity)}(.data_frame, mget(ls(),environment()), .usesession = .usesession, .verbose = .verbose) … … 111 111 #add session parameters 112 112 <#list skey_fields as f><#if f.type == "xref"> 113 <#assign session_var = ".MOLGENIS$session." + RName(f. getXRefEntity()) + "."+ RName(f.getXRefField())>114 <#assign xref_entity = model.getEntity(f.getXRefEntity())>113 <#assign session_var = ".MOLGENIS$session." + RName(f.xrefEntity) + "."+ RName(f.xrefField)> 114 <#assign xref_entity = f.xrefEntity> 115 115 if(is.null(${RName(f)}) && !is.null(${session_var})) 116 116 { -
molgenis/3.3/src/org/molgenis/generators/csv/CsvReaderGen.java.ftl
r2568 r2677 46 46 <#list allFields(entity) as f> 47 47 <#if f.type=="xref" || f.type=="mref"> 48 <#assign xref_entity = model.getEntity(f.getXRefEntity())>48 <#assign xref_entity = f.xrefEntity> 49 49 ${imports(model, xref_entity, "")} 50 50 </#if> … … 57 57 { 58 58 <#assign has_xrefs=false /> 59 <#list allFields(entity) as f><#if (f.type == 'xref' || f.type == 'mref') && f.getX RefLabelString() != f.getXRefField()><#assign has_xrefs=true>60 //foreign key map for field '${name(f)}' (${name(f. getXRefEntity())}.${name(f.getXRefLabelString())} -> ${name(f.getXRefEntity())}.${name(f.getXRefField())})59 <#list allFields(entity) as f><#if (f.type == 'xref' || f.type == 'mref') && f.getXrefLabelNames()[0] != f.xrefFieldName><#assign has_xrefs=true> 60 //foreign key map for field '${name(f)}' (${name(f.xrefEntity)}.${csv(f.xrefLabelNames)} -> ${name(f.xrefEntity)}.${name(f.xrefField)}) 61 61 final Map<String,Integer> ${name(f)}Keymap = new TreeMap<String,Integer>(); 62 62 </#if></#list> … … 69 69 //cache for imported objects 70 70 final List<${JavaName(entity)}> ${name(entity)}List = new ArrayList<${JavaName(entity)}>(BATCH_SIZE); 71 final IntegerWrapper total = new IntegerWrapper(0);71 final IntegerWrapper total = new IntegerWrapper(0); 72 72 reader.setMissingValues(missingValues); 73 73 reader.parse(new CsvReaderListener() … … 81 81 object.set(tuple, false); 82 82 //only override values that have been set. 83 ${name(entity)}List.add(object); 84 <#--need proper secundary key usage!--> 85 <#list allFields(entity) as f><#if (f.type == 'xref') && f.getXRefLabelString() != f.getXRefField()> 86 //foreign key '${name(f)}' (${name(f.getXRefEntity())}.${name(f.getXRefLabelString())} -> ?) 87 if(object.get${JavaName(f)}Label() != null) ${name(f)}Keymap.put(object.get${JavaName(f)}Label(), null); 88 </#if><#if (f.type == 'mref') && f.getXRefLabelString() != f.getXRefField()> 89 if(object.get${JavaName(f)}Labels() != null) for(String mref_label: object.get${JavaName(f)}Labels()) ${name(f)}Keymap.put(mref_label, null); 90 </#if></#list> 83 ${name(entity)}List.add(object); 91 84 92 85 //add in batches … … 94 87 { 95 88 //resolve foreign keys 96 resolveForeignKeys(db, ${name(entity)}List);89 //is this not done elsewhere already? resolveForeignKeys(db, ${name(entity)}List); 97 90 98 91 <#if entity.xref_label?exists> 99 //update objects in the database using secundary key '${entity.xrefLabel}' defined in xref_label100 db.update(${name(entity)}List,dbAction, "${entity.xref_label}");92 //update objects in the database using secundary key(s) '${csv(entity.xrefLabelNames)}' defined in xref_label 93 db.update(${name(entity)}List,dbAction, "${entity.xref_label}"); 101 94 <#elseif entity.getAllKeys()?size > 1> 102 95 //update objects in the database using secundary key(<#list entity.getAllKeys()[1].fields as field><#if field_index != 0>,</#if>${field.name}</#list>) '${entity.getAllKeys()[1].fields[0].name}' … … 117 110 if(!${name(entity)}List.isEmpty()){ 118 111 //resolve remaing foreign keys 119 resolveForeignKeys(db, ${name(entity)}List);112 //is this not done in mapper? resolveForeignKeys(db, ${name(entity)}List); 120 113 <#if entity.xref_label?exists> 121 114 //update objects in the database using secundary key '${entity.xrefLabel}' defined in xref_label … … 137 130 } 138 131 139 private void resolveForeignKeys(Database db, List<${JavaName(entity)}> ${name(entity)}List) throws Exception132 <#-- private void resolveForeignKeys(Database db, List<${JavaName(entity)}> ${name(entity)}List) throws Exception 140 133 { 141 <#list allFields(entity) as f><#if (f.type == 'xref' || f.type == 'mref') && f.getXRefLabelString() != f.getXRefField()> 142 //resolve foreign key '${name(f)}' xref_labels to id (${name(f.getXRefEntity())}.${name(f.getXRefLabelString())} -> ${name(f.getXRefEntity())}.${name(f.getXRefField())}) 134 <#list allFields(entity) as f><#if (f.type == 'xref' || f.type == 'mref') && f.xrefLabels[0] != f.getXRefField()> 135 //resolve foreign key '${name(f)}' xref_labels to id (${name(f.getXRefEntity())}.${csv(f.getXRefLabelString())} -> ${name(f.getXRefEntity())}.${name(f.getXRefField())}) 136 137 / 138 143 139 List<${JavaName(f.XRefEntity)}> ${name(f)}List = db.query(${JavaName(f.getXRefEntity())}.class).in("${f.getXRefLabelString()}",new ArrayList<Object>(${name(f)}Keymap.keySet())).find(); 144 140 for(${JavaName(f.XRefEntity)} xref : ${name(f)}List) … … 175 171 ${name(f)}Keymap.clear(); 176 172 </#if></#list> 177 } 173 }--> 178 174 } 179 175 -
molgenis/3.3/src/org/molgenis/generators/db/JDBCDatabaseGen.java.ftl
r2393 r2677 23 23 import javax.sql.DataSource; 24 24 25 import org.molgenis.MolgenisOptions; 25 26 import org.molgenis.framework.db.DatabaseException; 26 27 import org.molgenis.framework.db.jdbc.DataSourceWrapper; … … 45 46 this.setup(); 46 47 } 48 49 public JDBCDatabase(MolgenisOptions options) 50 { 51 super(options); 52 this.setup(); 53 } 54 55 public JDBCDatabase() 56 { 57 super(new MolgenisOptions()); 58 this.setup(); 59 } 47 60 48 61 public JDBCDatabase(String propertiesFilePath) throws FileNotFoundException, IOException, DatabaseException -
molgenis/3.3/src/org/molgenis/generators/db/JDBCMetaDatabaseGen.java.ftl
r2382 r2677 29 29 package ${package}; 30 30 31 import java.util.Arrays; 32 31 33 import org.molgenis.framework.db.DatabaseException; 32 34 import org.molgenis.model.elements.Entity; … … 56 58 <#list entity.getFields() as field><#if field.name?lower_case != "type"> 57 59 Field ${name(entity)}_${name(field)}_field = new Field(${name(entity)}_entity, "${field.name}", Field.Type.getType("${field.type}")); 58 <#if field.type == "xref" || field.type == "mref">${name(entity)}_${name(field)}_field.setXRefVariables("${field.XRefEntity}", "${field.XRefField}","${field.XRefLabelString}");</#if> 60 <#if field.auto> 61 ${name(entity)}_${name(field)}_field.setAuto(true); 62 </#if> 63 <#if field.type == "xref" || field.type == "mref">${name(entity)}_${name(field)}_field.setXRefVariables("${field.xrefEntityName}", "${field.xrefFieldName}",Arrays.asList(new String[]{${csv(field.xrefLabelNames)}}));</#if> 59 64 ${name(entity)}_entity.addField(${name(entity)}_${name(field)}_field); 60 65 </#if></#list> … … 63 68 </#list></#if></#list> 64 69 65 <#list entities as entity><#if !entity.abstract >70 <#list entities as entity><#if !entity.abstract && !entity.association> 66 71 Entity ${name(entity)}_entity = new Entity("${entity.name}",this.getDatabase());<#if entity.hasImplements()> 67 72 ${name(entity)}_entity.setImplements(new String[]{${csv(entity.implements)}});</#if><#if entity.hasAncestor()> … … 69 74 <#list entity.getFields() as field><#if field.name?lower_case != "type"> 70 75 Field ${name(entity)}_${name(field)}_field = new Field(${name(entity)}_entity, "${field.name}", Field.Type.getType("${field.type}")); 71 <#if field.type == "xref" || field.type == "mref">${name(entity)}_${name(field)}_field.setXRefVariables("${field.XRefEntity}", "${field.XRefField}","${field.XRefLabelString}");</#if> 76 <#if field.auto> 77 ${name(entity)}_${name(field)}_field.setAuto(true); 78 </#if> 79 <#if field.type == "xref" || field.type == "mref">${name(entity)}_${name(field)}_field.setXRefVariables("${field.xrefEntityName}", "${field.xrefFieldName}",Arrays.asList(new String[]{${csv(field.xrefLabelNames)}}));</#if> 72 80 ${name(entity)}_entity.addField(${name(entity)}_${name(field)}_field); 73 81 </#if></#list> -
molgenis/3.3/src/org/molgenis/generators/db/MapperCommons.subclass_per_table.java.ftl
r2571 r2677 40 40 return "SELECT <#list viewFields(entity) as f>${SqlName(f.entity)}.${SqlName(f)}<#if f_has_next>" 41 41 +", </#if></#list>"<#list viewFields(entity,"xref") as f> 42 +", xref${f_index}.${SqlName(f.getXRefLabelString())} AS ${SqlName(f)}_${SqlName(f.getXRefLabelString())}"</#list> 42 <#list f.xrefLabelNames as label>+", xref${f_index}.${SqlName(label)} AS ${SqlName(f)}_${SqlName(label)}" 43 </#list></#list> 43 44 +" FROM ${SqlName(entity)} "<#list superclasses(entity)?reverse as superclass><#if name(superclass) != name(entity)> 44 45 +" INNER JOIN ${SqlName(superclass)} ON (${SqlName(entity)}.${SqlName(pkey(entity))} = ${SqlName(superclass)}.${SqlName(pkey(entity))})"</#if></#list> 45 46 <#list viewFields(entity,"xref") as f> 46 <#assign xref_entity = model.getEntity(f.getXRefEntity())/>47 <#assign xref_field = xref_entity.getField(f.getXRefField())/>48 <# assign xref_label = xref_entity.getAllField(f.getXRefLabelString()) /><#--can be from supertype!!-->49 <#if name(xref_field.entity) != name( xref_label.entity)>+" LEFT JOIN ${SqlName(xref_label.entity)} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}"50 <#else>+" LEFT JOIN ${SqlName(f. getXRefEntity())} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}"</#if></#list>;47 <#assign xref_entity = f.xrefEntity /> 48 <#assign xref_field = f.xrefField /> 49 <#list f.xrefLabels as labelField><#--can be from supertype!!--> 50 <#if name(xref_field.entity) != name(labelField.entity)>+" LEFT JOIN ${SqlName(labelField.entity)} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}" 51 <#else>+" LEFT JOIN ${SqlName(f.xrefEntity)} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}"</#if></#list></#list>; 51 52 } 52 53 … … 56 57 +" FROM ${SqlName(entity)} "<#list superclasses(entity)?reverse as superclass><#if name(superclass) != name(entity)> 57 58 +" INNER JOIN ${SqlName(superclass)} ON (${SqlName(entity)}.${SqlName(pkey(entity))} = ${SqlName(superclass)}.${SqlName(pkey(entity))})"</#if></#list><#list viewFields(entity,"xref") as f> 58 <#assign xref_entity = model.getEntity(f.getXRefEntity())/>59 <#assign xref_field = xref_entity.getField(f.getXRefField())/>60 <# assign xref_label = xref_entity.getAllField(f.getXRefLabelString()) /><#--can be from supertype!!-->61 <#if name(xref_field.entity) != name( xref_label.entity)>+" LEFT JOIN ${SqlName(xref_label.entity)} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}"62 <#else>+" LEFT JOIN ${SqlName(f. getXRefEntity())} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}"</#if></#list>;59 <#assign xref_entity = f.xrefEntity/> 60 <#assign xref_field = f.xrefField/> 61 <#list f.xrefLabels as labelField><#--can be from supertype!!--> 62 <#if name(xref_field.entity) != name(labelField.entity)>+" LEFT JOIN ${SqlName(labelField.entity)} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}" 63 <#else>+" LEFT JOIN ${SqlName(f.xrefEntity)} AS xref${f_index} ON ${SqlName(f.getEntity())}.${SqlName(f)}=xref${f_index}.${SqlName(xref_field)}"</#if></#list></#list>; 63 64 } 64 65 … … 71 72 </#list> 72 73 <#list viewFields(entity,"xref") as f> 73 <#assign xref_entity = model.getEntity(f.getXRefEntity())/> 74 <#assign xref_field = xref_entity.getField(f.getXRefField())/> 75 <#assign xref_label = xref_entity.getAllField(f.getXRefLabelString()) /><#--can be from supertype!!--> 74 <#assign xref_entity = f.xrefEntity/> 75 <#assign xref_field = f.xrefField/> 76 76 //alias for query on id field of xref entity 77 77 if("${name(f)}_${name(xref_field)}".equalsIgnoreCase(fieldName)) return "${SqlName(f.entity)}.${SqlName(f)}"; 78 //alias for query on label of the xref entity 79 if("${name(f)}_${name(xref_label)}".equalsIgnoreCase(fieldName)) return "xref${f_index}.${SqlName(xref_label)}"; 78 //alias(es) for query on label of the xref entity 79 <#list f.xrefLabelNames as label> 80 if("${name(f)}_${name(label)}".equalsIgnoreCase(fieldName)) return "xref${f_index}.${SqlName(label)}"; 81 </#list> 80 82 </#list> 81 83 return fieldName; … … 88 90 <#assign type= f.type> 89 91 <#if type == "user" || type == "xref" || type == "mref"> 90 <#assign type = model.getEntity(f.getXRefEntity()).getField(f.getXRefField()).getType()/>92 <#assign type = f.xrefField.type/> 91 93 if("${name(f)}".equalsIgnoreCase(fieldName) || "${name(f.entity)}.${name(f)}".equalsIgnoreCase(fieldName)) return Type.${type?upper_case}; 92 94 if("${name(f)}_${name(xref_label)}".equalsIgnoreCase(fieldName) || "${name(f.entity)}.${name(f)}_${name(xref_label)}".equalsIgnoreCase(fieldName)) return Type.STRING; … … 102 104 { 103 105 <#assign has_xrefs=false> 104 <#list allFields(entity) as f><#if f.type == 'xref' && f.getXRefLabelString() != f.getXRefField()><#assign has_xrefs=true> 105 //create foreign key map for field '${name(f)}' (${name(f.getXRefEntity())}.${name(f.getXRefLabelString())} -> ${name(f.getXRefEntity())}.${name(f.getXRefField())}) 106 final java.util.Map<String,Integer> ${name(f)}Keymap = new java.util.TreeMap<String,Integer>(); 106 <#list allFields(entity) as f><#if f.type == 'xref' && f.xrefLabelNames[0] != f.xrefFieldName><#assign has_xrefs=true> 107 //create foreign key map for field '${name(f)}' to ${name(f.xrefEntity)}.${name(f.xrefField)} using ${csv(f.xrefLabelNames)}) 108 //we will use a hash of the values to ensure that entities are only queried once 109 final java.util.Map<String,QueryRule> ${name(f)}Rules = new java.util.TreeMap<String,QueryRule>(); 107 110 </#if></#list> 108 111 <#if has_xrefs> 109 // find all keys to be mapped112 //create all query rules 110 113 for(${JavaName(entity)} object: entities) 111 114 { 112 <#list allFields(entity) as f><#if f.type == 'xref' && f.getXRefLabelString() != f.getXRefField()> 113 //foreign key '${name(f)}' (${name(f.getXRefEntity())}.${name(f.getXRefLabelString())} -> ?) 114 if(object.get${JavaName(f)}Label() != null) ${name(f)}Keymap.put(object.get${JavaName(f)}Label(), null); 115 <#list allFields(entity) as f><#if f.type == 'xref' && f.xrefLabelNames[0] != f.xrefFieldName> 116 <#if f.xrefLabelNames?size > 1> 117 //create xref rule filtering on the combination of labels ${csv(f.xrefLabelNames)} 118 { 119 List<QueryRule> rules = new ArrayList<QueryRule>(); 120 String key = ""; 121 <#list f.xrefLabelNames as label> 122 rules.add(new QueryRule("${f.name}_${label}", Operator.EQUALS, object.get${JavaName(f)}_${label}())); 123 key += object.get${JavaName(f)}_${label}(); 124 </#list> 125 QueryRule complexRule = new QueryRule(rules); 126 nestedRule.or(true); 127 ${name(f)}Rules.put(key, nestedRule); 128 } 129 <#else> 130 //create xref rule filtering on the label ${csv(f.xrefLabelNames)} 131 { 132 QueryRule xrefFilter = new QueryRule("${f.name}_${f.xrefLabelNames[0]}", Operator.EQUALS, object.get${JavaName(f)}_${f.xrefLabelNames[0]}()); 133 xrefFilter.setOr(true); 134 ${name(f)}Rules.put(object.get${JavaName(f)}_${f.xrefLabelNames[0]}(), xrefFilter); 135 } 136 </#if> 115 137 </#if></#list> 116 138 } 117 139 118 <#list allFields(entity) as f><#if f.type == 'xref' && f.getXRefLabelString() != f.getXRefField()> 119 //resolve foreign key '${name(f)}' (${name(f.getXRefEntity())}.${name(f.getXRefLabelString())} -> ${name(f.getXRefEntity())}.${name(f.getXRefField())}) 120 List<${JavaName(f.XRefEntity)}> ${name(f)}List = getDatabase().query(${JavaName(f.getXRefEntity())}.class).in("${f.getXRefLabelString()}",new ArrayList<Object>(${name(f)}Keymap.keySet())).find(); 121 for(${JavaName(f.XRefEntity)} xref : ${name(f)}List) 122 { 123 ${name(f)}Keymap.put(xref.get${JavaName(f.getXRefLabelString())}().toString(), xref.get${JavaName(f.getXRefField())}()); 124 } 140 <#list allFields(entity) as f><#if f.type == 'xref' && f.xrefLabelNames[0] != f.xrefFieldName> 141 //resolve foreign key field '${name(f)}' to ${name(f.xrefEntity)}.${name(f.xrefField)} using ${csv(f.xrefLabelNames)}) 142 final java.util.Map<String,Integer> ${name(f)}_Labels_to_IdMap = new java.util.TreeMap<String,Integer>(); 143 <#list f.xrefLabelNames as label> 144 145 List<${JavaName(f.xrefEntity)}> ${name(f)}List = getDatabase().find(${JavaName(f.xrefEntity)}.class, (QueryRule[])${name(f)}Rules.values().toArray()); 146 for(${JavaName(f.xrefEntity)} xref : ${name(f)}List) 147 { 148 String key = ""; 149 <#list f.xrefLabelNames as label> 150 key += xref.get${JavaName(label)}(); 151 </#list> 152 ${name(f)}_Labels_to_IdMap.put(key, xref.get${JavaName(f.xrefField)}()); 153 } 154 </#list> 125 155 </#if></#list> 126 156 … … 129 159 { 130 160 ${JavaName(entity)} object = entities.get(i); 131 <#list allFields(entity) as f><#if f.type == 'xref' && f.getXRefLabelString() != f.getXRefField()> 132 if(object.get${JavaName(f)}Label() != null) 133 { 134 if(${name(f)}Keymap.get(object.get${JavaName(f)}Label()) == null) throw new DatabaseException("Cannot find ${f.getXRefEntity()} for ${name(f)}_${name(f.getXRefLabelString())} '"+object.get${JavaName(f)}Label()+"'"); 135 object.set${JavaName(f)}(${name(f)}Keymap.get(object.get${JavaName(f)}Label())); 161 <#list allFields(entity) as f><#if f.type == 'xref' && f.xrefLabelNames[0] != f.xrefFieldName> 162 //update object using label fields ${csv(f.xrefLabelNames)} 163 { 164 String key = ""; 165 <#list f.xrefLabelNames as label> 166 key += object.get${JavaName(f)}_${label}(); 167 object.set${JavaName(f)}(${name(f)}_Labels_to_IdMap.get(key)); 168 </#list> 136 169 } 137 170 </#if></#list> 138 entities.set(i, object);171 139 172 } 140 173 </#if> … … 172 205 } 173 206 } 174 else if("${field.name}_${field.getXRefLabelString()}".equalsIgnoreCase(rule.getField())) 207 <#list field.xrefLabelNames as label> 208 else if("${field.name}_${label}".equalsIgnoreCase(rule.getField())) 175 209 { 176 210 // replace with id filter based on the many-to-many links in 177 211 // ${field.getMrefName()} 178 212 List<${JavaName(field.getMrefName())}> mref_mapping_entities = db.find(${JavaName(field.getMrefName())}.class, new QueryRule( 179 "${SqlName(field. getXRefEntity())}_${SqlName(field.getXRefLabelString())}", rule.getOperator(), rule.getValue()));213 "${SqlName(field.xrefEntity)}_${SqlName(label)}", rule.getOperator(), rule.getValue())); 180 214 if (mref_mapping_entities.size() > 0) 181 215 { … … 190 224 } 191 225 } 226 </#list> 192 227 <#assign else = true> 193 228 </#if> -
molgenis/3.3/src/org/molgenis/generators/db/MapperMrefs.java.ftl
r2665 r2677 24 24 //assign ids 25 25 List<Integer> ids = new ArrayList<Integer>(); 26 List<String> labels = new ArrayList<String>(); 26 <#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label> 27 List<String> ${label}List = new ArrayList<String>(); 28 </#list></#if> 27 29 for(${JavaName(mref_entity)} ref: existing_mrefs) 28 30 { 29 31 ids.add(ref.get${JavaName(mref_remote_field)}()); 30 labels.add(ref.get${JavaName(mref_remote_field)}Label()); 32 <#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label> 33 ${label}List.add(ref.get${JavaName(mref_remote_field)}_${label}()); 34 </#list></#if> 31 35 } 32 36 entity.set${JavaName(f)}(ids); 33 entity.set${JavaName(f)}Labels(labels);34 //put it back (grrr)35 entities.set(i,entity);37 <#if f.xrefLabelNames[0] != f.xrefFieldName><#list f.xrefLabelNames as label> 38 entity.set${JavaName(f)}_${label}(${label}List); 39 </#list></#if> 36 40 } 37 41 } … … 54 58 { 55 59 //retrieve currently known mrefs 56 QueryRule rule = new QueryRule( "${ name(mref_local_field)}", QueryRule.Operator.EQUALS, entity.get${JavaName(f)}() );57 List<${ mref_entity}> existing_mrefs = getDatabase().find( ${mref_entity}.class, rule );60 QueryRule rule = new QueryRule( "${mref_local_field}", QueryRule.Operator.EQUALS, entity.get${JavaName(pkey(entity))}() ); 61 List<${JavaName(mref_entity)}> existing_mrefs = getDatabase().find( ${JavaName(mref_entity)}.class, rule ); 58 62 59 63 // check for removals … … 71 75 for (Integer ref : entity.get${JavaName(f)}()) 72 76 { 73 74 ${mref_entity} new_mref = new ${mref_entity}(); 75 new_mref.set${JavaName(mref_local_field)}( entity.get${JavaName(pkey(entity))}() ); 76 new_mref.set${JavaName(mref_remote_field)}( ref ); 77 if (!existing_mrefs.contains( new_mref )) 77 if(!existing_ids.contains(ref)) 78 78 { 79 ${JavaName(mref_entity)} new_mref 1= new ${JavaName(mref_entity)}();80 new_mref 1.set${JavaName(mref_local_field)}( entity.get${JavaName(pkey(entity))}() );81 new_mref 1.set${JavaName(mref_remote_field)}( ref );82 toAdd.add( new_mref 1);79 ${JavaName(mref_entity)} new_mref = new ${JavaName(mref_entity)}(); 80 new_mref.set${JavaName(mref_local_field)}( entity.get${JavaName(pkey(entity))}() ); 81 new_mref.set${JavaName(mref_remote_field)}( ref ); 82 toAdd.add( new_mref ); 83 83 } 84 84 } … … 105 105 { 106 106 //retrieve currently known mrefs 107 QueryRule rule = new QueryRule( "${name(mref_local_field)}", QueryRule.Operator.EQUALS, entity.get${JavaName( f)}() );108 List<${ mref_entity}> existing_mrefs = getDatabase().find( ${mref_entity}.class, rule );107 QueryRule rule = new QueryRule( "${name(mref_local_field)}", QueryRule.Operator.EQUALS, entity.get${JavaName(pkey(entity))}() ); 108 List<${JavaName(mref_entity)}> existing_mrefs = getDatabase().find( ${JavaName(mref_entity)}.class, rule ); 109 109 110 110 // check for removals -
molgenis/3.3/src/org/molgenis/generators/db/MultiqueryMapperGen.java.ftl
r2664 r2677 60 60 <#list entity.getAllFields() as f> 61 61 <#if f.type=="xref" || f.type=="mref"> 62 <#assign xref_entity = model.getEntity(f.getXRefEntity())>62 <#assign xref_entity = f.xrefEntity> 63 63 import ${xref_entity.getNamespace()}.${JavaName(xref_entity)}; 64 64 <#if f.type=="mref"><#assign mref_entity = model.getEntity(f.mrefName)> -
molgenis/3.3/src/org/molgenis/generators/doc/DotDocGen.java.ftl
r2630 r2677 62 62 </#if> 63 63 64 label = "{<#if entity.abstract>Interface:</#if>${JavaName(entity)}<#if entity.hasImplements()>\n implements ${csv(entity.getImplements())}</#if><#if entity.hasAncestor()>\n extends ${name(entity.getAncestor())}</#if>|<#list entity.implementedFields as f><#if !f.system>${name(f)} : ${f.type}<#if f.type=="xref" || f.type="mref">->${name(f. getXRefEntity())}</#if><#if !f.nillable>*</#if>\l</#if></#list>}"64 label = "{<#if entity.abstract>Interface:</#if>${JavaName(entity)}<#if entity.hasImplements()>\n implements ${csv(entity.getImplements())}</#if><#if entity.hasAncestor()>\n extends ${name(entity.getAncestor())}</#if>|<#list entity.implementedFields as f><#if !f.system>${name(f)} : ${f.type}<#if f.type=="xref" || f.type="mref">->${name(f.xrefEntity)}</#if><#if !f.nillable>*</#if>\l</#if></#list>}" 65 65 ] 66 66 … … 93 93 </#if> 94 94 95 label = "{<#if entity.abstract>Interface:</#if>${JavaName(entity)}<#if entity.hasImplements()>\n implements ${csv(entity.getImplements())}</#if><#if entity.hasAncestor()>\n extends ${name(entity.getAncestor())}</#if>|<#list entity.implementedFields as f><#if !f.system>${name(f)} : ${f.type}<#if f.type=="xref" || f.type="mref">->${name(f. getXRefEntity())}</#if><#if !f.nillable>*</#if>\l</#if></#list>}"95 label = "{<#if entity.abstract>Interface:</#if>${JavaName(entity)}<#if entity.hasImplements()>\n implements ${csv(entity.getImplements())}</#if><#if entity.hasAncestor()>\n extends ${name(entity.getAncestor())}</#if>|<#list entity.implementedFields as f><#if !f.system>${name(f)} : ${f.type}<#if f.type=="xref" || f.type="mref">->${name(f.xrefEntity)}</#if><#if !f.nillable>*</#if>\l</#if></#list>}" 96 96 ] 97 97 </#if></#list> … … 131 131 <#list entity.fields as f> 132 132 <#if f.type=="xref"> 133 "${JavaName(entity)}" -> "${JavaName(f. XRefEntity)}" [133 "${JavaName(entity)}" -> "${JavaName(f.xrefEntity)}" [ 134 134 headlabel = "<#if f.nillable>0..</#if>1" 135 135 taillabel = "*" … … 156 156 <#list entity.fields as f > 157 157 <#if f.type=="mref"> 158 "${JavaName(f. XRefEntity)}" -> "${JavaName(entity)}"[158 "${JavaName(f.xrefEntity)}" -> "${JavaName(entity)}"[ 159 159 ] 160 160 <#assign mref_names = mref_names + [f.getMrefName()]> -
molgenis/3.3/src/org/molgenis/generators/doc/DotDocMinimalGen.java.ftl
r1975 r2677 113 113 <#if !entity.system> 114 114 <#list entity.fields as f> 115 <#if f.type=="xref" && entities?seq_contains( model.getEntity(f.getXRefEntity())) && !model.getEntity(f.getXRefEntity()).system>116 "${name(entity)}" -> "${f. getXRefEntity()}"115 <#if f.type=="xref" && entities?seq_contains(f.xrefEntity) && !f.xrefEntity.system> 116 "${name(entity)}" -> "${f.xrefEntity}" 117 117 </#if> 118 118 </#list> … … 134 134 <#if !entity.system> 135 135 <#list entity.fields as f > 136 <#if f.type=="mref" && entities?seq_contains( model.getEntity(f.getXRefEntity())) && !model.getEntity(f.getXRefEntity()).system>136 <#if f.type=="mref" && entities?seq_contains(f.xrefEntity) && !f.xrefEntity.system> 137 137 <#if !mref_names?seq_contains(f.getMrefName())> 138 "${f. getXRefEntity()}" -> "${name(entity)}"138 "${f.xrefEntity}" -> "${name(entity)}" 139 139 <#assign mref_names = mref_names + [f.getMrefName()]> 140 140 </#if> -
molgenis/3.3/src/org/molgenis/generators/doc/EntityModelDocGen.java.ftl
r2268 r2677 40 40 <td ${color}> 41 41 <#if field.type=="xref"> 42 references(${field. getXRefEntity()}.${field.getXRefField()}),42 references(${field.xrefEntityName}.${field.xrefFieldName}), 43 43 <#elseif field.type=="mref"> 44 references-many(${field. getXRefEntity()}.${field.getXRefField()}),</#if>44 references-many(${field.xrefEntityName}.${field.xrefFieldName}),</#if> 45 45 <#if field.isNillable()><#else>not null, </#if> 46 46 <#if field.isAuto()>auto, <#else></#if> -
molgenis/3.3/src/org/molgenis/generators/doc/FileFormatDocGen.java.ftl
r2561 r2677 1 <#include "GeneratorHelper.ftl"> 1 2 <#function csv items> 2 3 <#local result = ""> … … 16 17 <#macro render_field field> 17 18 <tr> 18 <td width="150">${field.name?lower_case}<#if field.type == "xref" || field.type =="mref">_${ field.getXRefLabelString()?lower_case}</#if></td>19 <td width="150">${field.name?lower_case}<#if field.type == "xref" || field.type =="mref">_${csv(field.xrefLabelNames)}</#if></td> 19 20 <td width="50">${field.type}</td> 20 21 <td width="20"><#if !field.isNillable() && !field.isAuto()>Y<#else> </#if></td> 21 <td><#if field.description != "">${field.description}.<br/></#if><#if field.type == "xref" || field.type =="mref"> Requires a matching value in column '${field.getXRefLabelString()?lower_case}' in <a href="#${field.getXRefEntity()}_entity">${field.getXRefEntity()?lower_case}.txt</a> for each reference22 <td><#if field.description != "">${field.description}.<br/></#if><#if field.type == "xref" || field.type =="mref"> Requires a matching value in column(s) '${csv(field.xrefLabelNames)?lower_case}' in <a href="#${name(field.xrefEntity)}_entity">${name(field.xrefEntity)}.txt</a> for each reference 22 23 <#if field.type="mref">. <br/>More than one reference can be added separated by '|', for example: ref1|ref2|ref3.</#if></#if>.</td> 23 24 </tr> -
molgenis/3.3/src/org/molgenis/generators/doc/ObjectModelDocGen.java.ftl
r2630 r2677 26 26 <#assign attributes = false> 27 27 <#assign inherited_attributes = false> 28 <#assign unique_constraints = false> 28 29 <#list entity.fields as field> 29 30 <#if field.type == "xref" || field.type=="mref"> … … 35 36 <#list entity.inheritedFields as field> 36 37 <#if !field.system><#assign inherited_attributes = true></#if> 38 </#list> 39 <#list entity.keys as key> 40 <#assign unique_constraints= true> 37 41 </#list> 38 42 <#if inherited_attributes> … … 75 79 <td ${color}> 76 80 <b>${field.name}</b>: <#if field.type=="xref"> 77 ${field. getXRefEntity()} (<#if field.nillable>0<#else>1</#if>..1)81 ${field.xrefEntity.name} (<#if field.nillable>0<#else>1</#if>..1) 78 82 <#elseif field.type=="mref"> 79 ${field. getXRefEntity()} (<#if field.nillable>0<#else>1</#if>..n)</#if>83 ${field.xrefEntity.name} (<#if field.nillable>0<#else>1</#if>..n)</#if> 80 84 </td> 81 85 </tr> … … 83 87 </#if> 84 88 </#list> 89 </table> 90 </#if> 91 <#if unique_constraints> 92 <p> 93 <u>Constraints:</u> 94 <table> 95 <#list entity.keys as key> 96 <tr> 97 <td ${color}> 98 <b>unique(${csv(key.fields)})</b>: 99 </td> 100 </tr> 101 <tr><td style="padding-left: 50px;"> 102 <#if key.description?exists>${key.description}<#elseif key.fields?size > 1>The combination of fields ${csv(key.fields)} is unique within an ${entity.name}<#else>Field ${csv(key.fields)} is unique within an ${entity.name}</#if>. 103 </td></tr> 104 </#list> 105 </p> 85 106 </table> 86 107 </#if> -
molgenis/3.3/src/org/molgenis/generators/doc/TableDocGen.java.ftl
r1851 r2677 102 102 ENUM options: ${csv( field.getEnumOptions() )} 103 103 <#elseif field.type=="xref"> 104 References(${field. getXRefEntity()})104 References(${field.xrefEntityName}) 105 105 <#elseif field.type=="mref"> 106 References(${field. getXRefEntity()}) via linktable.106 References(${field.xrefEntityName}) via linktable. 107 107 <#else> 108 108 -
molgenis/3.3/src/org/molgenis/generators/doc/TextUmlGen.java.ftl
r2561 r2677 54 54 55 55 association 56 navigable role ${field.name}: ${field. XRefField}[*];56 navigable role ${field.name}: ${field.xrefField}[*]; 57 57 role : ${entity.name}[1]; 58 58 end; … … 60 60 61 61 association 62 navigable role ${field.name}: ${field. XRefField}[*];62 navigable role ${field.name}: ${field.xrefField}[*]; 63 63 role : ${entity.name}[*]; 64 64 end; -
molgenis/3.3/src/org/molgenis/generators/fieldtypes/MrefField.java
r2315 r2677 10 10 public String getJavaPropertyType() throws MolgenisModelException 11 11 { 12 Entity e_ref = this.getEntityByName(f.getXRefEntity());13 Field f_ref = e_ref.getField(f.getXRefField());12 Entity e_ref = f.getXrefEntity(); 13 Field f_ref = f.getXrefField(); 14 14 return "java.util.List<"+getFieldType(f_ref).getJavaPropertyType()+">"; 15 15 } … … 18 18 public String getJavaPropertyDefault() throws MolgenisModelException 19 19 { 20 Entity e_ref = this.getEntityByName(f.getXRefEntity());21 Field f_ref = e_ref.getField(f.getXRefField());20 Entity e_ref = f.getXrefEntity(); 21 Field f_ref = f.getXrefField(); 22 22 //if(f.getDefaultValue() == null || f.getDefaultValue() == "") "new java.util.ArrayList<"+getFieldType(f_ref).getJavaPropertyType(f_ref)+">()"; 23 23 //FIXME can there be defaults here? … … 28 28 public String getJavaSetterType() throws MolgenisModelException 29 29 { 30 Entity e_ref = this.getEntityByName(f.getXRefEntity());31 Field f_ref = e_ref.getField(f.getXRefField());30 Entity e_ref = f.getXrefEntity(); 31 Field f_ref = f.getXrefField(); 32 32 return "new java.util.ArrayList<"+getFieldType(f_ref).getJavaSetterType()+">()"; 33 33 } … … 37 37 { 38 38 //FIXME this function should be never called??? 39 return getFieldType( getEntityByName(f.getXRefEntity()).getField(f.getXRefField())).getMysqlType();39 return getFieldType(f.getXrefField()).getMysqlType(); 40 40 } 41 41 … … 43 43 public String getHsqlType() throws MolgenisModelException 44 44 { 45 return getFieldType( getEntityByName(f.getXRefEntity()).getField(f.getXRefField())).getHsqlType();45 return getFieldType(f.getXrefField()).getHsqlType(); 46 46 } 47 47 -
molgenis/3.3/src/org/molgenis/generators/fieldtypes/XrefField.java
r2315 r2677 11 11 public String getJavaPropertyType() throws MolgenisModelException 12 12 { 13 Entity e_ref = this.getEntityByName(f.getXRefEntity());14 Field f_ref = e_ref.getField(f.getXRefField());13 Entity e_ref = f.getXrefEntity(); 14 Field f_ref = f.getXrefField(); 15 15 return getFieldType(f_ref).getJavaPropertyType(); 16 16 } … … 27 27 { 28 28 29 return getFieldType( getEntityByName(f.getXRefEntity()).getField(f.getXRefField())).getJavaSetterType();29 return getFieldType(f.getXrefField()).getJavaSetterType(); 30 30 } 31 31 … … 34 34 { 35 35 36 return getFieldType( getEntityByName(f.getXRefEntity()).getField(f.getXRefField())).getMysqlType();36 return getFieldType(f.getXrefField()).getMysqlType(); 37 37 } 38 38 … … 40 40 public String getHsqlType() throws MolgenisModelException 41 41 { 42 return getFieldType( getEntityByName(f.getXRefEntity()).getField(f.getXRefField())).getHsqlType();42 return getFieldType(f.getXrefField()).getHsqlType(); 43 43 } 44 44 } -
molgenis/3.3/src/org/molgenis/generators/server/SoapApiGen.java.ftl
r2324 r2677 63 63 @WebResult(name = "${name(entity)}List") 64 64 public List<${JavaName(entity)}> find${JavaName(entity)}(<#list allFields(entity) as f><#assign type_label = f.getType().toString()> 65 @WebParam(name = "${name(f)}") ${type(f)} ${name(f)}<#if (type_label == " user" || type_label == "xref" || type_label == "mref" || type_label == "enum") && f.getXRefLabelString() != "">,66 @WebParam(name = "${name(f)}_${f.getXRefLabelString()}") ${type(f)} ${name(f)}_${f.getXRefLabelString()}</#if><#if f_has_next>,</#if></#list>)65 @WebParam(name = "${name(f)}") ${type(f)} ${name(f)}<#if (type_label == "xref" || type_label == "mref") && f.xrefLabelNames[0] != f.xrefFieldName >, 66 <#list f.xrefLabelNames as label>@WebParam(name = "${name(f)}_${label}") ${type(f)} ${name(f)}_${label}</#list></#if><#if f_has_next>,</#if></#list>) 67 67 { 68 68 try … … 84 84 @WebResult(name = "${name(entity)}Csv") 85 85 public String find${JavaName(entity)}Csv(<#list allFields(entity) as f><#assign type_label = f.getType().toString()> 86 @WebParam(name = "${name(f)}") ${type(f)} ${name(f)}<#if (type_label == "user" || type_label == "xref" || type_label == "mref" || type_label == "enum") && f.getXRefLabelString() != "">,87 @WebParam(name = "${name(f)}_${f.getXRefLabelString()}") ${type(f)} ${name(f)}_${f.getXRefLabelString()}</#if><#if f_has_next>,</#if></#list>)86 @WebParam(name = "${name(f)}") ${type(f)} ${name(f)}<#if (type_label == "user" || type_label == "xref" || type_label == "mref" ) && f.xrefLabelNames[0] != f.xrefFieldName >, 87 <#list f.xrefLabelNames as label>@WebParam(name = "${name(f)}_${label}") ${type(f)} ${name(f)}_${label}</#list></#if><#if f_has_next>,</#if></#list>) 88 88 { 89 89 try -
molgenis/3.3/src/org/molgenis/generators/sql/MySqlAlterSubclassPerTableGen.mysql.ftl
r2133 r2677 111 111 <#list entities as entity><#if !entity.isAbstract()> 112 112 <#list dbFields(entity) as f><#if f.type == "xref"> 113 ALTER TABLE ${SqlName(entity)} ADD FOREIGN KEY (${SqlName(f)}) REFERENCES ${SqlName( model.getEntity(f.XRefEntity))} (${SqlName(f.XRefField)}) ON DELETE RESTRICT;113 ALTER TABLE ${SqlName(entity)} ADD FOREIGN KEY (${SqlName(f)}) REFERENCES ${SqlName(f.xrefEntity)} (${SqlName(f.xrefField)}) ON DELETE RESTRICT; 114 114 </#if></#list> 115 115 </#if></#list> -
molgenis/3.3/src/org/molgenis/generators/sql/MySqlCreateSubclassPerTableGen.mysql.ftl
r1931 r2677 73 73 <#list entities as entity><#if !entity.isAbstract()> 74 74 <#list dbFields(entity) as f><#if f.type == "xref"> 75 ALTER TABLE ${SqlName(entity)} ADD FOREIGN KEY (${SqlName(f)}) REFERENCES ${SqlName( model.getEntity(f.XRefEntity))} (${SqlName(f.XRefField)}) ON DELETE RESTRICT;75 ALTER TABLE ${SqlName(entity)} ADD FOREIGN KEY (${SqlName(f)}) REFERENCES ${SqlName(f.xrefEntity)} (${SqlName(f.xrefField)}) ON DELETE RESTRICT; 76 76 </#if></#list> 77 77 </#if></#list> -
molgenis/3.3/src/org/molgenis/model/MolgenisModel.java
r2381 r2677 32 32 33 33 model = MolgenisModelParser.parseDbSchema(options.model_database); 34 35 logger.debug("read: " + model); 34 36 35 37 //if (!options.exclude_system) Model.createSystemTables(model); … … 39 41 model = MolgenisModelParser.parseUiSchema(options.path + options.model_userinterface, model); 40 42 //if (options.force_molgenis_package == true) model.setName("molgenis"); 43 44 logger.debug("validated: " + model); 41 45 } 42 46 catch (MolgenisModelException e) … … 133 137 if (field.getType().toString() == "xref") 134 138 { 135 dependencies.add(field.getX RefEntity()); // xref fields139 dependencies.add(field.getXrefEntityName()); // xref fields 136 140 // including all children, it can relate to that 137 141 // dependencies.addAll(model.getEntity(field.getXRefEntity()) … … 140 144 // model.getEntity(field.getXRefEntity()).getParents()); 141 145 142 Entity xrefEntity = model.getEntity(field.getXRefEntity());146 Entity xrefEntity = field.getXrefEntity(); 143 147 144 148 // also all subclasses have this xref!!!! -
molgenis/3.3/src/org/molgenis/model/MolgenisModelParser.java
r2594 r2677 122 122 if (xref_label != null && !xref_label.equals("")) 123 123 { 124 entity.setXrefLabel(element.getAttribute("xref_label")); 124 List<String> xref_labels = new ArrayList<String>(); 125 xref_labels.addAll(Arrays.asList(xref_label.split(","))); 126 entity.setXrefLabels(xref_labels); 125 127 } 126 128 … … 196 198 keys.add(f); 197 199 } 200 201 //description 202 String key_description = null; 203 if (elem.hasAttribute("description")) key_description = elem.getAttribute("description"); 198 204 199 205 // check if keys … … 203 209 try 204 210 { 205 entity.addKey(keys, elem.getAttribute("subclass").equals("true"), null);211 entity.addKey(keys, elem.getAttribute("subclass").equals("true"), key_description); 206 212 // might be duplicate key 207 213 } … … 464 470 + entity.getName() + "'"); 465 471 466 field.setXRefVariables(xref_entity, xref_field, xref_label); 472 List<String> xref_labels = Arrays.asList(xref_label.split(",")); 473 474 field.setXRefVariables(xref_entity, xref_field, xref_labels); 467 475 468 476 // optional custom naming instead of default … … 744 752 } 745 753 } 746 logger.debug("read: " + model);747 754 748 755 return model; … … 860 867 861 868 // ACTIONS 862 form.set Actions(new ArrayList<String>());863 String actions = element.getAttribute("actions");864 if ( actions != null && actions != "")865 { 866 String[] actionArr = actions.split(",");867 for (String action : actionArr)868 { 869 form.get Actions().add(action.trim());869 form.setCommands(new ArrayList<String>()); 870 String commands = element.getAttribute("commands"); 871 if (commands != null && commands != "") 872 { 873 String[] commandArray = commands.split(","); 874 for (String command : commandArray) 875 { 876 form.getCommands().add(command.trim()); 870 877 } 871 878 } … … 1086 1093 try 1087 1094 { 1088 field.setX RefVariables(field.getXRefEntity(), "id", "id");1095 field.setXrefLabelNames(Arrays.asList(new String[]{"id"})); 1089 1096 } 1090 1097 catch (Exception e) -
molgenis/3.3/src/org/molgenis/model/MolgenisModelValidator.java
r2611 r2677 8 8 import org.apache.log4j.Logger; 9 9 import org.molgenis.MolgenisOptions; 10 import org.molgenis.framework.db.DatabaseException; 10 11 import org.molgenis.model.elements.Entity; 11 12 import org.molgenis.model.elements.Field; … … 58 59 if (f.getType().equals(Field.Type.XREF_SINGLE) || f.getType().equals(Field.Type.XREF_MULTIPLE)) 59 60 { 60 if (f.getXRefLabelString() == null || f.getXRefLabelString().equals(f.getXRefField())) 61 { 62 Entity xref_entity = model.getEntity(f.getXRefEntity()); 63 f.setXrefLabel(xref_entity.getXrefLabel()); 61 if (!f.getXrefLabelsTemp().get(0).equals(f.getXrefFieldName())) 62 { 63 // Entity xref_entity = 64 // model.getEntity(f.getXRefEntity()); 65 // f.setXrefLabels(xref_entity.getXrefLabels()); 64 66 } 65 67 } … … 133 135 134 136 // retrieve the references to the entity+field 135 Entity xref_entity_to = model.getEntity(xref_field_from.getXRefEntity());136 Field xref_field_to = xref_ entity_to.getField(xref_field_from.getXRefField());137 Entity xref_entity_to = xref_field_from.getXrefEntity(); 138 Field xref_field_to = xref_field_from.getXrefField(); 137 139 138 140 // TODO: check whether this link is already present … … 164 166 false, false, false, null); 165 167 field.setXRefVariables(xref_entity_to.getName(), xref_field_to.getName(), xref_field_from 166 .getX RefLabelString());168 .getXrefLabelsTemp()); 167 169 linktable.addField(field); 168 170 unique.add(field); … … 174 176 false, false, false, null); 175 177 176 field.setXRefVariables(xref_entity_from.getName(), key.getName(), ""); 178 // null xreflabel 179 field.setXRefVariables(xref_entity_from.getName(), key.getName(), null); 177 180 178 181 linktable.addField(field); … … 233 236 try 234 237 { 235 referenced = model.getEntity(field.getXRefEntity());238 referenced = field.getXrefEntity(); 236 239 } 237 240 catch (Exception e) … … 295 298 if (field.getType() == Field.Type.XREF_SINGLE || field.getType() == Field.Type.XREF_MULTIPLE) 296 299 { 297 String xref_entity_name = field.getX RefEntity();298 String xref_field_name = field.getX RefField();299 String xref_label_name = field.getXRefLabelString();300 String xref_entity_name = field.getXrefEntityName(); 301 String xref_field_name = field.getXrefFieldName(); 302 List<String> xref_label_names = field.getXrefLabelsTemp(); 300 303 301 304 Entity xref_entity = model.getEntity(xref_entity_name); … … 304 307 + "' does not exist for field " + entityname + "." + fieldname); 305 308 306 if (!xref_entity.getName().equals(field.getX RefEntity())) throw new MolgenisModelException(309 if (!xref_entity.getName().equals(field.getXrefEntityName())) throw new MolgenisModelException( 307 310 "xref entity '" + xref_entity_name + "' does not exist for field " + entityname + "." 308 311 + fieldname + " (note: entity names are case-sensitive)"); … … 316 319 + "' does not exist for field " + entityname + "." + fieldname); 317 320 318 Field xref_label = xref_entity.getAllField(xref_label_name); 319 if (xref_label == null) throw new MolgenisModelException("xref label '" + xref_label_name 320 + "' does not exist for field " + entityname + "." + fieldname); 321 322 if (xref_label.isNillable()) throw new MolgenisModelException("'" + xref_label_name 323 + "' cannot be used as xref label for field '" + entityname + "." + fieldname 324 + "' because it can be null (nullable='true')"); 321 for (String xref_label_name : xref_label_names) 322 { 323 Field xref_label = null; 324 // test if label is defined as {entity}.{field} 325 if (xref_label_name.contains(".")) 326 { 327 try 328 { 329 xref_label = model.findField(xref_label_name); 330 } 331 catch (DatabaseException e) 332 { 333 } 334 ; 335 } 336 // else assume {entity} == xref_entity 337 else 338 { 339 xref_label = xref_entity.getAllField(xref_label_name); 340 } 341 if (xref_label == null) throw new MolgenisModelException("xref label '" + xref_label_name 342 + "' does not exist for field " + entityname + "." + fieldname); 343 344 if (xref_label.isNillable()) throw new MolgenisModelException("'" + xref_label_names 345 + "' cannot be used as xref label for field '" + entityname + "." + fieldname 346 + "' because it can be null (nullable='true')"); 347 348 // TODO check if the labels are unique 349 } 325 350 326 351 if (xref_field.getType().equals(Field.Type.TEXT)) throw new MolgenisModelException("xref field '" … … 385 410 386 411 if (autocount > 1) throw new MolgenisModelException( 387 "there can be only one auto column and it must be the primary key for entity '" + entityname + "'"); 412 "there should be only one auto column and it must be the primary key for entity '" + entityname 413 + "'"); 414 415 if (!entity.isAbstract() && autocount < 1) 416 { 417 throw new MolgenisModelException( 418 "there should be one auto column for each root entity and it must be the primary key for entity '" 419 + entityname + "'"); 420 } 388 421 } 389 422 … … 430 463 431 464 field.setSystem(true); 432 field.setXRefVariables(iface.getName(), key.getName(), key.getName());465 field.setXRefVariables(iface.getName(), key.getName(), null); 433 466 field.setHidden(true); 434 467 … … 436 469 + " to " + entity.getName()); 437 470 entity.addField(field); 438 entity.addKey(field, iface.getKeys().get(0).getDescription()); 471 // entity.addKey(field, 472 // iface.getKeys().get(0).getDescription()); 439 473 } 440 474 } … … 482 516 483 517 field.setSystem(true); 484 field.setXRefVariables(parent.getName(), key.getName(), "");518 field.setXRefVariables(parent.getName(), key.getName(), null); 485 519 field.setHidden(true); 486 520 … … 591 625 if (options.db_driver.contains("hsql")) keywords.addAll(Arrays.asList(HSQL_KEYWORDS)); 592 626 593 if (model.getName().contains(" ")) 627 if (model.getName().contains(" ")) 594 628 { 595 629 throw new MolgenisModelException("model name '" + model.getName() 596 630 + "' illegal: it cannot contain spaces. Use 'label' if you want to show a name with spaces."); 597 631 } 598 599 //if(!containsOnlyLetters(model.getName()))600 //{601 //throw new MolgenisModelException("model name '" + model.getName()602 //+ "' illegal: it can only contain letters, no numbers or dots");603 //}632 633 // if(!containsOnlyLetters(model.getName())) 634 // { 635 // throw new MolgenisModelException("model name '" + model.getName() 636 // + "' illegal: it can only contain letters, no numbers or dots"); 637 // } 604 638 605 639 for (Module m : model.getModules()) … … 610 644 + "' illegal: it cannot contain spaces. Use 'label' if you want to show a name with spaces."); 611 645 } 612 //if(!containsOnlyLetters(m.getName()))613 //{614 //throw new MolgenisModelException("module name '" + m.getName()615 //+ "' illegal: it can only contain letters, no numbers or dots");616 //}617 646 // if(!containsOnlyLetters(m.getName())) 647 // { 648 // throw new MolgenisModelException("module name '" + m.getName() 649 // + "' illegal: it can only contain letters, no numbers or dots"); 650 // } 651 618 652 } 619 653 … … 653 687 if (f.getType().equals(Field.Type.XREF_SINGLE) || f.getType().equals(Field.Type.XREF_MULTIPLE)) 654 688 { 655 String xref_entity = f.getX RefEntity();689 String xref_entity = f.getXrefEntityName(); 656 690 if (xref_entity != null 657 691 && (keywords.contains(xref_entity.toUpperCase()) || keywords.contains(xref_entity … … 708 742 } 709 743 } 710 711 for(UISchema screen: model.getUserinterface().getAllChildren()) 712 { 713 if(screen.getName().contains(" ")) 714 { 715 throw new MolgenisModelException("ui element '"+screen.getName()+"illegal: it cannot contain spaces. If you want to have a name with spaces use the 'label' attribute"); 744 745 for (UISchema screen : model.getUserinterface().getAllChildren()) 746 { 747 if (screen.getName().contains(" ")) 748 { 749 throw new MolgenisModelException( 750 "ui element '" 751 + screen.getName() 752 + "illegal: it cannot contain spaces. If you want to have a name with spaces use the 'label' attribute"); 716 753 } 717 754 } … … 733 770 { 734 771 // correct for uppercase/lowercase typo's 735 Entity xrefEntity = model.getEntity(f.getXRefEntity());772 Entity xrefEntity = f.getXrefEntity(); 736 773 f.setXRefEntity(xrefEntity.getName()); 737 774 738 String xrefField = xrefEntity.getAllField(f.getXRefField()).getName(); 739 String xrefLabel = xrefEntity.getAllField(f.getXRefLabelString()).getName(); 740 if (xrefLabel == null) xrefLabel = xrefField; 741 f.setXRefVariables(xrefEntity.getName(), xrefField, xrefLabel); 775 String xrefField = f.getXrefField().getName(); 776 777 List<String> xrefLabels = f.getXrefLabelsTemp(); 778 List<String> correctedXrefLabels = new ArrayList<String>(); 779 for (String xrefLabel : xrefLabels) 780 { 781 correctedXrefLabels.add(xrefEntity.getAllField(xrefLabel).getName()); 782 } 783 f.setXRefVariables(xrefEntity.getName(), xrefField, correctedXrefLabels); 742 784 } 743 785 catch (Exception exception) … … 869 911 return " ERROR[STRING EMPTY] "; 870 912 } 871 913 872 914 private static boolean containsOnlyLetters(String name) 873 915 { -
molgenis/3.3/src/org/molgenis/model/elements/DBSchema.java
r2317 r2677 38 38 private List<Module> modules = new ArrayList<Module>(); 39 39 40 private Model model; 41 42 public Model getModel() 43 { 44 return model; 45 } 46 47 public void setModel(Model model) 48 { 49 this.model = model; 50 } 51 40 52 // constructor(s) 41 53 /** … … 47 59 * tree. 48 60 */ 49 public DBSchema(String name, DBSchema parent )61 public DBSchema(String name, DBSchema parent, Model model) 50 62 { 51 63 super(name, parent); 64 this.model = model; 52 65 } 53 66 -
molgenis/3.3/src/org/molgenis/model/elements/Entity.java
r2630 r2677 65 65 /** Trigger type */ 66 66 private String decorator; 67 68 /** Default label to be used for Xrefs */69 private String xrefLabel;67 68 /** Default label(s) to be used for Xrefs */ 69 private List<String> xrefLabels; 70 70 71 71 // constructor(s) … … 99 99 public Entity(String name, String label, DBSchema parent) 100 100 { 101 super(name, parent );101 super(name, parent, parent.getModel()); 102 102 103 103 this.label = label; … … 129 129 public Entity(String name, String label, DBSchema parent, boolean system) 130 130 { 131 super(name, parent );131 super(name, parent, parent.getModel()); 132 132 133 133 // this.name = name; … … 497 497 public Vector<Field> getImplementedFields() throws MolgenisModelException 498 498 { 499 Vector<Field> all_fields = new Vector<Field>();499 Map<String, Field> all_fields = new LinkedHashMap<String, Field>(); 500 500 501 501 // first fields of the interfaces … … 506 506 { 507 507 ifaceField.setEntity(this); 508 all_fields. add(ifaceField);508 all_fields.put(ifaceField.getName().toLowerCase(), ifaceField); 509 509 } 510 510 } … … 513 513 for (Field f : getFields()) 514 514 { 515 if (!all_fields.contains(f)) 516 { 517 all_fields.add(f); 518 } 519 else 520 // replace with local variant 521 { 522 all_fields.set(all_fields.indexOf(f), f); 523 } 524 } 525 526 return all_fields; 527 } 528 515 all_fields.put(f.getName().toLowerCase(), f); 516 } 517 518 return new Vector(all_fields.values()); 519 } 520 529 521 public boolean hasSuperclassField(String fieldname) throws MolgenisModelException 530 522 { 531 523 Vector<Field> fields = getAncestor().getAllFields(); 532 for(Field f : fields) { 533 if(f.getName().equals(fieldname)) { 524 for (Field f : fields) 525 { 526 if (f.getName().equals(fieldname)) 527 { 534 528 return true; 535 529 } … … 540 534 public Vector<Field> getInheritedFields() throws MolgenisModelException 541 535 { 542 Map <String,Field> all_fields = new LinkedHashMap<String,Field>();536 Map<String, Field> all_fields = new LinkedHashMap<String, Field>(); 543 537 544 538 // second fields of the interfaces … … 548 542 for (Field ifaceField : ifaceFields) 549 543 { 550 // ifaceField.setEntity(this);551 all_fields.put(ifaceField.getName(), ifaceField);544 // ifaceField.setEntity(this); 545 all_fields.put(ifaceField.getName().toLowerCase(), ifaceField); 552 546 } 553 547 } … … 558 552 for (Field f : getAncestor().getAllFields()) 559 553 { 560 all_fields.put(f.getName() , f);554 all_fields.put(f.getName().toLowerCase(), f); 561 555 } 562 556 } … … 564 558 // skip self... 565 559 return new Vector(all_fields.values()); 566 567 } 568 560 561 } 562 569 563 /** 570 564 * @throws MolgenisModelException … … 572 566 public Vector<Field> getAllFields() throws MolgenisModelException 573 567 { 574 Map <String,Field> all_fields = new LinkedHashMap<String,Field>();568 Map<String, Field> all_fields = new LinkedHashMap<String, Field>(); 575 569 576 570 // second fields of the interfaces … … 581 575 { 582 576 ifaceField.setEntity(this); 583 all_fields.put(ifaceField.getName(), ifaceField);577 all_fields.put(ifaceField.getName().toLowerCase(), ifaceField); 584 578 } 585 579 } … … 590 584 for (Field f : getAncestor().getAllFields()) 591 585 { 592 all_fields.put(f.getName() , f);586 all_fields.put(f.getName().toLowerCase(), f); 593 587 } 594 588 } … … 597 591 for (Field f : getFields()) 598 592 { 599 all_fields.put(f.getName() , f);593 all_fields.put(f.getName().toLowerCase(), f); 600 594 } 601 595 return new Vector(all_fields.values()); … … 862 856 for (Field field : getAllFields()) 863 857 { 864 // logger.debug("testing: " + this.getName()+ "."+field.getName());858 // logger.debug("testing: " + this.getName()+ "."+field.getName()); 865 859 866 860 if (name.equalsIgnoreCase(field.getName())) … … 1040 1034 { 1041 1035 Entity parent_entity = (Entity) getParent().get(this.parents.lastElement()); 1042 if(parent_entity == null) throw new MolgenisModelException("Superclass "+ this.parents.lastElement()+" unknown for entity "+this.getName()); 1036 if (parent_entity == null) throw new MolgenisModelException("Superclass " + this.parents.lastElement() 1037 + " unknown for entity " + this.getName()); 1043 1038 result.add(parent_entity.getKeys().firstElement()); 1044 1039 } 1045 1040 1046 // get keyfrom implements1041 // get other keys from implements 1047 1042 if (hasImplements()) 1048 1043 { … … 1204 1199 this.addKey(fields, subclass, description); 1205 1200 } 1206 1201 1207 1202 public int getNumberOfReferencesTo(Entity e) throws MolgenisModelException 1208 1203 { 1209 1204 int count = 0; 1210 for (Field field : this.getXRefFields()) {1211 String xrefEntity = field.getXRefEntity();1212 if(xrefEntity != null && xrefEntity.equals(e.getName()))1213 count++;1205 for (Field field : this.getXRefFields()) 1206 { 1207 String xrefEntity = field.getXrefEntityName(); 1208 if (xrefEntity != null && xrefEntity.equals(e.getName())) count++; 1214 1209 } 1215 1210 return count; 1216 1211 } 1217 1212 1218 public String getXrefLabel() 1219 { 1220 return xrefLabel; 1221 } 1222 1223 public void setXrefLabel(String xrefLabel) 1224 { 1225 this.xrefLabel = xrefLabel; 1213 public List<String> getXrefLabels() 1214 { 1215 return xrefLabels; 1216 } 1217 1218 public void setXrefLabels(List<String> xrefLabels) 1219 { 1220 this.xrefLabels = xrefLabels; 1221 } 1222 1223 public Model getModel() 1224 { 1225 return this.getRoot().getModel(); 1226 1226 } 1227 1227 } -
molgenis/3.3/src/org/molgenis/model/elements/Field.java
r2317 r2677 14 14 import java.io.Serializable; 15 15 import java.sql.Types; 16 import java.util.ArrayList; 17 import java.util.Arrays; 18 import java.util.List; 16 19 import java.util.Vector; 17 20 18 import org.apache.log4j.Logger; 21 import org.molgenis.framework.db.DatabaseException; 22 import org.molgenis.generators.GeneratorHelper; 19 23 import org.molgenis.model.MolgenisModelException; 20 24 … … 25 29 * 26 30 * @author RA Scheltema 31 * @author MA Swertz 27 32 * @version 1.0.0 28 33 */ … … 34 39 public static enum Type 35 40 { 36 /** Ontology type*/37 ONTOLOGY("ontology", "%s"),41 /** Ontology type */ 42 ONTOLOGY("ontology", "%s"), 38 43 /** The type is unknown, this case should raise an exception. */ 39 44 UNKNOWN("unknown", ""), … … 66 71 /** The type of the field is file. */ 67 72 FILE("file", "%s"), 68 /** special type of file, namely images */69 IMAGE("image", "%s"),73 /** special type of file, namely images */ 74 IMAGE("image", "%s"), 70 75 /** */ 71 76 ENUM("enum", "%s"), … … 239 244 public Field(Entity parent, String name, Type type) 240 245 { 241 this(parent, type, name, name, false, false,false,null);246 this(parent, type, name, name, false, false, false, null); 242 247 } 243 248 … … 263 268 * Indicates whether this field is readonly. 264 269 */ 265 public Field(Entity parent, Type type, String name, String label, boolean auto, boolean nillable, boolean readonly, String default_value) 270 public Field(Entity parent, Type type, String name, String label, boolean auto, boolean nillable, boolean readonly, 271 String default_value) 266 272 { 267 273 this.entity = parent; … … 285 291 this.xref_table = ""; 286 292 this.xref_field = ""; 287 this.xref_label = "";293 this.xref_labels = new ArrayList<String>(); 288 294 289 295 // … … 320 326 this.xref_table = field.xref_table; 321 327 this.xref_field = field.xref_field; 322 this.xref_label = field.xref_label;328 this.xref_labels = field.xref_labels; 323 329 this.mref_name = field.mref_name; 324 330 … … 369 375 DBSchema root = entity.getRoot(); 370 376 371 Entity xref_entity = (Entity) root.get(getXRefEntity()); 372 Field xref_field = xref_entity.getField(getXRefField()); 373 374 return xref_field.getFormatString(); 377 return this.getXrefField().getFormatString(); 375 378 } 376 379 catch (Exception e) … … 443 446 return this.nillable; 444 447 } 445 448 446 449 public void setReadonly(boolean readonly) 447 450 { … … 662 665 * Type.XREF_MULTIPLE 663 666 */ 664 public void setXRefVariables(String entity, String field, String label) // throws667 public void setXRefVariables(String entity, String field, List<String> labels) // throws 665 668 // Exception 666 669 { … … 673 676 this.xref_table = entity; 674 677 this.xref_field = field; 675 this.xref_label = label;678 this.xref_labels = labels; 676 679 } 677 680 … … 686 689 * Type.XREF_MULTIPLE 687 690 */ 688 public String getXRefEntity() throws MolgenisModelException 691 public Entity getXrefEntity() throws MolgenisModelException 692 { 693 return this.getEntity().getModel().getEntity(this.getXrefEntityName()); 694 } 695 696 public String getXrefEntityName() throws MolgenisModelException 689 697 { 690 698 if (this.type != Type.XREF_SINGLE && this.type != Type.XREF_MULTIPLE) 691 { 692 throw new MolgenisModelException("Field '"+this.getEntity().getName()+"."+this.getName()+"' is not a XREF, so xref-table cannot be retrieved."); 699 { 700 throw new MolgenisModelException("Field '" + this.getEntity().getName() + "." + this.getName() 701 + "' is not a XREF, so xref-table cannot be retrieved."); 693 702 } 694 703 695 704 return this.xref_table; 705 696 706 } 697 707 … … 702 712 * 703 713 * @return The name of the field of the entity this field is referencing. 714 * @throws Exception 704 715 * @throws Exception 705 716 * When this field is not of type Type.XREF_SINGLE or 706 717 * Type.XREF_MULTIPLE 707 718 */ 708 public String getXRefField() // throws Exception 709 { 710 // if (this.type != Type.XREF_SINGLE && this.type != Type.XREF_MULTIPLE) 711 // { 712 // throw new Exception("Field is not a XREF, so xref-field cannot be 713 // retrieved."); 714 // } 715 719 public Field getXrefField() throws MolgenisModelException // throws Exception 720 { 721 if (this.type != Type.XREF_SINGLE && this.type != Type.XREF_MULTIPLE) 722 { 723 throw new MolgenisModelException("Field is not a XREF, so xref-field cannot be retrieved."); 724 } 725 726 return this.getXrefEntity().getField(this.getXrefFieldName()); 727 } 728 729 public String getXrefFieldName() 730 { 716 731 return this.xref_field; 717 732 } … … 722 737 * 723 738 * @return The label of this reference. 739 * @throws MolgenisModelException 724 740 * @throws Exception 725 741 * When this field is not of type Type.XREF_SINGLE or 726 742 * Type.XREF_MULTIPLE 727 743 */ 728 public XRefLabel getXRefLabel() throws Exception 729 { 730 if (this.type != Type.XREF_SINGLE && this.type != Type.XREF_MULTIPLE) throw new Exception("Field is not a XREF, so xref-label cannot be retrieved."); 731 732 XRefLabel label = new XRefLabel(); 733 if (xref_label.contains("{")) 734 { 735 int pos = 0; 736 int old = 0; 737 738 while (pos != -1) 739 { 740 // find the next occurence of a field-name 741 pos = xref_label.indexOf('{', old); 742 if (pos != -1) 743 { 744 // expand the format-string 745 label.format += xref_label.substring(old, pos) + "%s"; 746 747 // find the end-position of the field-name 748 old = xref_label.indexOf('}', pos); 749 if (old == -1) throw new Exception("Unterminated field-name in xref-label:\n" + xref_label); 750 751 // add the field-name to the vector 752 label.fields.add(xref_label.substring(pos + 1, old)); 753 } 754 else 755 { 756 } 757 758 old++; 759 } 760 } 761 else 762 { 763 if (xref_label == null || xref_label.equals("")) xref_label = this.xref_field; 764 label.format = "%s"; 765 label.fields.add(xref_label); 766 } 767 768 return label; 769 } 770 771 /** 772 * Gets the xref_label as string. For the parsed version: 773 * 774 * @see #getXRefLabel() 775 */ 776 public String getXRefLabelString() 777 { 778 if(this.xref_label == "" || this.xref_label == null) 779 return this.xref_field; 780 return this.xref_label; 744 public List<String> getXrefLabelNames() throws MolgenisModelException 745 { 746 // label name = replace '.' and replace entity name if label entity == 747 // xref_entity 748 List<String> label_names = new ArrayList<String>(); 749 for (String label : this.getXrefLabelsTemp()) 750 label_names.add(label.replace(".", "_").replace(this.getXrefEntity() + "_", "")); 751 return label_names; 752 } 753 754 public List<Field> getXrefLabels() throws DatabaseException, MolgenisModelException 755 { 756 List<Field> result = new ArrayList<Field>(); 757 758 for (String label : getXrefLabelsTemp()) 759 { 760 if (label.contains(".")) result.add(this.getEntity().getModel().findField(label)); 761 else 762 result.add(this.getEntity().getModel().findField(this.getXrefEntity().getName() + "." + label)); 763 } 764 765 return result; 766 } 767 768 public List<String> getXrefLabelsTemp() 769 { 770 if (xref_labels == null || xref_labels.size() == 0) return Arrays.asList(new String[] 771 { this.xref_field }); 772 return xref_labels; 781 773 } 782 774 … … 819 811 this.mref_name = linktable; 820 812 } 821 813 822 814 public String getMrefLocalid() 823 815 { … … 886 878 str += ", type=" + type.tag; 887 879 if (type == Field.Type.STRING || type == Field.Type.CHAR) str += "[" + varchar_length + "]"; 888 else if (type == Field.Type.XREF_SINGLE || type == Field.Type.XREF_MULTIPLE) str += "[" + xref_table + "->" + xref_field + "]"; 889 if(type == Field.Type.XREF_MULTIPLE) str += ", mref_name="+this.mref_name +", mref_localid="+this.mref_localid+", mref_remoteid="+this.mref_remoteid; 890 if (type == Field.Type.XREF_SINGLE || type == Field.Type.XREF_MULTIPLE) str +=", xref_label="+getXRefLabelString(); 891 880 else if (type == Field.Type.XREF_SINGLE || type == Field.Type.XREF_MULTIPLE) str += "[" + xref_table + "->" 881 + xref_field + "]"; 882 if (type == Field.Type.XREF_MULTIPLE) str += ", mref_name=" + this.mref_name + ", mref_localid=" 883 + this.mref_localid + ", mref_remoteid=" + this.mref_remoteid; 884 if (type == Field.Type.XREF_SINGLE || type == Field.Type.XREF_MULTIPLE) str += ", xref_label=" 885 + new GeneratorHelper(null).toCsv(this.xref_labels); 886 892 887 // settings 893 888 str += ", auto=" + auto; … … 989 984 * is the label of the reference. 990 985 */ 991 private String xref_label;986 private List<String> xref_labels; 992 987 /** 993 988 * When this field is of type Type.XREF_MULTIPLE, this is the name of the … … 995 990 */ 996 991 private String mref_name; 997 992 998 993 private String mref_localid; 999 994 1000 995 private String mref_remoteid; 1001 996 … … 1066 1061 { 1067 1062 this.xref_field = xrefField; 1063 1064 } 1065 1066 public void setXrefLabelNames(List<String> labelNames) 1067 { 1068 this.xref_labels = labelNames; 1068 1069 1069 1070 } 1070 1071 public void setXrefLabel(String xrefLabel) throws MolgenisModelException1072 {1073 this.setXRefVariables(this.getXRefEntity(), this.getXRefField(), xrefLabel);1074 }1075 1071 } -
molgenis/3.3/src/org/molgenis/model/elements/Form.java
r2594 r2677 165 165 166 166 /** */ 167 private List<String> actionPlugins;167 private List<String> commandPlugins; 168 168 169 169 /** */ … … 320 320 } 321 321 322 public List<String> get Actions()323 { 324 return actionPlugins;325 } 326 327 public void set Actions(List<String> actionPlugins)328 { 329 this. actionPlugins = actionPlugins;322 public List<String> getCommands() 323 { 324 return commandPlugins; 325 } 326 327 public void setCommands(List<String> actionPlugins) 328 { 329 this.commandPlugins = actionPlugins; 330 330 } 331 331 … … 340 340 } 341 341 342 public String toString() 343 { 344 String commands = ""; 345 for(String command: getCommands()) commands += command +","; 346 return String.format("Form(name=%s, entity=%s, commands=%s)", getName(), getRecord().getName(), commands); 347 } 342 348 } -
molgenis/3.3/src/org/molgenis/model/elements/Matrix.java
r2317 r2677 35 35 public Matrix(String name, DBSchema parent) 36 36 { 37 super(name, parent );37 super(name, parent, parent.getModel()); 38 38 } 39 39 … … 97 97 Entity e = (Entity) get(this.content_entity); 98 98 Field row_field = e.getField(this.row); 99 return (Entity) get(row_field.getXRefEntity());99 return row_field.getXrefEntity(); 100 100 // return model.getEntity(row_field.getXRefEntity()); 101 101 } … … 120 120 Field col_field = ce.getField(col); 121 121 // get from the field the entity that is 'xref-ed' by the row 122 return (Entity) get(col_field.getXRefEntity());122 return col_field.getXrefEntity(); 123 123 } 124 124 } … … 142 142 // "+container_field.getXRefEntity()); 143 143 // get from the field the entity that is 'xref-ed' by the row 144 return (Entity) get(container_field.getXRefEntity());144 return container_field.getXrefEntity(); 145 145 } 146 146 -
molgenis/3.3/src/org/molgenis/model/elements/Model.java
r2381 r2677 32 32 this.name = name; 33 33 34 database = new DBSchema(name, null );34 database = new DBSchema(name, null, this); 35 35 userinterface = new UISchema(name, null); 36 36 methods = new MethodSchema(name, null); … … 435 435 for (UISchema u : getUserinterface().getAllChildren()) 436 436 { 437 result.append(u. getType() + ": " + u.getName() +"\n");437 result.append(u.toString()+"\n"); 438 438 } 439 439 -
molgenis/3.3/src/org/molgenis/model/elements/View.java
r2317 r2677 37 37 public View(String name, String label, DBSchema parent) 38 38 { 39 super(name, parent );39 super(name, parent, parent.getModel()); 40 40 41 41 // … … 160 160 161 161 try { 162 if (field.getX RefEntity().equals(entity.getName()))162 if (field.getXrefEntity().equals(entity.getName())) 163 163 xrefs.add(field); 164 164 } catch (Exception ex) {;} … … 172 172 173 173 try { 174 if (field.getX RefEntity().equals(e.getName()))174 if (field.getXrefEntity().equals(e.getName())) 175 175 xrefs.add(field); 176 176 } catch (Exception ex) {;}
Note: See TracChangeset
for help on using the changeset viewer.