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 public String apply(final Attribute a) { 155 return BuilderTmpl.this.domainObjectAttributeTmpl.attribute(a, false); 156 } 157 }; 158 List<String> _map = ListExtensions.<Attribute, String>map(_builderAttributes, _function); 159 String _join = IterableExtensions.join(_map); 160 _builder.append(_join, "\t"); 161 _builder.newLineIfNotEmpty(); 162 _builder.newLine(); 163 _builder.append("\t"); 164 List<Reference> _builderReferences = this.builderHelper.getBuilderReferences(it); 165 final Function1<Reference, Boolean> _function_1 = new Function1<Reference, Boolean>() { 166 public Boolean apply(final Reference r) { 167 boolean _isMany = r.isMany(); 168 return Boolean.valueOf((!_isMany)); 169 } 170 }; 171 Iterable<Reference> _filter = IterableExtensions.<Reference>filter(_builderReferences, _function_1); 172 final Function1<Reference, String> _function_2 = new Function1<Reference, String>() { 173 public String apply(final Reference e) { 174 return BuilderTmpl.this.domainObjectReferenceTmpl.oneReferenceAttribute(e, false); 175 } 176 }; 177 Iterable<String> _map_1 = IterableExtensions.<Reference, String>map(_filter, _function_2); 178 String _join_1 = IterableExtensions.join(_map_1); 179 _builder.append(_join_1, "\t"); 180 _builder.newLineIfNotEmpty(); 181 _builder.append("\t"); 182 List<Reference> _builderReferences_1 = this.builderHelper.getBuilderReferences(it); 183 final Function1<Reference, Boolean> _function_3 = new Function1<Reference, Boolean>() { 184 public Boolean apply(final Reference r) { 185 return Boolean.valueOf(r.isMany()); 186 } 187 }; 188 Iterable<Reference> _filter_1 = IterableExtensions.<Reference>filter(_builderReferences_1, _function_3); 189 final Function1<Reference, String> _function_4 = new Function1<Reference, String>() { 190 public String apply(final Reference e) { 191 return BuilderTmpl.this.domainObjectReferenceTmpl.manyReferenceAttribute(e, false); 192 } 193 }; 194 Iterable<String> _map_2 = IterableExtensions.<Reference, String>map(_filter_1, _function_4); 195 String _join_2 = IterableExtensions.join(_map_2); 196 _builder.append(_join_2, "\t"); 197 _builder.newLineIfNotEmpty(); 198 _builder.newLine(); 199 _builder.append("\t"); 200 _builder.append("/**"); 201 _builder.newLine(); 202 _builder.append("\t "); 203 _builder.append("* Static factory method for "); 204 String _builderClassName_1 = this.builderHelper.getBuilderClassName(it); 205 _builder.append(_builderClassName_1, "\t "); 206 _builder.newLineIfNotEmpty(); 207 _builder.append("\t "); 208 _builder.append("*/"); 209 _builder.newLine(); 210 _builder.append("\t"); 211 _builder.append("public static "); 212 String _name_1 = it.getName(); 213 _builder.append(_name_1, "\t"); 214 _builder.append("Builder "); 215 String _name_2 = it.getName(); 216 String _firstLower = this.helperBase.toFirstLower(_name_2); 217 _builder.append(_firstLower, "\t"); 218 _builder.append("() {"); 219 _builder.newLineIfNotEmpty(); 220 _builder.append("\t\t"); 221 _builder.append("return new "); 222 String _name_3 = it.getName(); 223 _builder.append(_name_3, "\t\t"); 224 _builder.append("Builder();"); 225 _builder.newLineIfNotEmpty(); 226 _builder.append("\t"); 227 _builder.append("}"); 228 _builder.newLine(); 229 _builder.newLine(); 230 _builder.append("\t"); 231 _builder.append("public "); 232 String _name_4 = it.getName(); 233 _builder.append(_name_4, "\t"); 234 _builder.append("Builder() {"); 235 _builder.newLineIfNotEmpty(); 236 _builder.append("\t"); 237 _builder.append("}"); 238 _builder.newLine(); 239 _builder.newLine(); 240 { 241 List<NamedElement> _builderConstructorParameters = this.builderHelper.getBuilderConstructorParameters(it); 242 boolean _isEmpty = _builderConstructorParameters.isEmpty(); 243 boolean _not = (!_isEmpty); 244 if (_not) { 245 _builder.append("\t"); 246 _builder.append("public "); 247 String _name_5 = it.getName(); 248 _builder.append(_name_5, "\t"); 249 _builder.append("Builder("); 250 List<NamedElement> _builderConstructorParameters_1 = this.builderHelper.getBuilderConstructorParameters(it); 251 final Function1<NamedElement, String> _function_5 = new Function1<NamedElement, String>() { 252 public String apply(final NamedElement p) { 253 return BuilderTmpl.this.domainObjectConstructorTmpl.parameterTypeAndName(p); 254 } 255 }; 256 List<String> _map_3 = ListExtensions.<NamedElement, String>map(_builderConstructorParameters_1, _function_5); 257 String _join_3 = IterableExtensions.join(_map_3, ","); 258 _builder.append(_join_3, "\t"); 259 _builder.append(") {"); 260 _builder.newLineIfNotEmpty(); 261 _builder.append("\t"); 262 _builder.newLine(); 263 { 264 List<NamedElement> _builderConstructorParameters_2 = this.builderHelper.getBuilderConstructorParameters(it); 265 for(final NamedElement p : _builderConstructorParameters_2) { 266 _builder.append("\t"); 267 _builder.append("\t"); 268 String _assignAttributeInConstructor = this.assignAttributeInConstructor(p); 269 _builder.append(_assignAttributeInConstructor, "\t\t"); 270 _builder.newLineIfNotEmpty(); 271 } 272 } 273 _builder.append("\t"); 274 _builder.append("}"); 275 _builder.newLine(); 276 } 277 } 278 _builder.newLine(); 279 _builder.append("\t"); 280 List<Attribute> _builderAttributes_1 = this.builderHelper.getBuilderAttributes(it); 281 final Function1<Attribute, String> _function_6 = new Function1<Attribute, String>() { 282 public String apply(final Attribute a) { 283 return BuilderTmpl.this.builderAttributeSetter(a, it); 284 } 285 }; 286 List<String> _map_4 = ListExtensions.<Attribute, String>map(_builderAttributes_1, _function_6); 287 String _join_4 = IterableExtensions.join(_map_4); 288 _builder.append(_join_4, "\t"); 289 _builder.newLineIfNotEmpty(); 290 _builder.newLine(); 291 _builder.append("\t"); 292 List<Reference> _builderReferences_2 = this.builderHelper.getBuilderReferences(it); 293 final Function1<Reference, Boolean> _function_7 = new Function1<Reference, Boolean>() { 294 public Boolean apply(final Reference r) { 295 boolean _isMany = r.isMany(); 296 return Boolean.valueOf((!_isMany)); 297 } 298 }; 299 Iterable<Reference> _filter_2 = IterableExtensions.<Reference>filter(_builderReferences_2, _function_7); 300 final Function1<Reference, String> _function_8 = new Function1<Reference, String>() { 301 public String apply(final Reference r) { 302 return BuilderTmpl.this.builderSingleReferenceSetter(r, it); 303 } 304 }; 305 Iterable<String> _map_5 = IterableExtensions.<Reference, String>map(_filter_2, _function_8); 306 String _join_5 = IterableExtensions.join(_map_5); 307 _builder.append(_join_5, "\t"); 308 _builder.newLineIfNotEmpty(); 309 _builder.append("\t"); 310 List<Reference> _builderReferences_3 = this.builderHelper.getBuilderReferences(it); 311 final Function1<Reference, Boolean> _function_9 = new Function1<Reference, Boolean>() { 312 public Boolean apply(final Reference r) { 313 return Boolean.valueOf(r.isMany()); 314 } 315 }; 316 Iterable<Reference> _filter_3 = IterableExtensions.<Reference>filter(_builderReferences_3, _function_9); 317 final Function1<Reference, String> _function_10 = new Function1<Reference, String>() { 318 public String apply(final Reference r) { 319 return BuilderTmpl.this.multiReferenceAdd(r, it); 320 } 321 }; 322 Iterable<String> _map_6 = IterableExtensions.<Reference, String>map(_filter_3, _function_10); 323 String _join_6 = IterableExtensions.join(_map_6); 324 _builder.append(_join_6, "\t"); 325 _builder.newLineIfNotEmpty(); 326 _builder.newLine(); 327 _builder.append("\t"); 328 List<Attribute> _builderAttributes_2 = this.builderHelper.getBuilderAttributes(it); 329 final Function1<Attribute, String> _function_11 = new Function1<Attribute, String>() { 330 public String apply(final Attribute a) { 331 return BuilderTmpl.this.domainObjectAttributeTmpl.propertyGetter(a); 332 } 333 }; 334 List<String> _map_7 = ListExtensions.<Attribute, String>map(_builderAttributes_2, _function_11); 335 String _join_7 = IterableExtensions.join(_map_7); 336 _builder.append(_join_7, "\t"); 337 _builder.newLineIfNotEmpty(); 338 _builder.newLine(); 339 _builder.append("\t"); 340 List<Reference> _builderReferences_4 = this.builderHelper.getBuilderReferences(it); 341 final Function1<Reference, Boolean> _function_12 = new Function1<Reference, Boolean>() { 342 public Boolean apply(final Reference r) { 343 boolean _isMany = r.isMany(); 344 return Boolean.valueOf((!_isMany)); 345 } 346 }; 347 Iterable<Reference> _filter_4 = IterableExtensions.<Reference>filter(_builderReferences_4, _function_12); 348 final Function1<Reference, String> _function_13 = new Function1<Reference, String>() { 349 public String apply(final Reference r) { 350 return BuilderTmpl.this.domainObjectReferenceTmpl.oneReferenceGetter(r, false); 351 } 352 }; 353 Iterable<String> _map_8 = IterableExtensions.<Reference, String>map(_filter_4, _function_13); 354 String _join_8 = IterableExtensions.join(_map_8); 355 _builder.append(_join_8, "\t"); 356 _builder.newLineIfNotEmpty(); 357 _builder.append("\t"); 358 List<Reference> _builderReferences_5 = this.builderHelper.getBuilderReferences(it); 359 final Function1<Reference, Boolean> _function_14 = new Function1<Reference, Boolean>() { 360 public Boolean apply(final Reference r) { 361 return Boolean.valueOf(r.isMany()); 362 } 363 }; 364 Iterable<Reference> _filter_5 = IterableExtensions.<Reference>filter(_builderReferences_5, _function_14); 365 final Function1<Reference, String> _function_15 = new Function1<Reference, String>() { 366 public String apply(final Reference r) { 367 return BuilderTmpl.this.domainObjectReferenceTmpl.manyReferenceGetter(r, false); 368 } 369 }; 370 Iterable<String> _map_9 = IterableExtensions.<Reference, String>map(_filter_5, _function_15); 371 String _join_9 = IterableExtensions.join(_map_9); 372 _builder.append(_join_9, "\t"); 373 _builder.newLineIfNotEmpty(); 374 _builder.newLine(); 375 _builder.append("\t"); 376 _builder.append("/**"); 377 _builder.newLine(); 378 _builder.append("\t "); 379 _builder.append("* @return new "); 380 String _name_6 = it.getName(); 381 _builder.append(_name_6, "\t "); 382 _builder.append(" instance constructed based on the values that have been set into this builder"); 383 _builder.newLineIfNotEmpty(); 384 _builder.append("\t "); 385 _builder.append("*/"); 386 _builder.newLine(); 387 _builder.append("\t"); 388 _builder.append("public "); 389 String _domainPackage = this.helperBase.getDomainPackage(it); 390 String _plus = (_domainPackage + "."); 391 String _name_7 = it.getName(); 392 String _plus_1 = (_plus + _name_7); 393 _builder.append(_plus_1, "\t"); 394 _builder.append(" build() {"); 395 _builder.newLineIfNotEmpty(); 396 _builder.append("\t\t"); 397 String _domainPackage_1 = this.helperBase.getDomainPackage(it); 398 String _plus_2 = (_domainPackage_1 + "."); 399 String _name_8 = it.getName(); 400 String _plus_3 = (_plus_2 + _name_8); 401 _builder.append(_plus_3, "\t\t"); 402 _builder.append(" obj = new "); 403 String _name_9 = it.getName(); 404 _builder.append(_name_9, "\t\t"); 405 _builder.append("("); 406 { 407 List<NamedElement> _builderConstructorParameters_3 = this.builderHelper.getBuilderConstructorParameters(it); 408 boolean _hasElements = false; 409 for(final NamedElement attr : _builderConstructorParameters_3) { 410 if (!_hasElements) { 411 _hasElements = true; 412 } else { 413 _builder.appendImmediate(", ", "\t\t"); 414 } 415 String _getAccessor = this.helper.getGetAccessor(attr); 416 _builder.append(_getAccessor, "\t\t"); 417 _builder.append("()"); 418 } 419 } 420 _builder.append(");"); 421 _builder.newLineIfNotEmpty(); 422 _builder.append("\t\t"); 423 final List<NamedElement> attrs = CollectionLiterals.<NamedElement>newArrayList(); 424 _builder.newLineIfNotEmpty(); 425 _builder.append("\t\t"); 426 String _xblockexpression = null; 427 { 428 List<Attribute> _builderAttributes_3 = this.builderHelper.getBuilderAttributes(it); 429 attrs.addAll(_builderAttributes_3); 430 List<Reference> _builderReferences_6 = this.builderHelper.getBuilderReferences(it); 431 final Function1<Reference, Boolean> _function_16 = new Function1<Reference, Boolean>() { 432 public Boolean apply(final Reference r) { 433 boolean _isMany = r.isMany(); 434 return Boolean.valueOf((!_isMany)); 435 } 436 }; 437 Iterable<Reference> _filter_6 = IterableExtensions.<Reference>filter(_builderReferences_6, _function_16); 438 List<Reference> _list = IterableExtensions.<Reference>toList(_filter_6); 439 attrs.addAll(_list); 440 List<NamedElement> _builderConstructorParameters_4 = this.builderHelper.getBuilderConstructorParameters(it); 441 attrs.removeAll(_builderConstructorParameters_4); 442 _xblockexpression = ""; 443 } 444 _builder.append(_xblockexpression, "\t\t"); 445 _builder.newLineIfNotEmpty(); 446 { 447 for(final NamedElement prop : attrs) { 448 _builder.append("\t\t"); 449 _builder.append("obj.set"); 450 String _name_10 = prop.getName(); 451 String _firstUpper = this.helperBase.toFirstUpper(_name_10); 452 _builder.append(_firstUpper, "\t\t"); 453 _builder.append("("); 454 String _name_11 = prop.getName(); 455 _builder.append(_name_11, "\t\t"); 456 _builder.append(");"); 457 _builder.newLineIfNotEmpty(); 458 } 459 } 460 _builder.append("\t\t"); 461 List<Reference> _builderReferences_6 = this.builderHelper.getBuilderReferences(it); 462 final Function1<Reference, Boolean> _function_16 = new Function1<Reference, Boolean>() { 463 public Boolean apply(final Reference r) { 464 return Boolean.valueOf(r.isMany()); 465 } 466 }; 467 Iterable<Reference> _filter_6 = IterableExtensions.<Reference>filter(_builderReferences_6, _function_16); 468 final List<Reference> refs = IterableExtensions.<Reference>toList(_filter_6); 469 _builder.newLineIfNotEmpty(); 470 _builder.append("\t\t"); 471 String _xblockexpression_1 = null; 472 { 473 List<NamedElement> _builderConstructorParameters_4 = this.builderHelper.getBuilderConstructorParameters(it); 474 refs.removeAll(_builderConstructorParameters_4); 475 _xblockexpression_1 = ""; 476 } 477 _builder.append(_xblockexpression_1, "\t\t"); 478 _builder.newLineIfNotEmpty(); 479 { 480 for(final Reference prop_1 : refs) { 481 _builder.append("\t\t"); 482 _builder.append("obj.get"); 483 String _name_12 = prop_1.getName(); 484 String _firstUpper_1 = this.helperBase.toFirstUpper(_name_12); 485 _builder.append(_firstUpper_1, "\t\t"); 486 _builder.append("().addAll("); 487 String _name_13 = prop_1.getName(); 488 _builder.append(_name_13, "\t\t"); 489 _builder.append(");"); 490 _builder.newLineIfNotEmpty(); 491 } 492 } 493 _builder.newLine(); 494 _builder.append("\t\t"); 495 _builder.append("return obj;"); 496 _builder.newLine(); 497 _builder.append("\t"); 498 _builder.append("}"); 499 _builder.newLine(); 500 _builder.append("}"); 501 _builder.newLine(); 502 _builder.newLine(); 503 return _builder.toString(); 504 } 505 506 public String _chained_assignAttributeInConstructor(final NamedElement it) { 507 StringConcatenation _builder = new StringConcatenation(); 508 { 509 boolean _and = false; 510 if (!(it instanceof Reference)) { 511 _and = false; 512 } else { 513 boolean _isMany = ((Reference) it).isMany(); 514 _and = _isMany; 515 } 516 if (_and) { 517 _builder.append("this."); 518 String _name = it.getName(); 519 _builder.append(_name, ""); 520 _builder.append(".addAll("); 521 String _name_1 = it.getName(); 522 _builder.append(_name_1, ""); 523 _builder.append(");"); 524 _builder.newLineIfNotEmpty(); 525 } else { 526 _builder.append("this."); 527 String _name_2 = it.getName(); 528 _builder.append(_name_2, ""); 529 _builder.append(" = "); 530 String _name_3 = it.getName(); 531 _builder.append(_name_3, ""); 532 _builder.append(";"); 533 _builder.newLineIfNotEmpty(); 534 } 535 } 536 _builder.newLine(); 537 return _builder.toString(); 538 } 539 540 public String _chained_multiReferenceAdd(final Reference it, final DomainObject obj) { 541 StringConcatenation _builder = new StringConcatenation(); 542 _builder.append("/**"); 543 _builder.newLine(); 544 _builder.append(" "); 545 _builder.append("* Adds an object to the to-many"); 546 _builder.newLine(); 547 _builder.append(" "); 548 _builder.append("* association."); 549 _builder.newLine(); 550 _builder.append(" "); 551 _builder.append("* It is added the collection {@link #get"); 552 String _name = it.getName(); 553 String _firstUpper = this.helperBase.toFirstUpper(_name); 554 _builder.append(_firstUpper, " "); 555 _builder.append("}."); 556 _builder.newLineIfNotEmpty(); 557 _builder.append(" "); 558 _builder.append("*/"); 559 _builder.newLine(); 560 _builder.append("public "); 561 String _name_1 = obj.getName(); 562 _builder.append(_name_1, ""); 563 _builder.append("Builder add"); 564 String _name_2 = it.getName(); 565 String _firstUpper_1 = this.helperBase.toFirstUpper(_name_2); 566 String _singular = this.helper.singular(_firstUpper_1); 567 _builder.append(_singular, ""); 568 _builder.append("("); 569 String _typeName = this.helperBase.getTypeName(it); 570 _builder.append(_typeName, ""); 571 _builder.append(" "); 572 String _name_3 = it.getName(); 573 String _singular_1 = this.helper.singular(_name_3); 574 _builder.append(_singular_1, ""); 575 _builder.append("Element) {"); 576 _builder.newLineIfNotEmpty(); 577 _builder.append("\t"); 578 _builder.append("get"); 579 String _name_4 = it.getName(); 580 String _firstUpper_2 = this.helperBase.toFirstUpper(_name_4); 581 _builder.append(_firstUpper_2, "\t"); 582 _builder.append("().add("); 583 String _name_5 = it.getName(); 584 String _singular_2 = this.helper.singular(_name_5); 585 _builder.append(_singular_2, "\t"); 586 _builder.append("Element);"); 587 _builder.newLineIfNotEmpty(); 588 _builder.append("\t"); 589 _builder.append("return this;"); 590 _builder.newLine(); 591 _builder.append("}"); 592 _builder.newLine(); 593 return _builder.toString(); 594 } 595 596 public String _chained_builderAttribute(final Attribute it) { 597 StringConcatenation _builder = new StringConcatenation(); 598 _builder.append("protected "); 599 String _implTypeName = this.helperBase.getImplTypeName(it); 600 _builder.append(_implTypeName, ""); 601 _builder.append(" "); 602 String _name = it.getName(); 603 _builder.append(_name, ""); 604 _builder.append(";"); 605 _builder.newLineIfNotEmpty(); 606 return _builder.toString(); 607 } 608 609 public String _chained_builderAttributeSetter(final Attribute it, final DomainObject obj) { 610 StringConcatenation _builder = new StringConcatenation(); 611 String _formatJavaDoc = this.helper.formatJavaDoc(it); 612 _builder.append(_formatJavaDoc, ""); 613 _builder.newLineIfNotEmpty(); 614 _builder.append("public "); 615 String _name = obj.getName(); 616 _builder.append(_name, ""); 617 _builder.append("Builder "); 618 String _name_1 = it.getName(); 619 _builder.append(_name_1, ""); 620 _builder.append("("); 621 String _typeName = this.helperBase.getTypeName(it); 622 _builder.append(_typeName, ""); 623 _builder.append(" val) {"); 624 _builder.newLineIfNotEmpty(); 625 _builder.append("\t"); 626 _builder.append("this."); 627 String _name_2 = it.getName(); 628 _builder.append(_name_2, "\t"); 629 _builder.append(" = val;"); 630 _builder.newLineIfNotEmpty(); 631 _builder.append("\t"); 632 _builder.append("return this;"); 633 _builder.newLine(); 634 _builder.append("}"); 635 _builder.newLine(); 636 return _builder.toString(); 637 } 638 639 public String _chained_builderSingleReferenceSetter(final Reference it, final DomainObject obj) { 640 StringConcatenation _builder = new StringConcatenation(); 641 String _formatJavaDoc = this.helper.formatJavaDoc(it); 642 _builder.append(_formatJavaDoc, ""); 643 _builder.newLineIfNotEmpty(); 644 _builder.append("public "); 645 String _name = obj.getName(); 646 _builder.append(_name, ""); 647 _builder.append("Builder "); 648 String _name_1 = it.getName(); 649 _builder.append(_name_1, ""); 650 _builder.append("("); 651 String _typeName = this.helperBase.getTypeName(it); 652 _builder.append(_typeName, ""); 653 _builder.append(" "); 654 String _name_2 = it.getName(); 655 _builder.append(_name_2, ""); 656 _builder.append(") {"); 657 _builder.newLineIfNotEmpty(); 658 _builder.append("\t"); 659 _builder.append("this."); 660 String _name_3 = it.getName(); 661 _builder.append(_name_3, "\t"); 662 _builder.append(" = "); 663 String _name_4 = it.getName(); 664 _builder.append(_name_4, "\t"); 665 _builder.append(";"); 666 _builder.newLineIfNotEmpty(); 667 _builder.append("\t"); 668 _builder.append("return this;"); 669 _builder.newLine(); 670 _builder.append("}"); 671 _builder.newLine(); 672 return _builder.toString(); 673 } 674 675 public BuilderTmpl[] _getOverridesDispatchArray() { 676 org.sculptor.generator.cartridge.builder.BuilderTmpl[] result = new org.sculptor.generator.cartridge.builder.BuilderTmpl[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.NUM_METHODS]; 677 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDER_DOMAINOBJECT] = this; 678 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERBODY_DOMAINOBJECT] = this; 679 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.ASSIGNATTRIBUTEINCONSTRUCTOR_NAMEDELEMENT] = this; 680 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.MULTIREFERENCEADD_REFERENCE_DOMAINOBJECT] = this; 681 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERATTRIBUTE_ATTRIBUTE] = this; 682 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERATTRIBUTESETTER_ATTRIBUTE_DOMAINOBJECT] = this; 683 result[org.sculptor.generator.cartridge.builder.BuilderTmplMethodIndexes.BUILDERSINGLEREFERENCESETTER_REFERENCE_DOMAINOBJECT] = this; 684 return result; 685 } 686}