Пример #1
0
  @Test
  public void testOptionsKey() throws Exception {
    String ddl =
        "CREATE FOREIGN TABLE G1( e1 integer, e2 varchar, e3 date, UNIQUE (e1) OPTIONS (CUSTOM_PROP 'VALUE'))";
    Schema s = helpParse(ddl, "model").getSchema();
    Map<String, Table> tableMap = s.getTables();

    assertTrue("Table not found", tableMap.containsKey("G1"));
    Table table = tableMap.get("G1");
    KeyRecord record = table.getAllKeys().iterator().next();
    assertEquals("VALUE", record.getProperty("CUSTOM_PROP", false));
  }
Пример #2
0
 private void addConstraint(
     String defaultName, String type, KeyRecord constraint, boolean addOptions) {
   append(COMMA).append(NEWLINE).append(TAB);
   boolean nameMatches = defaultName.equals(constraint.getName());
   if (!nameMatches) {
     append(CONSTRAINT)
         .append(SPACE)
         .append(SQLStringVisitor.escapeSinglePart(constraint.getName()))
         .append(SPACE);
   }
   append(type);
   addColumns(constraint.getColumns(), false);
   if (addOptions) {
     appendOptions(constraint);
   }
 }
  static boolean sameColumnSet(KeyRecord recordOne, KeyRecord recordTwo) {

    if (recordOne == null || recordTwo == null) {
      return false;
    }

    List<Column> setOne = recordOne.getColumns();
    List<Column> setTwo = recordTwo.getColumns();

    if (setOne.size() != setTwo.size()) {
      return false;
    }
    for (int i = 0; i < setOne.size(); i++) {
      Column one = setOne.get(i);
      Column two = setTwo.get(i);
      if (!one.getName().equals(two.getName())) {
        return false;
      }
    }
    return true;
  }
  private static void buildEntityTypes(
      MetadataStore metadataStore, List<EdmSchema.Builder> edmSchemas) {
    for (Schema schema : metadataStore.getSchemaList()) {

      List<EdmEntitySet.Builder> entitySets = new ArrayList<EdmEntitySet.Builder>();
      List<EdmEntityType.Builder> entityTypes = new ArrayList<EdmEntityType.Builder>();

      for (Table table : schema.getTables().values()) {

        KeyRecord primaryKey = table.getPrimaryKey();
        List<KeyRecord> uniques = table.getUniqueKeys();
        if (primaryKey == null && uniques.isEmpty()) {
          LogManager.logDetail(
              LogConstants.CTX_ODATA,
              ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16002, table.getFullName()));
          continue;
        }

        EdmEntityType.Builder entityType =
            EdmEntityType.newBuilder().setName(table.getName()).setNamespace(schema.getName());

        // adding key
        if (primaryKey != null) {
          for (Column c : primaryKey.getColumns()) {
            entityType.addKeys(c.getName());
          }
        } else {
          for (Column c : uniques.get(0).getColumns()) {
            entityType.addKeys(c.getName());
          }
        }

        // adding properties
        for (Column c : table.getColumns()) {
          EdmProperty.Builder property =
              EdmProperty.newBuilder(c.getName())
                  .setType(ODataTypeManager.odataType(c.getDatatype().getRuntimeTypeName()))
                  .setNullable(c.getNullType() == NullType.Nullable);
          if (c.getDatatype()
              .getRuntimeTypeName()
              .equals(DataTypeManager.DefaultDataTypes.STRING)) {
            property.setFixedLength(c.isFixedLength()).setMaxLength(c.getLength()).setUnicode(true);
          }
          entityType.addProperties(property);
        }

        // entity set one for one entity type
        EdmEntitySet.Builder entitySet =
            EdmEntitySet.newBuilder().setName(table.getName()).setEntityType(entityType);

        entityType.setNamespace(schema.getName());
        entitySets.add(entitySet);

        // add enitity types for entity schema
        entityTypes.add(entityType);
      }

      // entity container is holder entity sets, association sets, function imports
      EdmEntityContainer.Builder entityContainer =
          EdmEntityContainer.newBuilder()
              .setName(schema.getName())
              .setIsDefault(false)
              .addEntitySets(entitySets);

      // build entity schema
      EdmSchema.Builder modelSchema =
          EdmSchema.newBuilder()
              .setNamespace(schema.getName())
              .addEntityTypes(entityTypes)
              .addEntityContainers(entityContainer);

      edmSchemas.add(modelSchema);
    }
  }