protected void updateSchema(SchemaDefinition schemaDefinition) {

    SchemaDefinition existing = loadExistingSchema(schemaDefinition.getCollectionName());

    List<FieldDefinition> fieldsToBeCreated = new ArrayList<FieldDefinition>();
    for (FieldDefinition fieldDefinition : schemaDefinition.getFields()) {
      if (!existing.containsField(fieldDefinition.getName())) {
        fieldsToBeCreated.add(fieldDefinition);
      }
    }

    writeFieldDefinitions(fieldsToBeCreated, schemaDefinition.getCollectionName());
  }
  public void writeSchema(SchemaDefinition schemaDefinition) {

    if (isSchemaPresent(schemaDefinition.getCollectionName())) {
      updateSchema(schemaDefinition);
      return;
    }

    createSchema(schemaDefinition);
  }