001/** 002 * Copyright 2014 The Sculptor Project Team, including the original 003 * author or authors. 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.sculptor.generator.cartridge.mongodb; 018 019import javax.inject.Inject; 020import org.eclipse.xtend2.lib.StringConcatenation; 021import org.eclipse.xtext.xbase.lib.Extension; 022import org.sculptor.generator.cartridge.mongodb.MongoDbHelper; 023import org.sculptor.generator.cartridge.mongodb.MongoDbProperties; 024import org.sculptor.generator.chain.ChainOverride; 025import org.sculptor.generator.ext.Helper; 026import org.sculptor.generator.ext.Properties; 027import org.sculptor.generator.template.domain.DomainObjectReferenceTmpl; 028import org.sculptor.generator.util.HelperBase; 029import sculptormetamodel.DomainObject; 030import sculptormetamodel.Module; 031import sculptormetamodel.Reference; 032 033@ChainOverride 034@SuppressWarnings("all") 035public class DomainObjectReferenceTmplExtension extends DomainObjectReferenceTmpl { 036 @Inject 037 @Extension 038 private MongoDbHelper mongoDbHelper; 039 040 @Inject 041 @Extension 042 private HelperBase helperBase; 043 044 @Inject 045 @Extension 046 private Helper helper; 047 048 @Inject 049 @Extension 050 private MongoDbProperties mongoDbProperties; 051 052 @Inject 053 @Extension 054 private Properties properties; 055 056 @Override 057 public String oneReferenceAttributeUnownedReference(final Reference it) { 058 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEREFERENCEATTRIBUTEUNOWNEDREFERENCE_REFERENCE]; 059 return headObj._chained_oneReferenceAttributeUnownedReference(it); 060 } 061 062 @Override 063 public String oneUnownedReferenceGetter(final Reference it) { 064 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEUNOWNEDREFERENCEGETTER_REFERENCE]; 065 return headObj._chained_oneUnownedReferenceGetter(it); 066 } 067 068 private String oneReferenceMongoDbLazyGetter(final Reference it) { 069 StringConcatenation _builder = new StringConcatenation(); 070 String _formatJavaDoc = this.helper.formatJavaDoc(it); 071 _builder.append(_formatJavaDoc, ""); 072 _builder.newLineIfNotEmpty(); 073 String _visibilityLitteralGetter = this.helper.getVisibilityLitteralGetter(it); 074 _builder.append(_visibilityLitteralGetter, ""); 075 String _typeName = this.helperBase.getTypeName(it); 076 _builder.append(_typeName, ""); 077 _builder.append(" get"); 078 String _name = it.getName(); 079 String _firstUpper = this.helperBase.toFirstUpper(_name); 080 _builder.append(_firstUpper, ""); 081 _builder.append("() {"); 082 _builder.newLineIfNotEmpty(); 083 _builder.append("\t"); 084 _builder.append("if ("); 085 String _name_1 = it.getName(); 086 _builder.append(_name_1, "\t"); 087 _builder.append("IsLoaded) {"); 088 _builder.newLineIfNotEmpty(); 089 _builder.append("\t\t"); 090 _builder.append("return "); 091 String _name_2 = it.getName(); 092 _builder.append(_name_2, "\t\t"); 093 _builder.append(";"); 094 _builder.newLineIfNotEmpty(); 095 _builder.append("\t"); 096 _builder.append("}"); 097 _builder.newLine(); 098 _builder.append("\t"); 099 _builder.append("if ("); 100 String _name_3 = it.getName(); 101 _builder.append(_name_3, "\t"); 102 String _unownedReferenceSuffix = this.helper.unownedReferenceSuffix(it); 103 _builder.append(_unownedReferenceSuffix, "\t"); 104 _builder.append(" == null) {"); 105 _builder.newLineIfNotEmpty(); 106 _builder.append("\t\t"); 107 String _name_4 = it.getName(); 108 _builder.append(_name_4, "\t\t"); 109 _builder.append("IsLoaded = true;"); 110 _builder.newLineIfNotEmpty(); 111 _builder.append("\t\t"); 112 _builder.append("return null;"); 113 _builder.newLine(); 114 _builder.append("\t"); 115 _builder.append("}"); 116 _builder.newLine(); 117 _builder.append("\t"); 118 String _fw = this.properties.fw("accessimpl.mongodb.DbManager"); 119 _builder.append(_fw, "\t"); 120 _builder.append(" dbManager = "); 121 String _fw_1 = this.properties.fw("accessimpl.mongodb.DbManager"); 122 _builder.append(_fw_1, "\t"); 123 _builder.append(".getThreadInstance();"); 124 _builder.newLineIfNotEmpty(); 125 _builder.append("\t"); 126 _builder.append("if (dbManager == null) {"); 127 _builder.newLine(); 128 _builder.append("\t\t"); 129 _builder.append("throw new IllegalStateException(\"Lazy loading of "); 130 DomainObject _from = it.getFrom(); 131 String _name_5 = _from.getName(); 132 _builder.append(_name_5, "\t\t"); 133 _builder.append("."); 134 String _name_6 = it.getName(); 135 _builder.append(_name_6, "\t\t"); 136 _builder.append(" failed due to missing DbManager.getThreadInstance()\");"); 137 _builder.newLineIfNotEmpty(); 138 _builder.append("\t"); 139 _builder.append("}"); 140 _builder.newLine(); 141 _builder.append("\t"); 142 _builder.append("String dbCollectionName = "); 143 DomainObject _to = it.getTo(); 144 Module _module = _to.getModule(); 145 String _mapperPackage = this.mongoDbHelper.getMapperPackage(_module); 146 _builder.append(_mapperPackage, "\t"); 147 _builder.append("."); 148 DomainObject _to_1 = it.getTo(); 149 String _name_7 = _to_1.getName(); 150 _builder.append(_name_7, "\t"); 151 _builder.append("Mapper.getInstance().getDBCollectionName();"); 152 _builder.newLineIfNotEmpty(); 153 _builder.append("\t"); 154 _builder.append("com.mongodb.DBRef dbRef = new com.mongodb.DBRef(dbManager.getDB(), dbCollectionName,"); 155 _builder.newLine(); 156 _builder.append("\t\t"); 157 _builder.append("org.bson.types.ObjectId.massageToObjectId("); 158 String _name_8 = it.getName(); 159 _builder.append(_name_8, "\t\t"); 160 String _unownedReferenceSuffix_1 = this.helper.unownedReferenceSuffix(it); 161 _builder.append(_unownedReferenceSuffix_1, "\t\t"); 162 _builder.append("));"); 163 _builder.newLineIfNotEmpty(); 164 _builder.append("\t"); 165 String _name_9 = it.getName(); 166 _builder.append(_name_9, "\t"); 167 _builder.append(" = ("); 168 String _typeName_1 = this.helperBase.getTypeName(it); 169 _builder.append(_typeName_1, "\t"); 170 _builder.append(")"); 171 DomainObject _to_2 = it.getTo(); 172 Module _module_1 = _to_2.getModule(); 173 String _mapperPackage_1 = this.mongoDbHelper.getMapperPackage(_module_1); 174 _builder.append(_mapperPackage_1, "\t"); 175 _builder.append("."); 176 DomainObject _to_3 = it.getTo(); 177 String _name_10 = _to_3.getName(); 178 _builder.append(_name_10, "\t"); 179 _builder.append("Mapper.getInstance().toDomain(dbRef.fetch());"); 180 _builder.newLineIfNotEmpty(); 181 _builder.append("\t"); 182 String _name_11 = it.getName(); 183 _builder.append(_name_11, "\t"); 184 _builder.append("IsLoaded = true;"); 185 _builder.newLineIfNotEmpty(); 186 _builder.append("\t"); 187 _builder.append("return "); 188 String _name_12 = it.getName(); 189 _builder.append(_name_12, "\t"); 190 _builder.append(";"); 191 _builder.newLineIfNotEmpty(); 192 _builder.append("};"); 193 _builder.newLine(); 194 _builder.newLine(); 195 String _visibilityLitteralGetter_1 = this.helper.getVisibilityLitteralGetter(it); 196 _builder.append(_visibilityLitteralGetter_1, ""); 197 _builder.append(" boolean is"); 198 String _name_13 = it.getName(); 199 String _firstUpper_1 = this.helperBase.toFirstUpper(_name_13); 200 _builder.append(_firstUpper_1, ""); 201 _builder.append("Loaded() {"); 202 _builder.newLineIfNotEmpty(); 203 _builder.append("\t"); 204 _builder.append("return "); 205 String _name_14 = it.getName(); 206 _builder.append(_name_14, "\t"); 207 _builder.append("IsLoaded;"); 208 _builder.newLineIfNotEmpty(); 209 _builder.append("}"); 210 _builder.newLine(); 211 return _builder.toString(); 212 } 213 214 @Override 215 public String oneUnownedReferenceSetter(final Reference it) { 216 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEUNOWNEDREFERENCESETTER_REFERENCE]; 217 return headObj._chained_oneUnownedReferenceSetter(it); 218 } 219 220 private String oneReferenceMongoDbLazySetter(final Reference it) { 221 StringConcatenation _builder = new StringConcatenation(); 222 { 223 boolean _isSetterNeeded = this.helper.isSetterNeeded(it); 224 if (_isSetterNeeded) { 225 String _formatJavaDoc = this.helper.formatJavaDoc(it); 226 _builder.append(_formatJavaDoc, ""); 227 _builder.newLineIfNotEmpty(); 228 String _visibilityLitteralSetter = this.helper.getVisibilityLitteralSetter(it); 229 _builder.append(_visibilityLitteralSetter, ""); 230 _builder.append("void set"); 231 String _name = it.getName(); 232 String _firstUpper = this.helperBase.toFirstUpper(_name); 233 _builder.append(_firstUpper, ""); 234 _builder.append("("); 235 String _typeName = this.helperBase.getTypeName(it); 236 _builder.append(_typeName, ""); 237 _builder.append(" "); 238 String _name_1 = it.getName(); 239 _builder.append(_name_1, ""); 240 _builder.append(") {"); 241 _builder.newLineIfNotEmpty(); 242 _builder.append("\t"); 243 _builder.append("this."); 244 String _name_2 = it.getName(); 245 _builder.append(_name_2, "\t"); 246 _builder.append(" = "); 247 String _name_3 = it.getName(); 248 _builder.append(_name_3, "\t"); 249 _builder.append(";"); 250 _builder.newLineIfNotEmpty(); 251 _builder.append("\t"); 252 String _name_4 = it.getName(); 253 _builder.append(_name_4, "\t"); 254 _builder.append("IsLoaded = true;"); 255 _builder.newLineIfNotEmpty(); 256 _builder.append("\t\t"); 257 _builder.append("this."); 258 String _name_5 = it.getName(); 259 _builder.append(_name_5, "\t\t"); 260 String _unownedReferenceSuffix = this.helper.unownedReferenceSuffix(it); 261 _builder.append(_unownedReferenceSuffix, "\t\t"); 262 _builder.append(" = ("); 263 String _name_6 = it.getName(); 264 _builder.append(_name_6, "\t\t"); 265 _builder.append(" == null ? null : "); 266 String _name_7 = it.getName(); 267 _builder.append(_name_7, "\t\t"); 268 _builder.append(".getId());"); 269 _builder.newLineIfNotEmpty(); 270 _builder.append("};"); 271 _builder.newLine(); 272 } 273 } 274 return _builder.toString(); 275 } 276 277 @Override 278 public String oneReferenceIdGetterBody(final Reference it) { 279 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEREFERENCEIDGETTERBODY_REFERENCE]; 280 return headObj._chained_oneReferenceIdGetterBody(it); 281 } 282 283 @Override 284 public String oneReferenceIdSetterBody(final Reference it) { 285 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEREFERENCEIDSETTERBODY_REFERENCE]; 286 return headObj._chained_oneReferenceIdSetterBody(it); 287 } 288 289 @Override 290 public String manyUnownedReferenceAttribute(final Reference it) { 291 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.MANYUNOWNEDREFERENCEATTRIBUTE_REFERENCE]; 292 return headObj._chained_manyUnownedReferenceAttribute(it); 293 } 294 295 @Override 296 public String manyReferenceIdsGetterBody(final Reference it) { 297 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.MANYREFERENCEIDSGETTERBODY_REFERENCE]; 298 return headObj._chained_manyReferenceIdsGetterBody(it); 299 } 300 301 @Override 302 public String manyReferenceAccessorsUnownedReference(final Reference it) { 303 DomainObjectReferenceTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.MANYREFERENCEACCESSORSUNOWNEDREFERENCE_REFERENCE]; 304 return headObj._chained_manyReferenceAccessorsUnownedReference(it); 305 } 306 307 private String manyReferenceMongoDbLazyGetter(final Reference it) { 308 StringConcatenation _builder = new StringConcatenation(); 309 String _formatJavaDoc = this.helper.formatJavaDoc(it); 310 _builder.append(_formatJavaDoc, ""); 311 _builder.newLineIfNotEmpty(); 312 String _visibilityLitteralGetter = this.helper.getVisibilityLitteralGetter(it); 313 _builder.append(_visibilityLitteralGetter, ""); 314 String _collectionInterfaceType = this.helperBase.getCollectionInterfaceType(it); 315 _builder.append(_collectionInterfaceType, ""); 316 _builder.append("<"); 317 String _typeName = this.helperBase.getTypeName(it); 318 _builder.append(_typeName, ""); 319 _builder.append("> get"); 320 String _name = it.getName(); 321 String _firstUpper = this.helperBase.toFirstUpper(_name); 322 _builder.append(_firstUpper, ""); 323 _builder.append("() {"); 324 _builder.newLineIfNotEmpty(); 325 _builder.append("\t"); 326 _builder.append("if ("); 327 String _name_1 = it.getName(); 328 _builder.append(_name_1, "\t"); 329 _builder.append(" != null) {"); 330 _builder.newLineIfNotEmpty(); 331 _builder.append("\t\t"); 332 _builder.append("return "); 333 String _name_2 = it.getName(); 334 _builder.append(_name_2, "\t\t"); 335 _builder.append(";"); 336 _builder.newLineIfNotEmpty(); 337 _builder.append("\t"); 338 _builder.append("}"); 339 _builder.newLine(); 340 _builder.append("\t"); 341 String _collectionInterfaceType_1 = this.helperBase.getCollectionInterfaceType(it); 342 _builder.append(_collectionInterfaceType_1, "\t"); 343 _builder.append("<"); 344 String _typeName_1 = this.helperBase.getTypeName(it); 345 _builder.append(_typeName_1, "\t"); 346 _builder.append("> result = new "); 347 String _collectionImplType = this.helperBase.getCollectionImplType(it); 348 _builder.append(_collectionImplType, "\t"); 349 _builder.append("<"); 350 String _typeName_2 = this.helperBase.getTypeName(it); 351 _builder.append(_typeName_2, "\t"); 352 _builder.append(">();"); 353 _builder.newLineIfNotEmpty(); 354 _builder.append("\t"); 355 _builder.append("java.util.List<org.bson.types.ObjectId> ids = new java.util.ArrayList<org.bson.types.ObjectId>();"); 356 _builder.newLine(); 357 _builder.append("\t"); 358 _builder.append("for ("); 359 String _javaType = this.helperBase.getJavaType("IDTYPE"); 360 _builder.append(_javaType, "\t"); 361 _builder.append(" each : "); 362 String _name_3 = it.getName(); 363 _builder.append(_name_3, "\t"); 364 String _unownedReferenceSuffix = this.helper.unownedReferenceSuffix(it); 365 _builder.append(_unownedReferenceSuffix, "\t"); 366 _builder.append(") {"); 367 _builder.newLineIfNotEmpty(); 368 _builder.append("\t\t"); 369 _builder.append("ids.add(org.bson.types.ObjectId.massageToObjectId(each));"); 370 _builder.newLine(); 371 _builder.append("\t"); 372 _builder.append("}"); 373 _builder.newLine(); 374 _builder.append("\t"); 375 _builder.append("String dbCollectionName = "); 376 DomainObject _to = it.getTo(); 377 Module _module = _to.getModule(); 378 String _mapperPackage = this.mongoDbHelper.getMapperPackage(_module); 379 _builder.append(_mapperPackage, "\t"); 380 _builder.append("."); 381 DomainObject _to_1 = it.getTo(); 382 String _name_4 = _to_1.getName(); 383 _builder.append(_name_4, "\t"); 384 _builder.append("Mapper.getInstance().getDBCollectionName();"); 385 _builder.newLineIfNotEmpty(); 386 _builder.append("\t"); 387 String _fw = this.properties.fw("accessimpl.mongodb.DbManager"); 388 _builder.append(_fw, "\t"); 389 _builder.append(" dbManager = "); 390 String _fw_1 = this.properties.fw("accessimpl.mongodb.DbManager"); 391 _builder.append(_fw_1, "\t"); 392 _builder.append(".getThreadInstance();"); 393 _builder.newLineIfNotEmpty(); 394 _builder.append("\t"); 395 _builder.append("if (dbManager == null) {"); 396 _builder.newLine(); 397 _builder.append("\t\t"); 398 _builder.append("throw new IllegalStateException(\"Lazy loading of "); 399 DomainObject _from = it.getFrom(); 400 String _name_5 = _from.getName(); 401 _builder.append(_name_5, "\t\t"); 402 _builder.append("."); 403 String _name_6 = it.getName(); 404 _builder.append(_name_6, "\t\t"); 405 _builder.append(" failed due to missing DbManager.getThreadInstance()\");"); 406 _builder.newLineIfNotEmpty(); 407 _builder.append("\t"); 408 _builder.append("}"); 409 _builder.newLine(); 410 _builder.append("\t"); 411 _builder.append("com.mongodb.DBCollection dbCollection = dbManager.getDBCollection(dbCollectionName);"); 412 _builder.newLine(); 413 _builder.append("\t"); 414 _builder.append("com.mongodb.DBCursor cur = dbCollection.find(new com.mongodb.BasicDBObject(\"_id\", new com.mongodb.BasicDBObject(\"$in\", ids)));"); 415 _builder.newLine(); 416 _builder.append("\t"); 417 _builder.append("while (cur.hasNext()) {"); 418 _builder.newLine(); 419 _builder.append("\t\t"); 420 _builder.append("com.mongodb.DBObject each = cur.next();"); 421 _builder.newLine(); 422 _builder.append("\t\t"); 423 _builder.append("result.add("); 424 DomainObject _to_2 = it.getTo(); 425 Module _module_1 = _to_2.getModule(); 426 String _mapperPackage_1 = this.mongoDbHelper.getMapperPackage(_module_1); 427 _builder.append(_mapperPackage_1, "\t\t"); 428 _builder.append("."); 429 DomainObject _to_3 = it.getTo(); 430 String _name_7 = _to_3.getName(); 431 _builder.append(_name_7, "\t\t"); 432 _builder.append("Mapper.getInstance().toDomain(each));"); 433 _builder.newLineIfNotEmpty(); 434 _builder.append("\t"); 435 _builder.append("}"); 436 _builder.newLine(); 437 _builder.newLine(); 438 _builder.append("\t"); 439 String _name_8 = it.getName(); 440 _builder.append(_name_8, "\t"); 441 _builder.append(" = result;"); 442 _builder.newLineIfNotEmpty(); 443 _builder.append("\t"); 444 _builder.append("return result;"); 445 _builder.newLine(); 446 _builder.append("};"); 447 _builder.newLine(); 448 _builder.newLine(); 449 String _visibilityLitteralGetter_1 = this.helper.getVisibilityLitteralGetter(it); 450 _builder.append(_visibilityLitteralGetter_1, ""); 451 _builder.append(" boolean is"); 452 String _name_9 = it.getName(); 453 String _firstUpper_1 = this.helperBase.toFirstUpper(_name_9); 454 _builder.append(_firstUpper_1, ""); 455 _builder.append("Loaded() {"); 456 _builder.newLineIfNotEmpty(); 457 _builder.append("\t"); 458 _builder.append("return "); 459 String _name_10 = it.getName(); 460 _builder.append(_name_10, "\t"); 461 _builder.append(" != null;"); 462 _builder.newLineIfNotEmpty(); 463 _builder.append("}"); 464 _builder.newLine(); 465 return _builder.toString(); 466 } 467 468 public DomainObjectReferenceTmplExtension(final DomainObjectReferenceTmpl next, final DomainObjectReferenceTmpl[] methodsDispatchNext) { 469 super(next); 470 } 471 472 public String _chained_oneReferenceAttributeUnownedReference(final Reference it) { 473 StringConcatenation _builder = new StringConcatenation(); 474 DomainObjectReferenceTmpl _next = this.getNext(); 475 String _oneReferenceAttributeUnownedReference = _next.oneReferenceAttributeUnownedReference(it); 476 _builder.append(_oneReferenceAttributeUnownedReference, ""); 477 _builder.newLineIfNotEmpty(); 478 { 479 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 480 if (_mongoDb) { 481 String _oneReferenceLazyAttribute = this.oneReferenceLazyAttribute(it); 482 _builder.append(_oneReferenceLazyAttribute, ""); 483 _builder.newLineIfNotEmpty(); 484 } 485 } 486 return _builder.toString(); 487 } 488 489 public String _chained_oneUnownedReferenceGetter(final Reference it) { 490 StringConcatenation _builder = new StringConcatenation(); 491 DomainObjectReferenceTmpl _next = this.getNext(); 492 String _oneUnownedReferenceGetter = _next.oneUnownedReferenceGetter(it); 493 _builder.append(_oneUnownedReferenceGetter, ""); 494 _builder.newLineIfNotEmpty(); 495 { 496 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 497 if (_mongoDb) { 498 String _oneReferenceMongoDbLazyGetter = this.oneReferenceMongoDbLazyGetter(it); 499 _builder.append(_oneReferenceMongoDbLazyGetter, ""); 500 _builder.newLineIfNotEmpty(); 501 } 502 } 503 return _builder.toString(); 504 } 505 506 public String _chained_oneUnownedReferenceSetter(final Reference it) { 507 StringConcatenation _builder = new StringConcatenation(); 508 DomainObjectReferenceTmpl _next = this.getNext(); 509 String _oneUnownedReferenceSetter = _next.oneUnownedReferenceSetter(it); 510 _builder.append(_oneUnownedReferenceSetter, ""); 511 _builder.newLineIfNotEmpty(); 512 { 513 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 514 if (_mongoDb) { 515 String _oneReferenceMongoDbLazySetter = this.oneReferenceMongoDbLazySetter(it); 516 _builder.append(_oneReferenceMongoDbLazySetter, ""); 517 _builder.newLineIfNotEmpty(); 518 } 519 } 520 return _builder.toString(); 521 } 522 523 public String _chained_oneReferenceIdGetterBody(final Reference it) { 524 StringConcatenation _builder = new StringConcatenation(); 525 { 526 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 527 if (_mongoDb) { 528 _builder.append("if (!"); 529 String _name = it.getName(); 530 _builder.append(_name, ""); 531 _builder.append("IsLoaded) {"); 532 _builder.newLineIfNotEmpty(); 533 _builder.append("\t"); 534 _builder.append("return "); 535 String _name_1 = it.getName(); 536 _builder.append(_name_1, "\t"); 537 String _unownedReferenceSuffix = this.helper.unownedReferenceSuffix(it); 538 _builder.append(_unownedReferenceSuffix, "\t"); 539 _builder.append(";"); 540 _builder.newLineIfNotEmpty(); 541 _builder.append("} else {"); 542 _builder.newLine(); 543 _builder.append("\t"); 544 _builder.append("// associated instance has been loaded, or set, id was maybe not assigned when associated instance was set"); 545 _builder.newLine(); 546 _builder.append("\t"); 547 _builder.append("if ("); 548 String _name_2 = it.getName(); 549 _builder.append(_name_2, "\t"); 550 _builder.append(" == null) {"); 551 _builder.newLineIfNotEmpty(); 552 _builder.append("\t\t"); 553 _builder.append("return null;"); 554 _builder.newLine(); 555 _builder.append("\t"); 556 _builder.append("} else if ("); 557 String _name_3 = it.getName(); 558 _builder.append(_name_3, "\t"); 559 _builder.append(".getId() == null) {"); 560 _builder.newLineIfNotEmpty(); 561 _builder.append("\t\t"); 562 _builder.append("throw new IllegalStateException(\"Reference "); 563 DomainObject _from = it.getFrom(); 564 String _name_4 = _from.getName(); 565 _builder.append(_name_4, "\t\t"); 566 _builder.append("."); 567 String _name_5 = it.getName(); 568 _builder.append(_name_5, "\t\t"); 569 _builder.append(" is unsaved instance. Cascade not supported. Save "); 570 DomainObject _to = it.getTo(); 571 String _name_6 = _to.getName(); 572 _builder.append(_name_6, "\t\t"); 573 _builder.append(" before saving "); 574 DomainObject _from_1 = it.getFrom(); 575 String _name_7 = _from_1.getName(); 576 _builder.append(_name_7, "\t\t"); 577 _builder.append(".\");"); 578 _builder.newLineIfNotEmpty(); 579 _builder.append("\t"); 580 _builder.append("} else {"); 581 _builder.newLine(); 582 _builder.append("\t\t"); 583 _builder.append("return "); 584 String _name_8 = it.getName(); 585 _builder.append(_name_8, "\t\t"); 586 _builder.append(".getId();"); 587 _builder.newLineIfNotEmpty(); 588 _builder.append("\t"); 589 _builder.append("}"); 590 _builder.newLine(); 591 _builder.append("}"); 592 _builder.newLine(); 593 } else { 594 DomainObjectReferenceTmpl _next = this.getNext(); 595 String _oneReferenceIdGetterBody = _next.oneReferenceIdGetterBody(it); 596 _builder.append(_oneReferenceIdGetterBody, ""); 597 _builder.newLineIfNotEmpty(); 598 } 599 } 600 return _builder.toString(); 601 } 602 603 public String _chained_oneReferenceIdSetterBody(final Reference it) { 604 StringConcatenation _builder = new StringConcatenation(); 605 DomainObjectReferenceTmpl _next = this.getNext(); 606 String _oneReferenceIdSetterBody = _next.oneReferenceIdSetterBody(it); 607 _builder.append(_oneReferenceIdSetterBody, ""); 608 _builder.newLineIfNotEmpty(); 609 { 610 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 611 if (_mongoDb) { 612 String _name = it.getName(); 613 _builder.append(_name, ""); 614 _builder.append("IsLoaded = false;"); 615 _builder.newLineIfNotEmpty(); 616 String _name_1 = it.getName(); 617 _builder.append(_name_1, ""); 618 _builder.append(" = null;"); 619 _builder.newLineIfNotEmpty(); 620 } 621 } 622 return _builder.toString(); 623 } 624 625 public String _chained_manyUnownedReferenceAttribute(final Reference it) { 626 StringConcatenation _builder = new StringConcatenation(); 627 DomainObjectReferenceTmpl _next = this.getNext(); 628 String _manyUnownedReferenceAttribute = _next.manyUnownedReferenceAttribute(it); 629 _builder.append(_manyUnownedReferenceAttribute, ""); 630 _builder.newLineIfNotEmpty(); 631 { 632 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 633 if (_mongoDb) { 634 String _manyReferenceLazyAttribute = this.manyReferenceLazyAttribute(it); 635 _builder.append(_manyReferenceLazyAttribute, ""); 636 _builder.newLineIfNotEmpty(); 637 } 638 } 639 return _builder.toString(); 640 } 641 642 public String _chained_manyReferenceIdsGetterBody(final Reference it) { 643 StringConcatenation _builder = new StringConcatenation(); 644 { 645 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 646 if (_mongoDb) { 647 _builder.append("if ("); 648 String _name = it.getName(); 649 _builder.append(_name, ""); 650 _builder.append(" == null) {"); 651 _builder.newLineIfNotEmpty(); 652 _builder.append("\t"); 653 _builder.append("return "); 654 String _name_1 = it.getName(); 655 _builder.append(_name_1, "\t"); 656 String _unownedReferenceSuffix = this.helper.unownedReferenceSuffix(it); 657 _builder.append(_unownedReferenceSuffix, "\t"); 658 _builder.append(";"); 659 _builder.newLineIfNotEmpty(); 660 _builder.append("} else {"); 661 _builder.newLine(); 662 _builder.append("\t"); 663 _builder.append("// associated instances have been loaded, and possibly changed"); 664 _builder.newLine(); 665 _builder.append("\t"); 666 String _collectionInterfaceType = this.helperBase.getCollectionInterfaceType(it); 667 _builder.append(_collectionInterfaceType, "\t"); 668 _builder.append("<"); 669 String _javaType = this.helperBase.getJavaType("IDTYPE"); 670 _builder.append(_javaType, "\t"); 671 _builder.append("> result = new "); 672 String _collectionImplType = this.helperBase.getCollectionImplType(it); 673 _builder.append(_collectionImplType, "\t"); 674 _builder.append("<"); 675 String _javaType_1 = this.helperBase.getJavaType("IDTYPE"); 676 _builder.append(_javaType_1, "\t"); 677 _builder.append(">();"); 678 _builder.newLineIfNotEmpty(); 679 _builder.append("\t"); 680 _builder.append("for ("); 681 String _typeName = this.helperBase.getTypeName(it); 682 _builder.append(_typeName, "\t"); 683 _builder.append(" each : "); 684 String _name_2 = it.getName(); 685 _builder.append(_name_2, "\t"); 686 _builder.append(") {"); 687 _builder.newLineIfNotEmpty(); 688 _builder.append("\t\t"); 689 _builder.append("if (each.getId() == null) {"); 690 _builder.newLine(); 691 _builder.append("\t\t\t"); 692 _builder.append("throw new IllegalStateException(\"Reference "); 693 DomainObject _from = it.getFrom(); 694 String _name_3 = _from.getName(); 695 _builder.append(_name_3, "\t\t\t"); 696 _builder.append("."); 697 String _name_4 = it.getName(); 698 _builder.append(_name_4, "\t\t\t"); 699 _builder.append(" contains unsaved instance. Cascade not supported. Save "); 700 DomainObject _to = it.getTo(); 701 String _name_5 = _to.getName(); 702 _builder.append(_name_5, "\t\t\t"); 703 _builder.append(" before saving "); 704 DomainObject _from_1 = it.getFrom(); 705 String _name_6 = _from_1.getName(); 706 _builder.append(_name_6, "\t\t\t"); 707 _builder.append(".\");"); 708 _builder.newLineIfNotEmpty(); 709 _builder.append("\t\t"); 710 _builder.append("}"); 711 _builder.newLine(); 712 _builder.append("\t\t"); 713 _builder.append("result.add(each.getId());"); 714 _builder.newLine(); 715 _builder.append("\t"); 716 _builder.append("}"); 717 _builder.newLine(); 718 _builder.append("\t"); 719 String _name_7 = it.getName(); 720 _builder.append(_name_7, "\t"); 721 String _unownedReferenceSuffix_1 = this.helper.unownedReferenceSuffix(it); 722 _builder.append(_unownedReferenceSuffix_1, "\t"); 723 _builder.append(" = result;"); 724 _builder.newLineIfNotEmpty(); 725 _builder.append("\t"); 726 _builder.append("return java.util.Collections.unmodifiable"); 727 String _collectionType = it.getCollectionType(); 728 String _firstUpper = this.helperBase.toFirstUpper(_collectionType); 729 _builder.append(_firstUpper, "\t"); 730 _builder.append("(result);"); 731 _builder.newLineIfNotEmpty(); 732 _builder.append("}"); 733 _builder.newLine(); 734 } else { 735 DomainObjectReferenceTmpl _next = this.getNext(); 736 String _manyReferenceIdsGetterBody = _next.manyReferenceIdsGetterBody(it); 737 _builder.append(_manyReferenceIdsGetterBody, ""); 738 _builder.newLineIfNotEmpty(); 739 } 740 } 741 return _builder.toString(); 742 } 743 744 public String _chained_manyReferenceAccessorsUnownedReference(final Reference it) { 745 StringConcatenation _builder = new StringConcatenation(); 746 DomainObjectReferenceTmpl _next = this.getNext(); 747 String _manyReferenceAccessorsUnownedReference = _next.manyReferenceAccessorsUnownedReference(it); 748 _builder.append(_manyReferenceAccessorsUnownedReference, ""); 749 _builder.newLineIfNotEmpty(); 750 { 751 boolean _mongoDb = this.mongoDbProperties.mongoDb(); 752 if (_mongoDb) { 753 String _manyReferenceMongoDbLazyGetter = this.manyReferenceMongoDbLazyGetter(it); 754 _builder.append(_manyReferenceMongoDbLazyGetter, ""); 755 _builder.newLineIfNotEmpty(); 756 String _additionalManyReferenceAccessors = this.additionalManyReferenceAccessors(it); 757 _builder.append(_additionalManyReferenceAccessors, ""); 758 _builder.newLineIfNotEmpty(); 759 } 760 } 761 return _builder.toString(); 762 } 763 764 public DomainObjectReferenceTmpl[] _getOverridesDispatchArray() { 765 org.sculptor.generator.template.domain.DomainObjectReferenceTmpl[] result = new org.sculptor.generator.template.domain.DomainObjectReferenceTmpl[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.NUM_METHODS]; 766 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEREFERENCEATTRIBUTEUNOWNEDREFERENCE_REFERENCE] = this; 767 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEUNOWNEDREFERENCEGETTER_REFERENCE] = this; 768 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEUNOWNEDREFERENCESETTER_REFERENCE] = this; 769 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEREFERENCEIDGETTERBODY_REFERENCE] = this; 770 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.ONEREFERENCEIDSETTERBODY_REFERENCE] = this; 771 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.MANYUNOWNEDREFERENCEATTRIBUTE_REFERENCE] = this; 772 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.MANYREFERENCEIDSGETTERBODY_REFERENCE] = this; 773 result[org.sculptor.generator.template.domain.DomainObjectReferenceTmplMethodIndexes.MANYREFERENCEACCESSORSUNOWNEDREFERENCE_REFERENCE] = this; 774 return result; 775 } 776}