emitSetters()

in lib/model_generator.js [113:178]


  emitSetters(level, isOverride) {
    assert.equal(this.ast.type, 'modelBody');
    for (let i = 0; i < this.ast.nodes.length; i++) {
      let node = this.ast.nodes[i];
      const value = node.fieldValue;
      const fieldName = avoidReserveName(_name(node.fieldName));
      const realName = getAttr(node, 'name') || _name(node.fieldName);
      const position = getAttr(node, 'position');
      const shrink = getAttr(node, 'shrink');
      this.emitln();
      this.emitln('/**', level);
      if (this.ctx.descriptionMap[realName]) {
        for (let j = 0; j < this.ctx.descriptionMap[realName].length; j++) {
          this.emitln(this.ctx.descriptionMap[realName][j], level);
        }
      } else {
        this.emitln(` * ${realName}.`, level);
      }
      this.emitln(' */', level);
      if (isOverride) {
        this.emitln('@Override', level);
      }
      this.emit(`public Builder ${fieldName}(`, level);
      this.visitFieldType(value, node, this.modelName);
      this.emitln(`${fieldName}) {`);
      if (position) {
        let pos = position.split(',');
        for (let i = 0; i < pos.length; i++) {
          if (shrink) {
            this.emitln(`String ${fieldName}Shrink = shrink(${fieldName}, "${realName}", "${shrink}");`, level + 1);
            this.emitln(`this.put${pos[i]}Parameter("${realName}", ${fieldName}Shrink);`, level + 1);
          } else {
            this.emitln(`this.put${pos[i]}Parameter("${realName}", ${fieldName});`, level + 1);
          }
        }
      }
      this.emitln(`this.${fieldName} = ${fieldName};`, level + 1);
      this.emitln(`return this;`, level + 1);
      this.emitln(`}`, level);

      if (value.fieldType && value.fieldType.idType && value.fieldType.idType === 'enum') {
        this.emitln();
        this.emitln('/**', level);
        if (this.ctx.descriptionMap[realName]) {
          for (let j = 0; j < this.ctx.descriptionMap[realName].length; j++) {
            this.emitln(this.ctx.descriptionMap[realName][j], level);
          }
        } else {
          this.emitln(` * ${realName}.`, level);
        }
        this.emitln(' */', level);
        if (isOverride) {
          this.emitln('@Override', level);
        }
        this.emit(`public Builder ${fieldName}(`, level);
        this.visitFieldType(value, node, this.modelName, true);
        this.emitln(`${fieldName}) {`);
        if (position) {
          this.emitln(`this.put${position}Parameter("${realName}", ${fieldName}.getValue());`, level + 1);
        }
        this.emitln(`this.${fieldName} = ${fieldName}.getValue();`, level + 1);
        this.emitln(`return this;`, level + 1);
        this.emitln(`}`, level);
      }
    }
  }