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.builder; 018 019import java.util.List; 020import javax.inject.Inject; 021import org.eclipse.xtend2.lib.StringConcatenation; 022import org.eclipse.xtext.xbase.lib.CollectionLiterals; 023import org.eclipse.xtext.xbase.lib.Extension; 024import org.eclipse.xtext.xbase.lib.Functions.Function1; 025import org.eclipse.xtext.xbase.lib.IterableExtensions; 026import org.eclipse.xtext.xbase.lib.ListExtensions; 027import org.sculptor.generator.cartridge.builder.BuilderHelper; 028import org.sculptor.generator.chain.ChainLink; 029import org.sculptor.generator.chain.ChainOverridable; 030import org.sculptor.generator.ext.Helper; 031import org.sculptor.generator.ext.Properties; 032import org.sculptor.generator.template.domain.DomainObjectAttributeTmpl; 033import org.sculptor.generator.template.domain.DomainObjectConstructorTmpl; 034import org.sculptor.generator.template.domain.DomainObjectReferenceTmpl; 035import org.sculptor.generator.util.HelperBase; 036import org.sculptor.generator.util.OutputSlot; 037import sculptormetamodel.Attribute; 038import sculptormetamodel.DomainObject; 039import sculptormetamodel.NamedElement; 040import sculptormetamodel.Reference; 041 042@ChainOverridable 043@SuppressWarnings("all") 044public class BuilderTmpl extends ChainLink<BuilderTmpl> { 045 @Inject 046 @Extension 047 private BuilderHelper builderHelper; 048 049 @Inject 050 @Extension 051 private HelperBase helperBase; 052 053 @Inject 054 @Extension 055 private Helper helper; 056 057 @Inject 058 @Extension 059 private Properties properties; 060 061 @Inject 062 private DomainObjectAttributeTmpl domainObjectAttributeTmpl; 063 064 @Inject 065 private DomainObjectReferenceTmpl domainObjectReferenceTmpl; 066 067 @Inject 068 private DomainObjectConstructorTmpl domainObjectConstructorTmpl; 069 070 public String builder(final DomainObject it) { 071 BuilderTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDER_DOMAINOBJECT]; 072 return headObj._chained_builder(it); 073 } 074 075 public String builderBody(final DomainObject it) { 076 BuilderTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERBODY_DOMAINOBJECT]; 077 return headObj._chained_builderBody(it); 078 } 079 080 public String assignAttributeInConstructor(final NamedElement it) { 081 BuilderTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.ASSIGNATTRIBUTEINCONSTRUCTOR_NAMEDELEMENT]; 082 return headObj._chained_assignAttributeInConstructor(it); 083 } 084 085 public String multiReferenceAdd(final Reference it, final DomainObject obj) { 086 BuilderTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.MULTIREFERENCEADD_REFERENCE_DOMAINOBJECT]; 087 return headObj._chained_multiReferenceAdd(it, obj); 088 } 089 090 public String builderAttribute(final Attribute it) { 091 BuilderTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERATTRIBUTE_ATTRIBUTE]; 092 return headObj._chained_builderAttribute(it); 093 } 094 095 public String builderAttributeSetter(final Attribute it, final DomainObject obj) { 096 BuilderTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERATTRIBUTESETTER_ATTRIBUTE_DOMAINOBJECT]; 097 return headObj._chained_builderAttributeSetter(it, obj); 098 } 099 100 public String builderSingleReferenceSetter(final Reference it, final DomainObject obj) { 101 BuilderTmpl headObj = getMethodsDispatchHead()[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERSINGLEREFERENCESETTER_REFERENCE_DOMAINOBJECT]; 102 return headObj._chained_builderSingleReferenceSetter(it, obj); 103 } 104 105 public BuilderTmpl(final BuilderTmpl next) { 106 super(next); 107 } 108 109 public String _chained_builder(final DomainObject it) { 110 String _builderFqn = this.builderHelper.getBuilderFqn(it); 111 String _javaFileName = this.helper.javaFileName(_builderFqn); 112 StringConcatenation _builder = new StringConcatenation(); 113 String _javaHeader = this.properties.javaHeader(); 114 _builder.append(_javaHeader, ""); 115 _builder.newLineIfNotEmpty(); 116 _builder.append("package "); 117 String _builderPackage = this.builderHelper.getBuilderPackage(it); 118 _builder.append(_builderPackage, ""); 119 _builder.append(";"); 120 _builder.newLineIfNotEmpty(); 121 _builder.newLine(); 122 _builder.append("/// Sculptor code formatter imports ///"); 123 _builder.newLine(); 124 _builder.newLine(); 125 String _builderBody = this.builderBody(it); 126 _builder.append(_builderBody, ""); 127 _builder.newLineIfNotEmpty(); 128 return this.helper.fileOutput(_javaFileName, OutputSlot.TO_GEN_SRC, _builder.toString()); 129 } 130 131 public String _chained_builderBody(final DomainObject it) { 132 StringConcatenation _builder = new StringConcatenation(); 133 _builder.newLine(); 134 _builder.append("/**"); 135 _builder.newLine(); 136 _builder.append(" "); 137 _builder.append("* Builder for "); 138 String _name = it.getName(); 139 _builder.append(_name, " "); 140 _builder.append(" class."); 141 _builder.newLineIfNotEmpty(); 142 _builder.append(" "); 143 _builder.append("*/"); 144 _builder.newLine(); 145 _builder.append("public class "); 146 String _builderClassName = this.builderHelper.getBuilderClassName(it); 147 _builder.append(_builderClassName, ""); 148 _builder.append(" {"); 149 _builder.newLineIfNotEmpty(); 150 _builder.newLine(); 151 _builder.append("\t"); 152 List<Attribute> _builderAttributes = this.builderHelper.getBuilderAttributes(it); 153 final Function1<Attribute, String> _function = new Function1<Attribute, String>() { 154 @Override 155 public String apply(final Attribute a) { 156 return BuilderTmpl.this.domainObjectAttributeTmpl.attribute(a, false); 157 } 158 }; 159 List<String> _map = ListExtensions.<Attribute, String>map(_builderAttributes, _function); 160 String _join = IterableExtensions.join(_map); 161 _builder.append(_join, "\t"); 162 _builder.newLineIfNotEmpty(); 163 _builder.newLine(); 164 _builder.append("\t"); 165 List<Reference> _builderReferences = this.builderHelper.getBuilderReferences(it); 166 final Function1<Reference, Boolean> _function_1 = new Function1<Reference, Boolean>() { 167 @Override 168 public Boolean apply(final Reference r) { 169 boolean _isMany = r.isMany(); 170 return Boolean.valueOf((!_isMany)); 171 } 172 }; 173 Iterable<Reference> _filter = IterableExtensions.<Reference>filter(_builderReferences, _function_1); 174 final Function1<Reference, String> _function_2 = new Function1<Reference, String>() { 175 @Override 176 public String apply(final Reference e) { 177 return BuilderTmpl.this.domainObjectReferenceTmpl.oneReferenceAttribute(e, false); 178 } 179 }; 180 Iterable<String> _map_1 = IterableExtensions.<Reference, String>map(_filter, _function_2); 181 String _join_1 = IterableExtensions.join(_map_1); 182 _builder.append(_join_1, "\t"); 183 _builder.newLineIfNotEmpty(); 184 _builder.append("\t"); 185 List<Reference> _builderReferences_1 = this.builderHelper.getBuilderReferences(it); 186 final Function1<Reference, Boolean> _function_3 = new Function1<Reference, Boolean>() { 187 @Override 188 public Boolean apply(final Reference r) { 189 return Boolean.valueOf(r.isMany()); 190 } 191 }; 192 Iterable<Reference> _filter_1 = IterableExtensions.<Reference>filter(_builderReferences_1, _function_3); 193 final Function1<Reference, String> _function_4 = new Function1<Reference, String>() { 194 @Override 195 public String apply(final Reference e) { 196 return BuilderTmpl.this.domainObjectReferenceTmpl.manyReferenceAttribute(e, false); 197 } 198 }; 199 Iterable<String> _map_2 = IterableExtensions.<Reference, String>map(_filter_1, _function_4); 200 String _join_2 = IterableExtensions.join(_map_2); 201 _builder.append(_join_2, "\t"); 202 _builder.newLineIfNotEmpty(); 203 _builder.newLine(); 204 _builder.append("\t"); 205 _builder.append("/**"); 206 _builder.newLine(); 207 _builder.append("\t "); 208 _builder.append("* Static factory method for "); 209 String _builderClassName_1 = this.builderHelper.getBuilderClassName(it); 210 _builder.append(_builderClassName_1, "\t "); 211 _builder.newLineIfNotEmpty(); 212 _builder.append("\t "); 213 _builder.append("*/"); 214 _builder.newLine(); 215 _builder.append("\t"); 216 _builder.append("public static "); 217 String _name_1 = it.getName(); 218 _builder.append(_name_1, "\t"); 219 _builder.append("Builder "); 220 String _name_2 = it.getName(); 221 String _firstLower = this.helperBase.toFirstLower(_name_2); 222 _builder.append(_firstLower, "\t"); 223 _builder.append("() {"); 224 _builder.newLineIfNotEmpty(); 225 _builder.append("\t\t"); 226 _builder.append("return new "); 227 String _name_3 = it.getName(); 228 _builder.append(_name_3, "\t\t"); 229 _builder.append("Builder();"); 230 _builder.newLineIfNotEmpty(); 231 _builder.append("\t"); 232 _builder.append("}"); 233 _builder.newLine(); 234 _builder.newLine(); 235 _builder.append("\t"); 236 _builder.append("public "); 237 String _name_4 = it.getName(); 238 _builder.append(_name_4, "\t"); 239 _builder.append("Builder() {"); 240 _builder.newLineIfNotEmpty(); 241 _builder.append("\t"); 242 _builder.append("}"); 243 _builder.newLine(); 244 _builder.newLine(); 245 { 246 List<NamedElement> _builderConstructorParameters = this.builderHelper.getBuilderConstructorParameters(it); 247 boolean _isEmpty = _builderConstructorParameters.isEmpty(); 248 boolean _not = (!_isEmpty); 249 if (_not) { 250 _builder.append("\t"); 251 _builder.append("public "); 252 String _name_5 = it.getName(); 253 _builder.append(_name_5, "\t"); 254 _builder.append("Builder("); 255 List<NamedElement> _builderConstructorParameters_1 = this.builderHelper.getBuilderConstructorParameters(it); 256 final Function1<NamedElement, String> _function_5 = new Function1<NamedElement, String>() { 257 @Override 258 public String apply(final NamedElement p) { 259 return BuilderTmpl.this.domainObjectConstructorTmpl.parameterTypeAndName(p); 260 } 261 }; 262 List<String> _map_3 = ListExtensions.<NamedElement, String>map(_builderConstructorParameters_1, _function_5); 263 String _join_3 = IterableExtensions.join(_map_3, ","); 264 _builder.append(_join_3, "\t"); 265 _builder.append(") {"); 266 _builder.newLineIfNotEmpty(); 267 _builder.append("\t"); 268 _builder.newLine(); 269 { 270 List<NamedElement> _builderConstructorParameters_2 = this.builderHelper.getBuilderConstructorParameters(it); 271 for(final NamedElement p : _builderConstructorParameters_2) { 272 _builder.append("\t"); 273 _builder.append("\t"); 274 String _assignAttributeInConstructor = this.assignAttributeInConstructor(p); 275 _builder.append(_assignAttributeInConstructor, "\t\t"); 276 _builder.newLineIfNotEmpty(); 277 } 278 } 279 _builder.append("\t"); 280 _builder.append("}"); 281 _builder.newLine(); 282 } 283 } 284 _builder.newLine(); 285 _builder.append("\t"); 286 List<Attribute> _builderAttributes_1 = this.builderHelper.getBuilderAttributes(it); 287 final Function1<Attribute, String> _function_6 = new Function1<Attribute, String>() { 288 @Override 289 public String apply(final Attribute a) { 290 return BuilderTmpl.this.builderAttributeSetter(a, it); 291 } 292 }; 293 List<String> _map_4 = ListExtensions.<Attribute, String>map(_builderAttributes_1, _function_6); 294 String _join_4 = IterableExtensions.join(_map_4); 295 _builder.append(_join_4, "\t"); 296 _builder.newLineIfNotEmpty(); 297 _builder.newLine(); 298 _builder.append("\t"); 299 List<Reference> _builderReferences_2 = this.builderHelper.getBuilderReferences(it); 300 final Function1<Reference, Boolean> _function_7 = new Function1<Reference, Boolean>() { 301 @Override 302 public Boolean apply(final Reference r) { 303 boolean _isMany = r.isMany(); 304 return Boolean.valueOf((!_isMany)); 305 } 306 }; 307 Iterable<Reference> _filter_2 = IterableExtensions.<Reference>filter(_builderReferences_2, _function_7); 308 final Function1<Reference, String> _function_8 = new Function1<Reference, String>() { 309 @Override 310 public String apply(final Reference r) { 311 return BuilderTmpl.this.builderSingleReferenceSetter(r, it); 312 } 313 }; 314 Iterable<String> _map_5 = IterableExtensions.<Reference, String>map(_filter_2, _function_8); 315 String _join_5 = IterableExtensions.join(_map_5); 316 _builder.append(_join_5, "\t"); 317 _builder.newLineIfNotEmpty(); 318 _builder.append("\t"); 319 List<Reference> _builderReferences_3 = this.builderHelper.getBuilderReferences(it); 320 final Function1<Reference, Boolean> _function_9 = new Function1<Reference, Boolean>() { 321 @Override 322 public Boolean apply(final Reference r) { 323 return Boolean.valueOf(r.isMany()); 324 } 325 }; 326 Iterable<Reference> _filter_3 = IterableExtensions.<Reference>filter(_builderReferences_3, _function_9); 327 final Function1<Reference, String> _function_10 = new Function1<Reference, String>() { 328 @Override 329 public String apply(final Reference r) { 330 return BuilderTmpl.this.multiReferenceAdd(r, it); 331 } 332 }; 333 Iterable<String> _map_6 = IterableExtensions.<Reference, String>map(_filter_3, _function_10); 334 String _join_6 = IterableExtensions.join(_map_6); 335 _builder.append(_join_6, "\t"); 336 _builder.newLineIfNotEmpty(); 337 _builder.newLine(); 338 _builder.append("\t"); 339 List<Attribute> _builderAttributes_2 = this.builderHelper.getBuilderAttributes(it); 340 final Function1<Attribute, String> _function_11 = new Function1<Attribute, String>() { 341 @Override 342 public String apply(final Attribute a) { 343 return BuilderTmpl.this.domainObjectAttributeTmpl.propertyGetter(a); 344 } 345 }; 346 List<String> _map_7 = ListExtensions.<Attribute, String>map(_builderAttributes_2, _function_11); 347 String _join_7 = IterableExtensions.join(_map_7); 348 _builder.append(_join_7, "\t"); 349 _builder.newLineIfNotEmpty(); 350 _builder.newLine(); 351 _builder.append("\t"); 352 List<Reference> _builderReferences_4 = this.builderHelper.getBuilderReferences(it); 353 final Function1<Reference, Boolean> _function_12 = new Function1<Reference, Boolean>() { 354 @Override 355 public Boolean apply(final Reference r) { 356 boolean _isMany = r.isMany(); 357 return Boolean.valueOf((!_isMany)); 358 } 359 }; 360 Iterable<Reference> _filter_4 = IterableExtensions.<Reference>filter(_builderReferences_4, _function_12); 361 final Function1<Reference, String> _function_13 = new Function1<Reference, String>() { 362 @Override 363 public String apply(final Reference r) { 364 return BuilderTmpl.this.domainObjectReferenceTmpl.oneReferenceGetter(r, false); 365 } 366 }; 367 Iterable<String> _map_8 = IterableExtensions.<Reference, String>map(_filter_4, _function_13); 368 String _join_8 = IterableExtensions.join(_map_8); 369 _builder.append(_join_8, "\t"); 370 _builder.newLineIfNotEmpty(); 371 _builder.append("\t"); 372 List<Reference> _builderReferences_5 = this.builderHelper.getBuilderReferences(it); 373 final Function1<Reference, Boolean> _function_14 = new Function1<Reference, Boolean>() { 374 @Override 375 public Boolean apply(final Reference r) { 376 return Boolean.valueOf(r.isMany()); 377 } 378 }; 379 Iterable<Reference> _filter_5 = IterableExtensions.<Reference>filter(_builderReferences_5, _function_14); 380 final Function1<Reference, String> _function_15 = new Function1<Reference, String>() { 381 @Override 382 public String apply(final Reference r) { 383 return BuilderTmpl.this.domainObjectReferenceTmpl.manyReferenceGetter(r, false); 384 } 385 }; 386 Iterable<String> _map_9 = IterableExtensions.<Reference, String>map(_filter_5, _function_15); 387 String _join_9 = IterableExtensions.join(_map_9); 388 _builder.append(_join_9, "\t"); 389 _builder.newLineIfNotEmpty(); 390 _builder.newLine(); 391 _builder.append("\t"); 392 _builder.append("/**"); 393 _builder.newLine(); 394 _builder.append("\t "); 395 _builder.append("* @return new "); 396 String _name_6 = it.getName(); 397 _builder.append(_name_6, "\t "); 398 _builder.append(" instance constructed based on the values that have been set into this builder"); 399 _builder.newLineIfNotEmpty(); 400 _builder.append("\t "); 401 _builder.append("*/"); 402 _builder.newLine(); 403 _builder.append("\t"); 404 _builder.append("public "); 405 String _domainPackage = this.helperBase.getDomainPackage(it); 406 String _plus = (_domainPackage + "."); 407 String _name_7 = it.getName(); 408 String _plus_1 = (_plus + _name_7); 409 _builder.append(_plus_1, "\t"); 410 _builder.append(" build() {"); 411 _builder.newLineIfNotEmpty(); 412 _builder.append("\t\t"); 413 String _domainPackage_1 = this.helperBase.getDomainPackage(it); 414 String _plus_2 = (_domainPackage_1 + "."); 415 String _name_8 = it.getName(); 416 String _plus_3 = (_plus_2 + _name_8); 417 _builder.append(_plus_3, "\t\t"); 418 _builder.append(" obj = new "); 419 String _name_9 = it.getName(); 420 _builder.append(_name_9, "\t\t"); 421 _builder.append("("); 422 { 423 List<NamedElement> _builderConstructorParameters_3 = this.builderHelper.getBuilderConstructorParameters(it); 424 boolean _hasElements = false; 425 for(final NamedElement attr : _builderConstructorParameters_3) { 426 if (!_hasElements) { 427 _hasElements = true; 428 } else { 429 _builder.appendImmediate(", ", "\t\t"); 430 } 431 String _getAccessor = this.helper.getGetAccessor(attr); 432 _builder.append(_getAccessor, "\t\t"); 433 _builder.append("()"); 434 } 435 } 436 _builder.append(");"); 437 _builder.newLineIfNotEmpty(); 438 _builder.append("\t\t"); 439 final List<NamedElement> attrs = CollectionLiterals.<NamedElement>newArrayList(); 440 _builder.newLineIfNotEmpty(); 441 _builder.append("\t\t"); 442 String _xblockexpression = null; 443 { 444 List<Attribute> _builderAttributes_3 = this.builderHelper.getBuilderAttributes(it); 445 attrs.addAll(_builderAttributes_3); 446 List<Reference> _builderReferences_6 = this.builderHelper.getBuilderReferences(it); 447 final Function1<Reference, Boolean> _function_16 = new Function1<Reference, Boolean>() { 448 @Override 449 public Boolean apply(final Reference r) { 450 boolean _isMany = r.isMany(); 451 return Boolean.valueOf((!_isMany)); 452 } 453 }; 454 Iterable<Reference> _filter_6 = IterableExtensions.<Reference>filter(_builderReferences_6, _function_16); 455 List<Reference> _list = IterableExtensions.<Reference>toList(_filter_6); 456 attrs.addAll(_list); 457 List<NamedElement> _builderConstructorParameters_4 = this.builderHelper.getBuilderConstructorParameters(it); 458 attrs.removeAll(_builderConstructorParameters_4); 459 _xblockexpression = ""; 460 } 461 _builder.append(_xblockexpression, "\t\t"); 462 _builder.newLineIfNotEmpty(); 463 { 464 for(final NamedElement prop : attrs) { 465 _builder.append("\t\t"); 466 _builder.append("obj.set"); 467 String _name_10 = prop.getName(); 468 String _firstUpper = this.helperBase.toFirstUpper(_name_10); 469 _builder.append(_firstUpper, "\t\t"); 470 _builder.append("("); 471 String _name_11 = prop.getName(); 472 _builder.append(_name_11, "\t\t"); 473 _builder.append(");"); 474 _builder.newLineIfNotEmpty(); 475 } 476 } 477 _builder.append("\t\t"); 478 List<Reference> _builderReferences_6 = this.builderHelper.getBuilderReferences(it); 479 final Function1<Reference, Boolean> _function_16 = new Function1<Reference, Boolean>() { 480 @Override 481 public Boolean apply(final Reference r) { 482 return Boolean.valueOf(r.isMany()); 483 } 484 }; 485 Iterable<Reference> _filter_6 = IterableExtensions.<Reference>filter(_builderReferences_6, _function_16); 486 final List<Reference> refs = IterableExtensions.<Reference>toList(_filter_6); 487 _builder.newLineIfNotEmpty(); 488 _builder.append("\t\t"); 489 String _xblockexpression_1 = null; 490 { 491 List<NamedElement> _builderConstructorParameters_4 = this.builderHelper.getBuilderConstructorParameters(it); 492 refs.removeAll(_builderConstructorParameters_4); 493 _xblockexpression_1 = ""; 494 } 495 _builder.append(_xblockexpression_1, "\t\t"); 496 _builder.newLineIfNotEmpty(); 497 { 498 for(final Reference prop_1 : refs) { 499 _builder.append("\t\t"); 500 _builder.append("obj.get"); 501 String _name_12 = prop_1.getName(); 502 String _firstUpper_1 = this.helperBase.toFirstUpper(_name_12); 503 _builder.append(_firstUpper_1, "\t\t"); 504 _builder.append("().addAll("); 505 String _name_13 = prop_1.getName(); 506 _builder.append(_name_13, "\t\t"); 507 _builder.append(");"); 508 _builder.newLineIfNotEmpty(); 509 } 510 } 511 _builder.newLine(); 512 _builder.append("\t\t"); 513 _builder.append("return obj;"); 514 _builder.newLine(); 515 _builder.append("\t"); 516 _builder.append("}"); 517 _builder.newLine(); 518 _builder.append("}"); 519 _builder.newLine(); 520 _builder.newLine(); 521 return _builder.toString(); 522 } 523 524 public String _chained_assignAttributeInConstructor(final NamedElement it) { 525 StringConcatenation _builder = new StringConcatenation(); 526 { 527 boolean _and = false; 528 if (!(it instanceof Reference)) { 529 _and = false; 530 } else { 531 boolean _isMany = ((Reference) it).isMany(); 532 _and = _isMany; 533 } 534 if (_and) { 535 _builder.append("this."); 536 String _name = it.getName(); 537 _builder.append(_name, ""); 538 _builder.append(".addAll("); 539 String _name_1 = it.getName(); 540 _builder.append(_name_1, ""); 541 _builder.append(");"); 542 _builder.newLineIfNotEmpty(); 543 } else { 544 _builder.append("this."); 545 String _name_2 = it.getName(); 546 _builder.append(_name_2, ""); 547 _builder.append(" = "); 548 String _name_3 = it.getName(); 549 _builder.append(_name_3, ""); 550 _builder.append(";"); 551 _builder.newLineIfNotEmpty(); 552 } 553 } 554 _builder.newLine(); 555 return _builder.toString(); 556 } 557 558 public String _chained_multiReferenceAdd(final Reference it, final DomainObject obj) { 559 StringConcatenation _builder = new StringConcatenation(); 560 _builder.append("/**"); 561 _builder.newLine(); 562 _builder.append(" "); 563 _builder.append("* Adds an object to the to-many"); 564 _builder.newLine(); 565 _builder.append(" "); 566 _builder.append("* association."); 567 _builder.newLine(); 568 _builder.append(" "); 569 _builder.append("* It is added the collection {@link #get"); 570 String _name = it.getName(); 571 String _firstUpper = this.helperBase.toFirstUpper(_name); 572 _builder.append(_firstUpper, " "); 573 _builder.append("}."); 574 _builder.newLineIfNotEmpty(); 575 _builder.append(" "); 576 _builder.append("*/"); 577 _builder.newLine(); 578 _builder.append("public "); 579 String _name_1 = obj.getName(); 580 _builder.append(_name_1, ""); 581 _builder.append("Builder add"); 582 String _name_2 = it.getName(); 583 String _firstUpper_1 = this.helperBase.toFirstUpper(_name_2); 584 String _singular = this.helper.singular(_firstUpper_1); 585 _builder.append(_singular, ""); 586 _builder.append("("); 587 String _typeName = this.helperBase.getTypeName(it); 588 _builder.append(_typeName, ""); 589 _builder.append(" "); 590 String _name_3 = it.getName(); 591 String _singular_1 = this.helper.singular(_name_3); 592 _builder.append(_singular_1, ""); 593 _builder.append("Element) {"); 594 _builder.newLineIfNotEmpty(); 595 _builder.append("\t"); 596 _builder.append("get"); 597 String _name_4 = it.getName(); 598 String _firstUpper_2 = this.helperBase.toFirstUpper(_name_4); 599 _builder.append(_firstUpper_2, "\t"); 600 _builder.append("().add("); 601 String _name_5 = it.getName(); 602 String _singular_2 = this.helper.singular(_name_5); 603 _builder.append(_singular_2, "\t"); 604 _builder.append("Element);"); 605 _builder.newLineIfNotEmpty(); 606 _builder.append("\t"); 607 _builder.append("return this;"); 608 _builder.newLine(); 609 _builder.append("}"); 610 _builder.newLine(); 611 return _builder.toString(); 612 } 613 614 public String _chained_builderAttribute(final Attribute it) { 615 StringConcatenation _builder = new StringConcatenation(); 616 _builder.append("protected "); 617 String _implTypeName = this.helperBase.getImplTypeName(it); 618 _builder.append(_implTypeName, ""); 619 _builder.append(" "); 620 String _name = it.getName(); 621 _builder.append(_name, ""); 622 _builder.append(";"); 623 _builder.newLineIfNotEmpty(); 624 return _builder.toString(); 625 } 626 627 public String _chained_builderAttributeSetter(final Attribute it, final DomainObject obj) { 628 StringConcatenation _builder = new StringConcatenation(); 629 String _formatJavaDoc = this.helper.formatJavaDoc(it); 630 _builder.append(_formatJavaDoc, ""); 631 _builder.newLineIfNotEmpty(); 632 _builder.append("public "); 633 String _name = obj.getName(); 634 _builder.append(_name, ""); 635 _builder.append("Builder "); 636 String _name_1 = it.getName(); 637 _builder.append(_name_1, ""); 638 _builder.append("("); 639 String _typeName = this.helperBase.getTypeName(it); 640 _builder.append(_typeName, ""); 641 _builder.append(" val) {"); 642 _builder.newLineIfNotEmpty(); 643 _builder.append("\t"); 644 _builder.append("this."); 645 String _name_2 = it.getName(); 646 _builder.append(_name_2, "\t"); 647 _builder.append(" = val;"); 648 _builder.newLineIfNotEmpty(); 649 _builder.append("\t"); 650 _builder.append("return this;"); 651 _builder.newLine(); 652 _builder.append("}"); 653 _builder.newLine(); 654 return _builder.toString(); 655 } 656 657 public String _chained_builderSingleReferenceSetter(final Reference it, final DomainObject obj) { 658 StringConcatenation _builder = new StringConcatenation(); 659 String _formatJavaDoc = this.helper.formatJavaDoc(it); 660 _builder.append(_formatJavaDoc, ""); 661 _builder.newLineIfNotEmpty(); 662 _builder.append("public "); 663 String _name = obj.getName(); 664 _builder.append(_name, ""); 665 _builder.append("Builder "); 666 String _name_1 = it.getName(); 667 _builder.append(_name_1, ""); 668 _builder.append("("); 669 String _typeName = this.helperBase.getTypeName(it); 670 _builder.append(_typeName, ""); 671 _builder.append(" "); 672 String _name_2 = it.getName(); 673 _builder.append(_name_2, ""); 674 _builder.append(") {"); 675 _builder.newLineIfNotEmpty(); 676 _builder.append("\t"); 677 _builder.append("this."); 678 String _name_3 = it.getName(); 679 _builder.append(_name_3, "\t"); 680 _builder.append(" = "); 681 String _name_4 = it.getName(); 682 _builder.append(_name_4, "\t"); 683 _builder.append(";"); 684 _builder.newLineIfNotEmpty(); 685 _builder.append("\t"); 686 _builder.append("return this;"); 687 _builder.newLine(); 688 _builder.append("}"); 689 _builder.newLine(); 690 return _builder.toString(); 691 } 692 693 public BuilderTmpl[] _getOverridesDispatchArray() { 694 org.sculptor.generator.cartridge.builder.BuilderTmpl[] result = new org.sculptor.generator.cartridge.builder.BuilderTmpl[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.NUM_METHODS]; 695 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDER_DOMAINOBJECT] = this; 696 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERBODY_DOMAINOBJECT] = this; 697 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.ASSIGNATTRIBUTEINCONSTRUCTOR_NAMEDELEMENT] = this; 698 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.MULTIREFERENCEADD_REFERENCE_DOMAINOBJECT] = this; 699 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERATTRIBUTE_ATTRIBUTE] = this; 700 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERATTRIBUTESETTER_ATTRIBUTE_DOMAINOBJECT] = this; 701 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERSINGLEREFERENCESETTER_REFERENCE_DOMAINOBJECT] = this; 702 return result; 703 } 704}