MetaField.java

package com.dbschema.mongo.schema;


import org.bson.types.ObjectId;

import java.util.ArrayList;
import java.util.List;

import static com.dbschema.mongo.Util.escapeChars;

public class MetaField {

  public final MetaJson parentJson;
  public final String name, typeName;
  public final List<ObjectId> objectIds = new ArrayList<ObjectId>();
  public final int type;
  public boolean mandatory = true;


  public MetaField(final MetaJson parentJson, final String name, final String typeName, int type) {
    this.parentJson = parentJson;
    this.name = name;
    this.typeName = typeName;
    this.type = type;
  }

  public void addObjectId(ObjectId objectId) {
    if (objectIds.size() < 4) {
      objectIds.add(objectId);
    }
  }

  public String getNameWithPath() {
    String qualifier = parentJson != null && !(parentJson instanceof MetaCollection) ? parentJson.getNameWithPath() + "." : "";
    return qualifier + escapeChars(name, '\\', '.');
  }

  @Override
  public String toString() {
    return getNameWithPath();
  }

  public void setMandatory(boolean mandatory) {
    this.mandatory = mandatory;
  }

  public boolean isMandatory() {
    return mandatory;
  }
}