protected StringBuilder appendRootObject()

in streams-plugins/streams-plugin-hbase/src/main/java/org/apache/streams/plugins/hbase/StreamsHbaseResourceGenerator.java [166:211]


  protected StringBuilder appendRootObject(StringBuilder builder, Schema schema, String resourceId) {
    Objects.requireNonNull(builder);
    ObjectNode propertiesNode = schemaStore.resolveProperties(schema, null, resourceId);
    if ( propertiesNode != null && propertiesNode.isObject() && propertiesNode.size() > 0) {

      List<String> fieldStrings = new ArrayList<>();

      // table
      fieldStrings.add(hbaseEscape(schemaSymbol(schema)));

      // column family
      fieldStrings.add(hbaseEscape(schemaSymbol(schema)));

      // parent column family
      if ( schema.getParent() != null ) {
        fieldStrings.add(hbaseEscape(schemaSymbol(schema.getParent())));
      }

      // sub-object column families
      if ( propertiesNode != null && propertiesNode.isObject() && propertiesNode.size() > 0 ) {

        Iterator<Map.Entry<String, JsonNode>> fields = propertiesNode.fields();
        for ( ; fields.hasNext(); ) {
          Map.Entry<String, JsonNode> field = fields.next();
          String fieldId = field.getKey();
          if ( !config.getExclusions().contains(fieldId) && field.getValue().isObject()) {
            ObjectNode fieldNode = (ObjectNode) field.getValue();
            FieldType fieldType = FieldUtil.determineFieldType(fieldNode);
            if (fieldType != null ) {
              switch (fieldType) {
                case OBJECT:
                  fieldStrings.add(hbaseEscape(fieldId));
                  break;
                default:
                  break;
              }
            }
          }
        }
        builder.append(String.join(", ", fieldStrings));

      }
    }
    Objects.requireNonNull(builder);
    return builder;
  }