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

org.hyperledger.composer.bna.model.EnumModel Maven / Gradle / Ivy

The newest version!
/*
 * Copyright IBM Corp. 2017 All Rights Reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

package org.hyperledger.composer.bna.model;

import java.lang.annotation.Annotation;
import org.hyperledger.composer.bna.part.CtoPart;

public class EnumModel extends Model {

  private final Class enumType;

  /**
   * constructor.
   *
   * @param ctoPart cto part
   * @param enumType enumerator type
   */
  public EnumModel(CtoPart ctoPart, Class enumType) {
    super(ctoPart);
    this.type = ModelType.ENUM;
    this.enumType = enumType;
    this.name = enumType.getSimpleName();
    this.namespace(enumType.getPackage().getName());
  }

  @Override
  public Model type(Class type) {
    throw new RuntimeException(new IllegalAccessException("No annotation for enum"));
  }

  @Override
  public Model parent(String parentNamespace, String parentName) {
    throw new RuntimeException(new IllegalAccessException("No parents for enum"));
  }

  @Override
  public Model addField(FieldModel field, boolean isPrimary) {
    throw new RuntimeException(new IllegalAccessException("Do not add fields for enum"));
  }

  @Override
  public String toString() {
    StringBuilder builder = new StringBuilder();
    builder.append(type.toString().toLowerCase());
    builder.append(' ');
    builder.append(name);

    builder.append(" {\n");
    for (Object constant : enumType.getEnumConstants()) {
      builder.append("\to ").append(constant).append('\n');
    }
    builder.append("}\n");
    return builder.toString();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy