Exemplo n.º 1
0
  // TODO Have an input for number of tabs?
  @Override
  public String toGraphVizString() {
    StringBuilder builder = new StringBuilder();
    int i = 0;

    builder.append("\"");
    builder.append(this.fullName);
    builder.append("\" [\n\tshape = ");
    builder.append(this.shape);
    builder.append(",\n\tlabel = \"{");
    // TODO Change for other types of classes.
    if ((this.accessType & Opcodes.ACC_INTERFACE) == Opcodes.ACC_INTERFACE) {
      builder.append("\\<\\<");
      builder.append(this.fullName);
      builder.append("\\>\\>");
    } else {
      builder.append(this.fullName);
    }

    for (String s : this.patternNames) {
      builder.append("\\n\\<\\<");
      builder.append(s);
      builder.append("\\>\\>");
    }

    if (this.fields.size() != 0
        || this.methods.size() != 0) { // TODO Shouldn't this always do this?
      builder.append("|");
    }
    i = 0;
    for (UMLField f : this.fields) {
      if (i > MAX_ROWS) {
        builder.append("...");
        break;
      }
      builder.append(f.toGraphVizString());
      i++;
    }
    builder.append("|");
    i = 0;
    for (UMLMethod m : this.methods) {
      if (i > MAX_ROWS) {
        builder.append("...");
        break;
      }
      builder.append(m.toGraphVizString());
      i++;
    }
    builder.append("}\"\nstyle=filled\nfillcolor=\"");
    builder.append(this.fillColor);
    builder.append("\"");
    builder.append("\ncolor=\"").append(this.color).append("\"\n];\n");
    for (UMLArrow arrow : this.arrows) {
      builder.append(arrow.toGraphVizString());
    }
    return builder.toString();
  }