All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.tentackle.persist.wurblet.PdoRelations Maven / Gradle / Ivy

// wurblet generated by Wurbelizer 21.6.0.0, see https://wurbelizer.org

package org.tentackle.persist.wurblet;

import org.tentackle.wurblet.*;
import org.tentackle.buildsupport.*;
import java.util.*;
import java.io.*;
import org.tentackle.common.*;
import org.wurbelizer.wurbel.*;
import org.tentackle.sql.*;
import org.tentackle.model.*;
import org.wurbelizer.wurblet.*;

/**
 * ({@code @wurblet}) Generate code for related entities.
 * 

* usage:
* @wurblet <tag> PdoRelations * [--loadcomponents|--noloadcomponents] * [--insertcomponents|--noinsertcomponents] * [--deletecomponents|--nodeletecomponents] * [--nori] [--noselects] [--nodeletes] [--mock] *

* arguments: *

    *
  • --loadcomponents|--noloadcomponents: force (no) generation of loadComponents().
  • *
  • --insertcomponents|--noinsertcomponents: force (no) generation of insertPlainWithComponents().
  • *
  • --deletecomponents|--nodeletecomponents: force (no) generation of deletePlainWithComponents().
  • *
  • --nori: don't generate PdoIsReferencing wurblet anchors and addReferencingClass() invocations.
  • *
  • --noselects: don't generate PdoSelect... wurblet anchors.
  • *
  • --nodeletes: don't generate PdoDelete... wurblet anchors.
  • *
  • --novalidate: don't generate validate method.
  • *
  • --mock: generate code for mock object.
  • *
* For more options, see {@link DbModelWurblet}. */ public class PdoRelations extends DbModelWurblet { @Override public void run() throws WurbelException { super.run(); try { wurbel(); } catch (Throwable t) { if (t instanceof WurbelException) { throw (WurbelException) t; } throw new WurbelException("wurblet " + this + " failed", t); } } // ----------------- begin wurblet code ----------------- private void wurbel() throws WurbelException, ModelException { // main class String mainClass = getClassName(); String pdoName = null; try { // in implementation pdoName = getPdoClassName(); } catch (WurbelException we) { // in interface pdoName = getClassName(); } boolean generateDeclarations = false; boolean generateIsModified = false; boolean generateIsComposite = false; boolean generateSaveReferencingRelations = false; boolean generateSaveReferencedRelations = false; boolean generateDeleteReferencingRelations = false; boolean generateDeleteReferencedRelations = false; boolean generateLazyDeleteReferencingRelations = false; boolean generateLazyDeleteReferencedRelations = false; boolean generateSetSession = false; Boolean generateLoadComponents = null; Boolean generateInsertComponents = null; Boolean generateDeleteComponents = null; boolean generateMarkDeleted = false; boolean generateIsReferencing = true; boolean generateAddReferencing = false; boolean generateSelects = true; boolean generateDeletes = true; Boolean generateValidate = null; boolean generateSetImmutable = false; boolean generateSnapshot = false; boolean generateClearOnRemoteSave = false; boolean generateAlignComponents = false; boolean generateCreateNormText = false; boolean generateMock = false; boolean isEffectivelyComposite = getEntity().isEffectivelyComposite(); for (Relation rel: getEntity().getReferencingRelations()) { if (!rel.isComposite() && rel.getRelationType() == RelationType.OBJECT && rel.getForeignEntity() != null && rel.getForeignEntity().getIntegrity().isCheckedByApplication()) { generateAddReferencing = true; break; } } for (String arg: getOptionArgs()) { if (arg.equals("noloadcomponents")) { generateLoadComponents = false; } else if (arg.equals("noinsertcomponents")) { generateInsertComponents = false; } else if (arg.equals("nodeletecomponents")) { generateDeleteComponents = false; } else if (arg.equals("novalidate")) { generateValidate = false; } else if (arg.equals("loadcomponents")) { generateLoadComponents = true; } else if (arg.equals("insertcomponents")) { generateInsertComponents = true; } else if (arg.equals("deletecomponents")) { generateDeleteComponents = true; } else if (arg.equals("nori")) { generateIsReferencing = false; generateAddReferencing = false; } else if (arg.equals("noselects")) { generateSelects = false; } else if (arg.equals("nodeletes")) { generateDeletes = false; } else if ("mock".equals(arg)) { generateMock = true; } } // check which methods need generation for (Relation rel: getEntity().getRelations()) { if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { generateDeclarations = true; if (!rel.isSelectionCached()) { generateSetSession = true; } } if (rel.isPartOfNormText()) { generateCreateNormText = true; } if (rel.isComposite()) { generateIsComposite = true; generateDeclarations = true; generateIsModified = true; generateSetSession = true; generateMarkDeleted = isEffectivelyComposite; generateSnapshot = true; generateSetImmutable = true; if (generateValidate == null && getAnnotationOptions(rel.getAnnotations(), "Validate").isEmpty()) { generateValidate = true; } if (!rel.isEmbedding()) { if (rel.getRelationType() == RelationType.OBJECT) { generateSaveReferencedRelations = true; generateDeleteReferencedRelations = true; generateLazyDeleteReferencedRelations = true; } else { // LIST generateSaveReferencingRelations = true; generateDeleteReferencingRelations = true; if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { generateLazyDeleteReferencingRelations = true; if (rel.getCountAttribute() != null) { generateAlignComponents = true; } } } } } if (rel.isClearOnRemoteSave()) { generateClearOnRemoteSave = true; } } boolean useDatabaseRefInt = getEntity().getIntegrity().isCompositesCheckedByDatabase() && Boolean.FALSE.equals(getEntity().isDeletionCascaded()); if (generateLoadComponents == null) { generateLoadComponents = generateIsComposite; } if (generateInsertComponents == null) { generateInsertComponents = generateIsComposite && isEffectivelyComposite; } if (generateDeleteComponents == null) { generateDeleteComponents = generateIsComposite && isEffectivelyComposite && (!useDatabaseRefInt || getEntity().isRootEntity()); } if (generateDeclarations || generateMock) { // declarations for (Relation rel: getEntity().getRelations()) { if (rel.getSelectionType() != SelectionType.ALWAYS || rel.isComposite() || generateMock) { String type = rel.getDeclaredJavaType(false); String transientModifier = isRelationTransient(rel) ? "transient " : ""; out.print(source[0]); // 181:2 = " // " out.print(rel); out.print(source[1]); // 183:12 = " private " out.print(transientModifier); out.print(type); out.print(source[2]); // 184:39 = " " out.print(rel.getVariableName()); out.print(source[3]); // 184:65 = ";" if (!generateMock) { if ((rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) && (rel.getForeignRelation() == null || !rel.getForeignRelation().isEmbedding())) { out.print(source[4]); // 189:2 = " private " out.print(transientModifier); out.print(source[5]); // 190:31 = "boolean " out.print(rel.getVariableName()); out.print(source[6]); // 190:64 = "Loaded;" } if (rel.isComposite()) { if (rel.getRelationType() == RelationType.OBJECT || rel.isTracked()) { out.print(source[7]); // 195:2 = " private transient " out.print(type); out.print(source[8]); // 196:28 = " " out.print(rel.getVariableName()); out.print(source[9]); // 196:54 = "Snapshot;" } if (rel.getRelationType() == RelationType.OBJECT && !rel.isEmbedding()) { out.print(source[10]); // 200:2 = " private long " out.print(rel.getVariableName()); out.print(source[11]); // 201:40 = "RemovedId;" } } } } if (rel.getNmName() != null) { String nmVar; if (rel.getNmMethodName() != null) { nmVar = StringHelper.firstToLower(rel.getNmMethodName()); } else { nmVar = StringHelper.firstToLower(rel.getNmName()) + "List"; } out.print(source[12]); // 216:2 = " private transient TrackedList<" out.print(rel.getNmRelation().getDeclaredJavaType(false)); out.print(source[13]); // 217:82 = "> " out.print(nmVar); out.print(source[14]); // 217:93 = ";" } } } if (generateClearOnRemoteSave && !generateMock) { out.print(source[15]); // 224:2 = " @Override public void clearOnRemote..." for (Relation rel: getEntity().getRelations()) { if (rel.isClearOnRemoteSave()) { out.print(source[16]); // 231:2 = " " out.print(rel.getVariableName()); out.print(source[17]); // 232:29 = " = null;" if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { out.print(source[18]); // 235:2 = " " out.print(rel.getVariableName()); out.print(source[19]); // 236:29 = "Loaded = false;" } } } out.print(source[20]); // 241:2 = " }" } // generate getter/setter for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); String type = rel.getDeclaredJavaType(false); String effType = rel.getJavaType(); String scope = rel.getAccessScope().toString(); boolean hidden = rel.getAccessScope() != AccessScope.PUBLIC; boolean isEmbeddingFromParent = rel.getForeignRelation() != null && rel.getForeignRelation().isEmbedding(); boolean createGetter = !rel.isWriteOnly(); boolean createSetter = !rel.isReadOnly() && (rel.getSelectionType() != SelectionType.ALWAYS || rel.isSelectionCached()) && (!rel.isComposite() || rel.getRelationType() == RelationType.OBJECT); Attribute attr = rel.getAttribute(); if (attr != null) { scope = attr.getOptions().getAccessScope().toString(); hidden |= attr.isHidden(); createGetter &= !attr.getOptions().isWriteOnly(); createSetter &= !attr.getOptions().isReadOnly(); } if (rel.getForeignRelation() != null) { String linkMethodName = rel.getForeignRelation().getLinkMethodName(); if (linkMethodName != null && !rel.getSetterName().equals(linkMethodName)) { // don't generate setter impl if linkmethodname is not default from model createSetter = false; } } Relation nmRel = rel.getNmRelation(); String nmName = null; String nmVar = null; if (nmRel != null) { if (rel.getNmMethodName() != null) { nmName = StringHelper.firstToUpper(rel.getNmMethodName()); nmVar = StringHelper.firstToLower(rel.getNmMethodName()); } else { nmName = StringHelper.firstToUpper(rel.getNmName()) + "Via" + rel.getMethodNameSuffix(); nmVar = StringHelper.firstToLower(rel.getNmName()) + "List"; } } // getter if (createGetter) { String checkNull = rel.getMethodArgs().get(0).getMethodArgument() + " == 0"; if (attr != null && !attr.getDataType().isPrimitive()) { checkNull = rel.getMethodArgs().get(0).getMethodArgument() + " == null || " + checkNull; } out.print(source[21]); // 296:2 = "" if (hidden) { out.print(source[22]); // 300:2 = " /** * Gets " out.print(rel); out.print(source[23]); // 303:17 = ". * * @return " out.print(var); out.print(source[24]); // 305:21 = " " out.print(rel.getComment()); out.print(source[25]); // 305:42 = " */ @Persistent(ordinal=" out.print(rel.getOrdinal()); out.print(source[26]); // 307:43 = ", comment=" out.print(StringHelper.toDoubleQuotes(rel.getComment())); out.print(source[27]); // 307:102 = ")" } else { out.print(source[28]); // 311:2 = " @Override" } if (rel.getForeignEntity().isAbstract()) { // needs a cast out.print(source[29]); // 316:2 = " @SuppressWarnings("unchecked")" } if (!generateMock) { for (String annotation: rel.getAnnotations()) { AnnotationOption anno = new AnnotationOption(annotation); if (anno.isHidden() && !anno.isSetterOnly()) { out.print(source[30]); // 324:2 = " " out.print(anno.getAnnotation()); out.print(source[31]); // 325:26 = "" } } } out.print(source[32]); // 330:2 = " " out.print(scope); out.print(source[33]); // 331:11 = " " out.print(type); out.print(source[34]); // 331:20 = " " out.print(rel.getGetterName()); out.print(source[35]); // 331:44 = "() {" if (generateMock) { out.print(source[36]); // 334:2 = " return " out.print(var); out.print(source[37]); // 335:18 = "; }" } else { if (rel.getSelectionType() == SelectionType.ALWAYS) { if (rel.getRelationType() == RelationType.LIST) { if (rel.isSelectionCached()) { out.print(source[38]); // 343:2 = " " out.print(var); out.print(source[39]); // 344:11 = " = " out.print(createRelationSelectCode(rel)); out.print(source[40]); // 344:47 = ";" } else { out.print(source[41]); // 348:2 = " " out.print(type); out.print(source[42]); // 349:12 = " " out.print(var); out.print(source[43]); // 349:20 = " = " out.print(createRelationSelectCode(rel)); out.print(source[44]); // 349:56 = ";" } if (rel.isReferenced()) { if (rel.getLinkMethodIndex() != null) { out.print(source[45]); // 354:2 = " int ndx = 0;" } out.print(source[46]); // 358:2 = " for (" out.print(rel.getClassName()); out.print(source[47]); // 359:31 = " obj: " out.print(var); out.print(source[48]); // 359:44 = ") { obj." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[49]); // 360:52 = "; }" } out.print(source[50]); // 364:2 = " return " out.print(var); out.print(source[51]); // 365:18 = ";" } else { // RelationType.OBJECT if (rel.isComposite()) { out.print(source[52]); // 370:2 = " " out.print(var); out.print(source[53]); // 371:11 = " = " out.print(checkNull); out.print(source[54]); // 371:27 = " ? null : " out.print(createRelationSelectCode(rel)); out.print(source[55]); // 371:70 = ";" if (rel.isReferenced()) { out.print(source[56]); // 374:2 = " if (" out.print(var); out.print(source[57]); // 375:15 = " != null) { " out.print(var); out.print(source[58]); // 376:13 = "." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[59]); // 376:56 = "; }" } if (rel.isProcessed()) { out.print(source[60]); // 381:2 = " " out.print(var); out.print(source[61]); // 382:11 = " = process" out.print(rel.getMethodNameSuffix()); out.print(source[62]); // 382:50 = "(" out.print(var); out.print(source[63]); // 382:58 = ");" } out.print(source[64]); // 385:2 = " return " out.print(var); out.print(source[65]); // 386:18 = ";" } else { if (rel.isReferenced()) { out.print(source[66]); // 391:2 = " " out.print(type); out.print(source[67]); // 392:12 = " obj = " out.print(checkNull); out.print(source[68]); // 392:32 = " ? null : " out.print(createRelationSelectCode(rel)); out.print(source[69]); // 392:75 = "; if (obj != null) { obj." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[70]); // 394:52 = "; } return obj;" } else { out.print(source[71]); // 400:2 = " return " out.print(checkNull); out.print(source[72]); // 401:24 = " ? null : " out.print(createRelationSelectCode(rel)); out.print(source[73]); // 401:67 = ";" } } } } else if (rel.isEmbedding() || isEmbeddingFromParent) { if (rel.isEmbedding()) { out.print(source[74]); // 409:2 = " if (" out.print(var); out.print(source[75]); // 410:15 = " == null) { " out.print(rel.getSetterName()); out.print(source[76]); // 411:29 = "(on(" out.print(rel.getForeignEntity()); out.print(source[77]); // 411:59 = ".class)); }" } out.print(source[78]); // 415:2 = " return " out.print(var); out.print(source[79]); // 416:18 = ";" } else if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { out.print(source[80]); // 420:2 = " if (!" out.print(var); out.print(source[81]); // 421:16 = "Loaded) {" if (rel.isComposite()) { if (rel.getRelationType() == RelationType.LIST) { String condition = "isNew()"; Attribute countAttribute = rel.getCountAttribute(); if (countAttribute != null) { condition += " || " + countAttribute.getName() + " == 0"; } out.print(source[82]); // 430:2 = " " out.print(var); out.print(source[83]); // 431:13 = " = " out.print(condition); out.print(source[84]); // 431:29 = " ? new " out.print(effType); out.print(source[85]); // 431:47 = "(" out.print(rel.isTracked() ? "false" : ""); out.print(source[86]); // 431:82 = ") : " out.print(createRelationSelectCode(rel)); out.print(source[87]); // 431:119 = ";" if (rel.isReferenced()) { if (rel.getLinkMethodIndex() != null) { out.print(source[88]); // 435:2 = " int ndx = 0;" } out.print(source[89]); // 439:2 = " for (" out.print(rel.getClassName()); out.print(source[90]); // 440:33 = " obj: " out.print(var); out.print(source[91]); // 440:46 = ") { obj." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[92]); // 441:54 = "; }" } } else { out.print(source[93]); // 447:2 = " " out.print(var); out.print(source[94]); // 448:13 = " = " out.print(checkNull); out.print(source[95]); // 448:29 = " ? null : " out.print(createRelationSelectCode(rel)); out.print(source[96]); // 448:72 = ";" if (rel.isReferenced()) { out.print(source[97]); // 451:2 = " if (" out.print(var); out.print(source[98]); // 452:17 = " != null) { " out.print(var); out.print(source[99]); // 453:15 = "." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[100]); // 453:58 = "; }" } } if (rel.isProcessed()) { out.print(source[101]); // 460:2 = " " out.print(var); out.print(source[102]); // 461:13 = " = process" out.print(rel.getMethodNameSuffix()); out.print(source[103]); // 461:52 = "(" out.print(var); out.print(source[104]); // 461:60 = ");" } if (rel.getRelationType() == RelationType.LIST) { if (rel.isTracked()) { if (rel.isImmutable()) { out.print(source[105]); // 468:2 = " " out.print(var); out.print(source[106]); // 469:13 = ".setImmutable(true);" } else { out.print(source[107]); // 473:2 = " if (isImmutable()) { " out.print(var); out.print(source[108]); // 475:15 = ".setImmutable(true); }" } } } else { if (rel.isImmutable()) { out.print(source[109]); // 483:2 = " " out.print(var); out.print(source[110]); // 484:13 = ".setImmutable(true, true);" } else { out.print(source[111]); // 488:2 = " if (isImmutable() && " out.print(var); out.print(source[112]); // 489:34 = " != null) { " out.print(var); out.print(source[113]); // 490:15 = ".setImmutable(true); }" } } } else { if (rel.getRelationType() == RelationType.LIST) { out.print(source[114]); // 498:2 = " " out.print(var); out.print(source[115]); // 499:13 = " = " out.print(createRelationSelectCode(rel)); out.print(source[116]); // 499:49 = ";" if (rel.isReferenced()) { if (rel.getLinkMethodIndex() != null) { out.print(source[117]); // 503:2 = " int ndx = 0;" } out.print(source[118]); // 507:2 = " for (" out.print(rel.getClassName()); out.print(source[119]); // 508:33 = " obj: " out.print(var); out.print(source[120]); // 508:46 = ") { obj." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[121]); // 509:54 = "; }" } } else { out.print(source[122]); // 515:2 = " " out.print(var); out.print(source[123]); // 516:13 = " = " out.print(checkNull); out.print(source[124]); // 516:29 = " ? null : " out.print(createRelationSelectCode(rel)); out.print(source[125]); // 516:72 = ";" if (rel.isReferenced()) { out.print(source[126]); // 519:2 = " if (" out.print(var); out.print(source[127]); // 520:17 = " != null) { " out.print(var); out.print(source[128]); // 521:15 = "." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[129]); // 521:58 = "; }" } } } out.print(source[130]); // 527:2 = " " out.print(var); out.print(source[131]); // 528:13 = "Loaded = true;" if (nmRel != null) { out.print(source[132]); // 531:2 = " " out.print(var); out.print(source[133]); // 532:13 = ".addListener(new TrackedListListener<>()..." out.print(rel.getClassName()); out.print(source[134]); // 535:48 = " element) { get" out.print(nmName); out.print(source[135]); // 536:23 = "().addIfAbsent(element." out.print(nmRel.getGetterName()); out.print(source[136]); // 536:71 = "()); } @Override ..." out.print(rel.getClassName()); out.print(source[137]); // 540:50 = " element) { get" out.print(nmName); out.print(source[138]); // 541:23 = "().remove(element." out.print(nmRel.getGetterName()); out.print(source[139]); // 541:66 = "()); } });" } out.print(source[140]); // 546:2 = " } return " out.print(var); out.print(source[141]); // 548:18 = ";" } out.print(source[142]); // 551:2 = " }" if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { if (rel.getRelationType() == RelationType.LIST && !rel.isReversed()) { if (rel.isBluntDeclared()) { out.print(source[143]); // 557:2 = " @Override" } else { out.print(source[144]); // 563:2 = " /** * Gets " out.print(var); out.print(source[145]); // 566:17 = " without performing a select if not load..." out.print(var); out.print(source[146]); // 568:21 = " " out.print(rel.getComment()); out.print(source[147]); // 568:42 = " */" } out.print(source[148]); // 572:2 = " " out.print(scope); out.print(source[149]); // 573:11 = " " out.print(type); out.print(source[150]); // 573:20 = " " out.print(rel.getGetterName()); out.print(source[151]); // 573:44 = "Blunt() { if (!" out.print(var); out.print(source[152]); // 574:16 = "Loaded) { " out.print(var); out.print(source[153]); // 575:13 = " = new " out.print(effType); out.print(source[154]); // 575:31 = "(" out.print(rel.isTracked() ? "false" : ""); out.print(source[155]); // 575:66 = "); if (isImmutable()) { " out.print(var); out.print(source[156]); // 577:15 = ".setImmutable(true); } " out.print(var); out.print(source[157]); // 579:13 = "Loaded = true; } return " out.print(var); out.print(source[158]); // 581:18 = "; }" } else if (rel.getRelationType() == RelationType.OBJECT && rel.isSerialized() && !isEmbeddingFromParent) { if (rel.isBluntDeclared()) { out.print(source[159]); // 587:2 = " @Override" } else { out.print(source[160]); // 593:2 = " /** * Gets " out.print(var); out.print(source[161]); // 596:17 = " without performing a select if not load..." out.print(var); out.print(source[162]); // 598:21 = " " out.print(rel.getComment()); out.print(source[163]); // 598:42 = " */" } out.print(source[164]); // 602:2 = " " out.print(scope); out.print(source[165]); // 603:11 = " " out.print(type); out.print(source[166]); // 603:20 = " " out.print(rel.getGetterName()); out.print(source[167]); // 603:44 = "Blunt() { return " out.print(var); out.print(source[168]); // 604:18 = "; }" } } } if (nmRel != null) { String nmType = nmRel.getDeclaredJavaType(false); if (rel.getNmScope() == AccessScope.PUBLIC) { out.print(source[169]); // 614:2 = " @Override" } else { out.print(source[170]); // 620:2 = " /** * Gets list of " out.print(nmRel.getDeclaredJavaType(false)); out.print(source[171]); // 623:54 = " joined via " out.print(rel); out.print(source[172]); // 623:73 = ". * * @return list of " out.print(nmRel.getVariableName()); out.print(source[173]); // 625:49 = " */" } out.print(source[174]); // 629:2 = " " out.print(rel.getNmScope()); out.print(source[175]); // 630:22 = " TrackedList<" out.print(nmType); out.print(source[176]); // 630:45 = "> get" out.print(nmName); out.print(source[177]); // 630:60 = "() {" if (!generateMock) { out.print(source[178]); // 633:2 = " if (" out.print(nmVar); out.print(source[179]); // 634:17 = " == null) { " out.print(nmVar); out.print(source[180]); // 635:15 = " = new TrackedArrayList<>() { @..." out.print(rel.getGetterName()); out.print(source[181]); // 642:40 = "().isModified(); } }; ..." out.print(rel.getForeignEntity()); out.print(source[182]); // 646:37 = " obj: " out.print(rel.getGetterName()); out.print(source[183]); // 646:66 = "()) { " out.print(nmVar); out.print(source[184]); // 647:17 = ".add(obj." out.print(nmRel.getGetterName()); out.print(source[185]); // 647:51 = "()); } " out.print(nmVar); out.print(source[186]); // 650:15 = ".addListener(new TrackedListListener<>()..." out.print(nmType); out.print(source[187]); // 653:36 = " element) { " out.print(rel.getClassName()); out.print(source[188]); // 654:32 = " obj = on(" out.print(rel.getClassName()); out.print(source[189]); // 654:64 = ".class); obj." out.print(nmRel.getSetterName()); out.print(source[190]); // 655:39 = "(element); getNmLinks().add(ob..." out.print(nmType); out.print(source[191]); // 660:38 = " element) { for (Iterator<" out.print(rel.getClassName()); out.print(source[192]); // 661:46 = "> iter = " out.print(rel.getGetterName()); out.print(source[193]); // 661:78 = "().iterator(); iter.hasNext(); ) { ..." out.print(rel.getClassName()); out.print(source[194]); // 662:34 = " obj = iter.next(); if (Obje..." out.print(nmRel.getGetterName()); out.print(source[195]); // 663:60 = "(), element)) { iter.remov..." } out.print(source[196]); // 673:2 = " return " out.print(nmVar); out.print(source[197]); // 674:20 = "; }" } if (!generateMock && rel.isComposite() && (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER)) { if (rel.getAccessScope() == AccessScope.PUBLIC) { out.print(source[198]); // 682:2 = " @Override" } else { out.print(source[199]); // 688:2 = " /** * Returns whether " out.print(rel.getName()); out.print(source[200]); // 691:38 = " is loaded. * * @return true if " out.print(rel.getGetterName()); out.print(source[201]); // 693:45 = "() invoked at least once */" } out.print(source[202]); // 697:2 = " " out.print(scope); out.print(source[203]); // 698:11 = " boolean is" out.print(StringHelper.firstToUpper(var)); out.print(source[204]); // 698:56 = "Loaded() { return " out.print(var); out.print(source[205]); // 699:18 = "Loaded; }" } } if (createSetter) { if (generateMock) { out.print(source[206]); // 708:2 = "" if (!hidden) { out.print(source[207]); // 712:2 = " @Override" } out.print(source[208]); // 716:2 = " " out.print(scope); out.print(source[209]); // 717:11 = " void " out.print(rel.getSetterName()); out.print(source[210]); // 717:40 = "(" out.print(type); out.print(source[211]); // 717:49 = " " out.print(var); out.print(source[212]); // 717:57 = ") { this." out.print(var); out.print(source[213]); // 718:16 = " = " out.print(var); out.print(source[214]); // 718:26 = "; }" } else { String nullVal = attr != null && !attr.getDataType().isPrimitive() ? "null" : "0"; String linkMethodIndex = rel.getForeignRelation() != null ? rel.getForeignRelation().getLinkMethodIndex() : null; out.print(source[215]); // 725:2 = "" if (hidden) { out.print(source[216]); // 729:2 = " /** * Sets " out.print(rel); out.print(source[217]); // 732:17 = ". * * @param " out.print(var); out.print(source[218]); // 734:20 = " " out.print(rel.getComment()); out.print(source[219]); // 734:41 = "" if (linkMethodIndex != null) { out.print(source[220]); // 737:2 = " * @param index the index starting at ..." } out.print(source[221]); // 741:2 = " */" } else { out.print(source[222]); // 746:2 = " @Override" } for (String annotation: rel.getAnnotations()) { AnnotationOption anno = new AnnotationOption(annotation); if (anno.isHidden() && (anno.isSetterOnly() || anno.isSetterAndGetter())) { out.print(source[223]); // 753:2 = " " out.print(anno.getAnnotation()); out.print(source[224]); // 754:26 = "" } } if (linkMethodIndex != null) { out.print(source[225]); // 759:2 = " " out.print(scope); out.print(source[226]); // 760:11 = " void " out.print(rel.getForeignRelation().getLinkMethodName()); out.print(source[227]); // 760:65 = "(" out.print(type); out.print(source[228]); // 760:74 = " " out.print(var); out.print(source[229]); // 760:82 = ", int index) {" } else { String linkMethodName = rel.getSetterName(); if (rel.getForeignRelation() != null && rel.getForeignRelation().getLinkMethodName() != null) { linkMethodName = rel.getForeignRelation().getLinkMethodName(); } out.print(source[230]); // 768:2 = " " out.print(scope); out.print(source[231]); // 769:11 = " void " out.print(linkMethodName); out.print(source[232]); // 769:35 = "(" out.print(type); out.print(source[233]); // 769:44 = " " out.print(var); out.print(source[234]); // 769:52 = ") {" } if ((rel.getRelationType() == RelationType.LIST && !rel.isReversed()) || rel.getSelectionType() != SelectionType.ALWAYS || rel.isComposite()) { if (rel.isComposite() && rel.getRelationType() == RelationType.OBJECT) { if (rel.isEmbedding()) { // initial setting (usually via getter) should not mark the embedding object modified! out.print(source[235]); // 777:2 = " if (!attributesModified()) { s..." out.print(var); out.print(source[236]); // 779:30 = " != null && !this." out.print(var); out.print(source[237]); // 779:55 = ".equals(" out.print(var); out.print(source[238]); // 779:70 = ")); }" } else { out.print(source[239]); // 784:2 = " if (!attributesModified()) { s..." out.print(var); out.print(source[240]); // 786:46 = ", " out.print(var); out.print(source[241]); // 786:55 = ")); }" } } out.print(source[242]); // 791:2 = " this." out.print(var); out.print(source[243]); // 792:16 = " = " out.print(var); out.print(source[244]); // 792:26 = ";" if (rel.isReferenced()) { out.print(source[245]); // 795:2 = " if (" out.print(var); out.print(source[246]); // 796:15 = " != null) {" if (rel.isEmbedding()) { if (getEntity().isEmbedded()) { out.print(source[247]); // 800:2 = " ((AbstractPersistentObject) " out.print(var); out.print(source[248]); // 801:46 = ".getPersistenceDelegate()).setEmbeddingP..." out.print(rel.getName().toUpperCase(Locale.ROOT)); out.print(source[249]); // 801:173 = ");" } else { out.print(source[250]); // 805:2 = " ((AbstractPersistentObject) " out.print(var); out.print(source[251]); // 806:46 = ".getPersistenceDelegate()).setEmbeddingP..." out.print(rel.getName().toUpperCase(Locale.ROOT)); out.print(source[252]); // 806:153 = ");" } } out.print(source[253]); // 810:2 = " " out.print(var); out.print(source[254]); // 811:13 = "." out.print(createRelationUpdateReferenceCode(rel)); out.print(source[255]); // 811:56 = "; }" } else if (rel.isEmbedding()) { if (getEntity().isEmbedded()) { out.print(source[256]); // 817:2 = " if (" out.print(var); out.print(source[257]); // 818:15 = " != null) { ((AbstractPersistentOb..." out.print(var); out.print(source[258]); // 819:46 = ".getPersistenceDelegate()).setEmbeddingP..." out.print(rel.getName().toUpperCase(Locale.ROOT)); out.print(source[259]); // 819:173 = "); }" } else { out.print(source[260]); // 824:2 = " if (" out.print(var); out.print(source[261]); // 825:15 = " != null) { ((AbstractPersistentOb..." out.print(var); out.print(source[262]); // 826:46 = ".getPersistenceDelegate()).setEmbeddingP..." out.print(rel.getName().toUpperCase(Locale.ROOT)); out.print(source[263]); // 826:153 = "); }" } } if (linkMethodIndex != null) { out.print(source[264]); // 833:2 = " " out.print(createAccessorCode(getEntity(), linkMethodIndex, true)); out.print(source[265]); // 834:62 = "(index);" } } if (rel.getRelationType() == RelationType.OBJECT && !isEmbeddingFromParent && !rel.isEmbedding()) { if (rel.isComposite()) { if (attr != null && !attr.getDataType().isPrimitive()) { out.print(source[266]); // 842:2 = " " out.print(attr.getJavaType()); out.print(source[267]); // 843:26 = " oldId = " out.print(rel.getMethodArgs().get(0).getMethodArgument()); out.print(source[268]); // 843:85 = ";" } else { out.print(source[269]); // 847:2 = " long oldId = " out.print(rel.getMethodArgs().get(0).getMethodArgument()); out.print(source[270]); // 848:67 = ";" } } out.print(source[271]); // 852:2 = " " out.print(createRelationSetFirstArgMethodName(rel)); out.print(source[272]); // 853:48 = "(" out.print(var); out.print(source[273]); // 853:56 = " == null ? " out.print(nullVal); out.print(source[274]); // 853:78 = " : " out.print(var); out.print(source[275]); // 853:88 = ".getId());" } if ((rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) && !isEmbeddingFromParent) { out.print(source[276]); // 857:2 = " " out.print(var); out.print(source[277]); // 858:11 = "Loaded = true;" } if (rel.getRelationType() == RelationType.OBJECT && rel.isComposite()) { if (attr != null && !attr.getDataType().isPrimitive()) { out.print(source[278]); // 863:2 = " if (oldId != null && oldId != 0 && " out.print(rel.getVariableName()); out.print(source[279]); // 864:64 = "RemovedId == 0 && !Objects.equals(" out.print(rel.getMethodArgs().get(0).getMethodArgument()); out.print(source[280]); // 864:148 = ", oldId)) { " out.print(rel.getVariableName()); out.print(source[281]); // 865:31 = "RemovedId = oldId; }" } else if (!rel.isEmbedding()) { out.print(source[282]); // 870:2 = " if (oldId != 0 && " out.print(rel.getVariableName()); out.print(source[283]); // 871:47 = "RemovedId == 0 && " out.print(rel.getMethodArgs().get(0).getMethodArgument()); out.print(source[284]); // 871:115 = " != oldId) { " out.print(rel.getVariableName()); out.print(source[285]); // 872:31 = "RemovedId = oldId; }" } } out.print(source[286]); // 877:2 = " }" } if (rel.getRelationType() == RelationType.OBJECT && rel.isSerialized() && !isEmbeddingFromParent && (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER)) { out.print(source[287]); // 884:2 = " /** * Sets " out.print(var); out.print(source[288]); // 887:17 = " without setting any attributes. * ..." out.print(var); out.print(source[289]); // 889:20 = " " out.print(rel.getComment()); out.print(source[290]); // 889:41 = " */ " out.print(scope); out.print(source[291]); // 891:11 = " void " out.print(rel.getSetterName()); out.print(source[292]); // 891:40 = "Blunt(" out.print(type); out.print(source[293]); // 891:54 = " " out.print(var); out.print(source[294]); // 891:62 = ") { this." out.print(var); out.print(source[295]); // 892:16 = " = " out.print(var); out.print(source[296]); // 892:26 = "; " out.print(var); out.print(source[297]); // 893:11 = "Loaded = true; }" } } } // gerenate setSession and setDomainContext for referenced objects (necessary for RMI) if (generateSetSession) { out.print(source[298]); // 903:2 = " @Override public void setSession(Se..." for (Relation rel: getEntity().getRelations()) { if (!rel.isSelectionCached() && (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER || rel.isComposite())) { out.print(source[299]); // 914:2 = " session.applyTo(" out.print(rel.getVariableName()); out.print(source[300]); // 915:45 = ");" } } out.print(source[301]); // 919:2 = " } @Override public void setDomain..." for (Relation rel: getEntity().getRelations()) { if (!rel.isSelectionCached() && (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER || rel.isComposite())) { out.print(source[302]); // 931:2 = " context.applyTo(" out.print(rel.getVariableName()); out.print(source[303]); // 932:45 = ");" } } out.print(source[304]); // 936:2 = " }" } // generate code to remove delete composite relations if (generateDeleteReferencingRelations && !generateMock) { if (useDatabaseRefInt) { out.print(source[305]); // 947:2 = " /** * Deletes all referencing comp..." for (Relation rel: getEntity().getRelations()) { if (rel.isComposite() && rel.getRelationType() == RelationType.LIST) { if (!rel.isTracked()) { throw new WurbelException("inconsistent model: untracked not allowed with db-integrity"); } String var = rel.getVariableName(); out.print(source[306]); // 961:2 = " if (" out.print(var); out.print(source[307]); // 962:15 = " != null && " out.print(var); out.print(source[308]); // 962:34 = ".isSomeRemoved()) { delete(" out.print(var); out.print(source[309]); // 963:20 = ".getRemovedObjects()); }" } } out.print(source[310]); // 968:2 = " }" } else { // no database ref. integrity if (generateLazyDeleteReferencingRelations) { out.print(source[311]); // 974:2 = " @Override public void deleteReferen..." for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && rel.getRelationType() == RelationType.LIST) { if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { if (rel.isTracked()) { out.print(source[312]); // 999:2 = " if (delete) {" if (rel.isDeletionCascaded()) { out.print(source[313]); // 1003:2 = " delete(" out.print(rel.getGetterName()); out.print(source[314]); // 1004:36 = "());" } else { out.print(source[315]); // 1008:2 = " markDeleted(" out.print(var); out.print(source[316]); // 1009:25 = "); " out.print(createRelationDeleteCode(rel)); out.print(source[317]); // 1010:39 = ";" } out.print(source[318]); // 1013:2 = " } if (" out.print(var); out.print(source[319]); // 1015:15 = " != null && " out.print(var); out.print(source[320]); // 1015:34 = ".isSomeRemoved()) { delete(" out.print(var); out.print(source[321]); // 1016:20 = ".getRemovedObjects()); }" } // end if isTracked else { out.print(source[322]); // 1021:2 = " if (delete || " out.print(var); out.print(source[323]); // 1022:25 = " != null) {" if (rel.isDeletionCascaded()) { out.print(source[324]); // 1025:2 = " markDeleted(" out.print(rel.getGetterName()); out.print(source[325]); // 1026:41 = "()); deleteMissingInCollection(" out.print(createRelationSelectCode(rel)); out.print(source[326]); // 1027:65 = ", " out.print(var); out.print(source[327]); // 1027:74 = ");" } // end isDeleteCascade else { out.print(source[328]); // 1031:2 = " markDeleted(" out.print(var); out.print(source[329]); // 1032:25 = "); " out.print(createRelationDeleteCode(rel)); out.print(source[330]); // 1033:39 = ";" } out.print(source[331]); // 1036:2 = " }" } } } // end composite } out.print(source[332]); // 1043:2 = " }" } // end if generateLazyDeleteReferencingRelations else { // no lazy loading at all out.print(source[333]); // 1049:2 = " @Override public void deleteReferen..." for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && rel.getRelationType() == RelationType.LIST) { if (rel.isDeletionCascaded()) { out.print(source[334]); // 1059:2 = " delete(" out.print(rel.getGetterName()); out.print(source[335]); // 1060:34 = "());" } else { out.print(source[336]); // 1064:2 = " markDeleted(" out.print(var); out.print(source[337]); // 1065:23 = "); " out.print(createRelationDeleteCode(rel)); out.print(source[338]); // 1066:37 = ";" } } } out.print(source[339]); // 1071:2 = " }" } } // end w/o db-integrity } if (generateDeleteReferencedRelations && !generateMock) { if (useDatabaseRefInt) { out.print(source[340]); // 1081:2 = " /** * Deletes all referenced compo..." for (Relation rel: getEntity().getRelations()) { if (rel.isComposite() && !rel.isEmbedding() && rel.getRelationType() == RelationType.OBJECT) { if (!rel.isTracked()) { throw new WurbelException("inconsistent model: untracked not allowed with db-integrity"); } // remove the old deleted composite too, if set // we need to replace Id by RemovedId in the select statement String var = rel.getVariableName(); String selectStmt = createRelationSelectCode(rel).replace(rel.getVariableName() + "Id", rel.getVariableName() + "RemovedId"); out.print(source[341]); // 1098:2 = " if (" out.print(rel.getVariableName()); out.print(source[342]); // 1099:33 = "RemovedId != 0) { " out.print(rel.getClassName()); out.print(source[343]); // 1100:28 = " old = " out.print(selectStmt); out.print(source[344]); // 1100:49 = "; if (old != null) { old.d..." out.print(rel.getVariableName()); out.print(source[345]); // 1103:33 = "RemovedId = 0; } }" } } out.print(source[346]); // 1109:2 = " }" } else { if (generateLazyDeleteReferencedRelations) { out.print(source[347]); // 1115:2 = " @Override public void deleteReferen..." for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && rel.getRelationType() == RelationType.OBJECT) { if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { out.print(source[348]); // 1139:2 = " if (delete && " out.print(rel.getGetterName()); out.print(source[349]); // 1140:41 = "() != null && !" out.print(var); out.print(source[350]); // 1140:63 = ".isVirgin()) { delete(" out.print(var); out.print(source[351]); // 1141:20 = "); }" } // remove the old deleted composite too, if set // we need to replace Id by RemovedId in the select statement String selectStmt = createRelationSelectCode(rel).replace(rel.getVariableName() + "Id", rel.getVariableName() + "RemovedId"); out.print(source[352]); // 1148:2 = " if (" out.print(rel.getVariableName()); out.print(source[353]); // 1149:33 = "RemovedId != 0) { " out.print(rel.getClassName()); out.print(source[354]); // 1150:28 = " old = " out.print(selectStmt); out.print(source[355]); // 1150:49 = "; if (old != null) { old.d..." out.print(rel.getVariableName()); out.print(source[356]); // 1153:33 = "RemovedId = 0; } }" } // end composite } out.print(source[357]); // 1159:2 = " }" } // end if generateLazyDeleteReferencedRelations else { // no lazy loading at all out.print(source[358]); // 1165:2 = " @Override public void deleteReferen..." for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && !rel.isEmbedding() && rel.getRelationType() == RelationType.OBJECT) { if (rel.getSelectionType() == SelectionType.ALWAYS) { throw new WurbelException("internal wurblet logic error"); } else { out.print(source[359]); // 1178:2 = " if (" out.print(var); out.print(source[360]); // 1179:15 = " != null) { delete(" out.print(var); out.print(source[361]); // 1180:20 = "); }" } } } out.print(source[362]); // 1186:2 = " }" } } } // save composite relations if (generateSaveReferencingRelations && !generateMock) { out.print(source[363]); // 1197:2 = " @Override public void saveReferenci..." if (useDatabaseRefInt) { out.print(source[364]); // 1205:2 = " deleteRemovedReferencingRelations(..." } else { out.print(source[365]); // 1210:2 = " deleteReferencingRelations(" out.print(generateLazyDeleteReferencingRelations ? "false" : ""); out.print(source[366]); // 1211:90 = ");" } out.print(source[367]); // 1214:2 = " }" for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && rel.getRelationType() == RelationType.LIST) { if (rel.isProcessed()) { out.print(source[368]); // 1221:2 = " " out.print(var); out.print(source[369]); // 1222:11 = " = process" out.print(rel.getMethodNameSuffix()); out.print(source[370]); // 1222:50 = "(" out.print(var); out.print(source[371]); // 1222:58 = ");" } out.print(source[372]); // 1225:2 = " if (" out.print(var); out.print(source[373]); // 1226:15 = " != null) { getDomainContext().app..." out.print(var); out.print(source[374]); // 1227:40 = ");" if (rel.getLinkMethodName() != null && rel.getLinkMethodIndex() != null) { out.print(source[375]); // 1230:2 = " int ndx = 0;" } out.print(source[376]); // 1234:2 = " for (" out.print(rel.getClassName()); out.print(source[377]); // 1235:33 = " obj: " out.print(var); out.print(source[378]); // 1235:46 = ") { obj." out.print(createRelationLinkCode(rel)); out.print(source[379]); // 1236:43 = ";" boolean firstSkipped = false; for (MethodArgument ma: rel.getMethodArgs()) { if (firstSkipped) { out.print(source[380]); // 1241:2 = " obj." out.print(ma.getSetterMethod()); out.print(source[381]); // 1242:36 = "(" out.print(ma.getMethodArgument()); out.print(source[382]); // 1242:63 = ");" } firstSkipped = true; } out.print(source[383]); // 1247:2 = " } save(" out.print(var); out.print(source[384]); // 1249:18 = ", " out.print(rel.isTracked() ? "true" : "false"); out.print(source[385]); // 1249:58 = "); }" } } out.print(source[386]); // 1254:2 = " }" } if (generateSaveReferencedRelations && !generateMock) { out.print(source[387]); // 1261:2 = " @Override public void saveReference..." if (getEntity().isRootEntity()) { // need a valid id to store in rootId of composite object relations out.print(source[388]); // 1268:2 = " reserveId();" } out.print(source[389]); // 1272:2 = " super.saveReferencedRelations(update..." if (useDatabaseRefInt) { out.print(source[390]); // 1277:2 = " deleteRemovedReferencedRelations()..." } else { out.print(source[391]); // 1282:2 = " deleteReferencedRelations(" out.print(generateLazyDeleteReferencedRelations ? "false" : ""); out.print(source[392]); // 1283:88 = ");" } out.print(source[393]); // 1286:2 = " }" for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && !rel.isEmbedding() && rel.getRelationType() == RelationType.OBJECT) { out.print(source[394]); // 1292:2 = " getDomainContext().applyTo(" out.print(var); out.print(source[395]); // 1293:38 = ");" if (rel.isProcessed()) { out.print(source[396]); // 1296:2 = " " out.print(var); out.print(source[397]); // 1297:11 = " = process" out.print(rel.getMethodNameSuffix()); out.print(source[398]); // 1297:50 = "(" out.print(var); out.print(source[399]); // 1297:58 = ");" } if (rel.isTracked()) { out.print(source[400]); // 1301:2 = " if (" out.print(var); out.print(source[401]); // 1302:15 = " != null && " out.print(var); out.print(source[402]); // 1302:34 = ".isModified()) { save(" out.print(var); out.print(source[403]); // 1303:18 = "); " out.print(createRelationSetFirstArgMethodName(rel)); out.print(source[404]); // 1304:50 = "(" out.print(var); out.print(source[405]); // 1304:58 = ".getId()); }" } else { out.print(source[406]); // 1309:2 = " if (" out.print(var); out.print(source[407]); // 1310:15 = " != null) { save(" out.print(var); out.print(source[408]); // 1311:18 = "); " out.print(createRelationSetFirstArgMethodName(rel)); out.print(source[409]); // 1312:50 = "(" out.print(var); out.print(source[410]); // 1312:58 = ".getId()); }" } } } out.print(source[411]); // 1318:2 = " }" } // generate code to validate if (Boolean.TRUE.equals(generateValidate)) { out.print(source[412]); // 1327:2 = " @Override public List deepRelations = new ArrayList<>(); for (Relation rel: getEntity().getRelations()) { if (rel.isComposite() && rel.getForeignEntity().isDeeplyReferenced()) { deepRelations.add(rel); } } if (!deepRelations.isEmpty()) { out.print(source[443]); // 1457:2 = " @Override public boolean isReferenc..." for (Relation rel: deepRelations) { if (rel.getRelationType() == RelationType.LIST) { out.print(source[444]); // 1468:2 = " for (" out.print(rel.getForeignEntity()); out.print(source[445]); // 1469:35 = " obj: " out.print(rel.getGetterName()); out.print(source[446]); // 1469:64 = "()) { if (obj.isReferenced()) { ..." } else { out.print(source[447]); // 1477:2 = " if (" out.print(rel.getGetterName()); out.print(source[448]); // 1478:31 = "() != null && " out.print(rel.getGetterName()); out.print(source[449]); // 1478:68 = "().isReferenced()) { return true;..." } } out.print(source[450]); // 1484:2 = " return false; }" } } // override isComposite() if (generateIsComposite) { out.print(source[451]); // 1496:2 = " @Override public boolean isComposit..." } // load all components if (generateLoadComponents && !generateMock) { out.print(source[452]); // 1510:2 = " @Override public IdentifiableMap" : ""); out.print(source[491]); // 1690:100 = " snapshot) { super.createComponentsI..." for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && !rel.isShallow()) { if (rel.getRelationType() == RelationType.LIST) { if (rel.isTracked()) { out.print(source[492]); // 1698:2 = " snapshot." out.print(var); out.print(source[493]); // 1699:20 = "Snapshot = TrackedList.createSnapshot(" out.print(var); out.print(source[494]); // 1699:65 = ");" } } else { out.print(source[495]); // 1704:2 = " snapshot." out.print(var); out.print(source[496]); // 1705:20 = "Snapshot = Pdo.createSnapshot(" out.print(var); out.print(source[497]); // 1705:57 = ");" } } } out.print(source[498]); // 1710:2 = " } /** * Reverts all components o..." out.print(mainClass); out.print(getEntity().isAbstract() ? "" : ""); out.print(source[499]); // 1718:100 = " snapshot) { super.revertComponentsT..." for (Relation rel: getEntity().getRelations()) { String var = rel.getVariableName(); if (rel.isComposite() && !rel.isShallow()) { Relation nmRel = rel.getNmRelation(); String nmVar = null; if (nmRel != null) { if (rel.getNmMethodName() != null) { nmVar = StringHelper.firstToLower(rel.getNmMethodName()); } else { nmVar = StringHelper.firstToLower(rel.getNmName()) + "List"; } } if (rel.getRelationType() == RelationType.LIST) { if (rel.isTracked()) { out.print(source[500]); // 1736:2 = " " out.print(var); out.print(source[501]); // 1737:11 = " = TrackedList.revertToSnapshot(" out.print(var); out.print(source[502]); // 1737:50 = ", snapshot." out.print(var); out.print(source[503]); // 1737:68 = "Snapshot);" } } else { out.print(source[504]); // 1742:2 = " " out.print(var); out.print(source[505]); // 1743:11 = " = Pdo.revertToSnapshot(" out.print(var); out.print(source[506]); // 1743:42 = ", snapshot." out.print(var); out.print(source[507]); // 1743:60 = "Snapshot);" } if (rel.getSelectionType() == SelectionType.LAZY || rel.getSelectionType() == SelectionType.EAGER) { out.print(source[508]); // 1748:2 = " " out.print(var); out.print(source[509]); // 1749:11 = "Loaded = snapshot." out.print(var); out.print(source[510]); // 1749:36 = "Loaded;" } if (rel.getRelationType() == RelationType.OBJECT && !rel.isEmbedding()) { out.print(source[511]); // 1753:2 = " " out.print(var); out.print(source[512]); // 1754:11 = "RemovedId = snapshot." out.print(var); out.print(source[513]); // 1754:39 = "RemovedId;" } if (nmVar != null) { out.print(source[514]); // 1758:2 = " " out.print(nmVar); out.print(source[515]); // 1759:13 = " = null;" } } } out.print(source[516]); // 1764:2 = " }" } if (generateCreateNormText && !generateMock) { out.print(source[517]); // 1770:2 = " @Override public StringBuilder crea..." for (Relation rel: getEntity().getRelations()) { if (rel.isPartOfNormText()) { if (rel.getRelationType() == RelationType.OBJECT) { out.print(source[518]); // 1783:2 = " buf.append(" out.print(rel.getGetterName()); out.print(source[519]); // 1784:38 = "()).append(',');" } else { out.print(source[520]); // 1788:2 = " for (" out.print(rel.getClassName()); out.print(source[521]); // 1789:31 = " obj: " out.print(rel.getGetterName()); out.print(source[522]); // 1789:60 = "()) { buf.append(obj).append(',');..." } } } out.print(source[523]); // 1796:2 = " return buf; }" } if (generateIsReferencing && !generateMock) { List relations = null; if (isEntityPersistable()) { relations = getEntity().getTableRelations(); } else if (getEntity().isEmbedded()) { relations = getEntity().getRelations(); } if (relations != null) { for (Relation rel: getEntity().getTableRelations()) { if (!rel.isComposite() && rel.getRelationType() == RelationType.OBJECT && rel.getEmbeddingEntity() == null && (rel.getForeignRelation() == null || !rel.getForeignRelation().isComposite()) && rel.getForeignEntity() != null && rel.getForeignEntity().getIntegrity().isCheckedByApplication()) { Attribute attr = getFirstMethodAttribute(rel); String tagName = "isReferencing" + rel.getClassName() + "By" + StringHelper.firstToUpper(attr.getName()); out.print(source[524]); // 1818:2 = " // Determines whether any " out.print(pdoName); out.print(source[525]); // 1820:39 = " references given " out.print(rel.getClassName()); out.print(source[526]); // 1820:79 = " // @wurblet " out.print(tagName); out.print(source[527]); // 1821:26 = " PdoIsReferencing " out.print(attr.getName()); out.print(source[528]); // 1821:62 = "" } } } } if (generateSelects && isEntityPersistable() && !generateMock) { Set wurbletArgSet = new HashSet<>(); // to avoid duplicates if args= is used for (Relation rel: getEntity().getReferencingRelations()) { if (rel.getRelationType() == RelationType.LIST) { Attribute attribute = rel.getForeignAttribute(); if (attribute != null) { // force tracked even if related object is not tracked String trackedOption = rel.isTracked() ? "--tracked " : ""; String joins = ""; if (rel.getNmName() != null) { Relation join = rel.getNmRelation(); if (join != null && join.getRelationType() == RelationType.OBJECT && join.getSelectionType() == SelectionType.LAZY && !join.isComposite() && join.isSerialized()) { joins = " *" + rel.getNmName(); } } // add eager joins, if any for (Relation eRel: getEntity().getRelationsIncludingInherited()) { if (eRel.getSelectionType() == SelectionType.EAGER) { joins += " *" + eRel.getName(); } } String extraWurbletOptions = rel.getSelectionWurbletArguments(); if (extraWurbletOptions == null) { extraWurbletOptions = ""; } else { extraWurbletOptions = " " + extraWurbletOptions; } String wurbletArgs = createRelationWurbletArgString(rel); if (wurbletArgSet.add(wurbletArgs)) { out.print(source[529]); // 1861:2 = " // selects " out.print(rel); out.print(source[530]); // 1863:20 = "" if (rel.isReversed()) { out.print(source[531]); // 1866:2 = " // @wurblet " out.print(createRelationSelectMethodName(rel)); out.print(source[532]); // 1867:54 = " PdoSelectUnique " out.print(wurbletArgs); out.print(joins); out.print(extraWurbletOptions); out.print(source[533]); // 1867:118 = "" } else { out.print(source[534]); // 1871:2 = " // @wurblet " out.print(createRelationSelectMethodName(rel)); out.print(source[535]); // 1872:54 = " PdoSelectList " out.print(trackedOption); out.print(wurbletArgs); out.print(joins); out.print(extraWurbletOptions); out.print(source[536]); // 1872:133 = "" } } } } } } if (generateDeletes && isEntityPersistable() && !generateMock) { for (Relation rel: getEntity().getReferencingRelations()) { if (rel.getAccessScope() != AccessScope.PUBLIC) { continue; // skip non-public in interfaces } if (rel.getRelationType() == RelationType.LIST) { Attribute attribute = rel.getForeignAttribute(); if (attribute != null && rel.isComposite() && !rel.isDeletionCascaded() && !useDatabaseRefInt) { out.print(source[537]); // 1889:2 = " // deletes " out.print(rel); out.print(source[538]); // 1891:20 = " // @wurblet " out.print(createListRelationDeleteMethodName(rel)); out.print(source[539]); // 1892:58 = " PdoDeleteBy " out.print(createRelationWurbletArgString(rel)); out.print(source[540]); // 1892:110 = "" } } } } if (generateAddReferencing && !generateMock) { List refRels = new ArrayList<>(); for (Relation rel: getEntity().getReferencingRelations()) { if (!rel.isComposite() && rel.getRelationType() == RelationType.OBJECT && (rel.getForeignRelation() == null || !rel.getForeignRelation().isComposite()) && rel.getForeignEntity() != null && rel.getForeignEntity().getIntegrity().isCheckedByApplication()) { if (rel.isEmbedded()) { for (List embeddingPath : rel.getEntity().getEmbeddingPaths()) { String pathStr = ""; Entity embeddingEntity = null; for (Relation embeddingRel : embeddingPath) { pathStr += embeddingRel.getGetterName() + "."; if (embeddingEntity == null) { embeddingEntity = embeddingRel.getEntity(); // first entity in chain } } refRels.add(rel.createEmbedded(embeddingEntity, pathStr, "")); } } else { refRels.add(rel); } } } if (!refRels.isEmpty()) { out.print(source[541]); // 1925:2 = " // add referencing classes and their ..." if (getEntity().isAbstract()) { out.print(source[542]); // 1931:2 = " @SuppressWarnings("unchecked")" } out.print(source[543]); // 1935:2 = " AbstractPersistentObject po = (..." out.print(pdoName); out.print(source[544]); // 1937:30 = ".class).getPersistenceDelegate();" // register referencing classes and the methods for (Relation rel: refRels) { String methodName = "isReferencing" + rel.getClassName() + "By" + StringHelper.firstToUpper(getFirstMethodAttribute(rel).getName()); if (rel.getEmbeddingEntity() != null) { methodName = rel.getPathName() + methodName; out.print(source[545]); // 1945:2 = " po.addReferencingClass(" out.print(rel.getEmbeddingEntity().getName()); out.print(source[546]); // 1946:65 = ".class, "" out.print(methodName); out.print(source[547]); // 1946:88 = "");" } else { for (Entity leaf: rel.getEntity().getLeafEntities()) { out.print(source[548]); // 1951:2 = " po.addReferencingClass(" out.print(leaf.getName()); out.print(source[549]); // 1952:45 = ".class, "" out.print(methodName); out.print(source[550]); // 1952:68 = "");" } } } out.print(source[551]); // 1957:2 = " }" } } } // ----------------- end wurblet code ----------------- }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy