org.teiid.metadata.Table.getUniqueKeys()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(12.8k)|赞(0)|评价(0)|浏览(121)

本文整理了Java中org.teiid.metadata.Table.getUniqueKeys()方法的一些代码示例,展示了Table.getUniqueKeys()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Table.getUniqueKeys()方法的具体详情如下:
包路径:org.teiid.metadata.Table
类名称:Table
方法名:getUniqueKeys

Table.getUniqueKeys介绍

暂无

代码示例

代码示例来源:origin: org.teiid.connectors/translator-odata4

KeyRecord getPKorUnique(Table table) {
  KeyRecord pk = table.getPrimaryKey();
  if (pk == null && !table.getUniqueKeys().isEmpty()) {
    pk = table.getUniqueKeys().get(0);
  }
  return pk;
}

代码示例来源:origin: org.teiid/teiid-olingo

static KeyRecord getIdentifier(Table table) {
  if (table.getPrimaryKey() != null) {
    return table.getPrimaryKey();
  }
  
  for (KeyRecord key:table.getUniqueKeys()) {
    return key;
  }
  return null;
}

代码示例来源:origin: teiid/teiid

public Collection<KeyRecord> getAllKeys() { 
  Collection<KeyRecord> keys = new LinkedList<KeyRecord>();
  if (getPrimaryKey() != null) {
    keys.add(getPrimaryKey());
  }
  keys.addAll(getForeignKeys());
  keys.addAll(getAccessPatterns());
  keys.addAll(getIndexes());
  keys.addAll(getUniqueKeys());
  return keys;
}

代码示例来源:origin: org.teiid/teiid-engine

public Collection<KeyRecord> getUniqueKeysInGroup(final Object groupID)
  throws TeiidComponentException, QueryMetadataException {
  Table tableRecordImpl = (Table)groupID;
  ArrayList<KeyRecord> result = new ArrayList<KeyRecord>(tableRecordImpl.getUniqueKeys());
  if (tableRecordImpl.getPrimaryKey() != null) {
    result.add(tableRecordImpl.getPrimaryKey());
  }
  for (KeyRecord key : tableRecordImpl.getIndexes()) {
    if (key.getType() == KeyRecord.Type.Unique) {
      result.add(key);
    }
  }
  return result;
}

代码示例来源:origin: org.jboss.teiid/teiid-engine

public Collection<KeyRecord> getUniqueKeysInGroup(final Object groupID)
  throws TeiidComponentException, QueryMetadataException {
  Table tableRecordImpl = (Table)groupID;
  ArrayList<KeyRecord> result = new ArrayList<KeyRecord>(tableRecordImpl.getUniqueKeys());
  if (tableRecordImpl.getPrimaryKey() != null) {
    result.add(tableRecordImpl.getPrimaryKey());
  }
  for (KeyRecord key : tableRecordImpl.getIndexes()) {
    if (key.getType() == KeyRecord.Type.Unique) {
      result.add(key);
    }
  }
  return result;
}

代码示例来源:origin: teiid/teiid

public Collection<KeyRecord> getUniqueKeysInGroup(final Object groupID)
  throws TeiidComponentException, QueryMetadataException {
  Table tableRecordImpl = (Table)groupID;
  ArrayList<KeyRecord> result = new ArrayList<KeyRecord>(tableRecordImpl.getUniqueKeys());
  if (tableRecordImpl.getPrimaryKey() != null) {
    result.add(tableRecordImpl.getPrimaryKey());
  }
  for (KeyRecord key : tableRecordImpl.getIndexes()) {
    if (key.getType() == KeyRecord.Type.Unique) {
      result.add(key);
    }
  }
  return result;
}

代码示例来源:origin: org.teiid.connectors/translator-jdbc

private KeyRecord autoCreateUniqueKeys(boolean create, MetadataFactory factory, String name, TreeMap<Short, String> referencedKeyColumns, Table pkTable) {
  if (referencedKeyColumns != null && pkTable.getPrimaryKey() == null && pkTable.getUniqueKeys().isEmpty()) {
    factory.addIndex(name + "_unique", false, new ArrayList<String>(referencedKeyColumns.values()), pkTable); //$NON-NLS-1$
  }
  
  KeyRecord uniqueKey = null;
  if (referencedKeyColumns == null) {
    uniqueKey = pkTable.getPrimaryKey();
  } else {
    for (KeyRecord record : pkTable.getUniqueKeys()) {
      if (keyMatches(new ArrayList<String>(referencedKeyColumns.values()), record)) {
        uniqueKey = record;
        break;
      }
    }
    if (uniqueKey == null && pkTable.getPrimaryKey() != null && keyMatches(new ArrayList<String>(referencedKeyColumns.values()), pkTable.getPrimaryKey())) {
      uniqueKey = pkTable.getPrimaryKey();
    }
  }
  if (uniqueKey == null && create) {
    uniqueKey = factory.addIndex(name + "_unique", false, new ArrayList<String>(referencedKeyColumns.values()), pkTable); //$NON-NLS-1$
  }
  return uniqueKey;
}

代码示例来源:origin: org.teiid/teiid-olingo

static boolean isPartOfPrimaryKey(Table table, String columnName) {
  KeyRecord pk = table.getPrimaryKey();
  if (hasColumn(pk, columnName)) {
    return true;
  }
  for (KeyRecord key:table.getUniqueKeys()) {
    if (hasColumn(key, columnName)) {
      return true;
    }            
  }
  return false;
}

代码示例来源:origin: org.teiid.connectors/translator-odata

private boolean matchesWithPkOrUnique(List<String> names, Table table) {
  if (keyMatches(names, table.getPrimaryKey())) {
    return true;
  }
  for (KeyRecord record:table.getUniqueKeys()) {
    if (keyMatches(names, record)) {
      return true;
    }
  }
  return false;
}

代码示例来源:origin: org.teiid.connectors/translator-odata

static boolean isPartOfPrimaryKey(Table table, String columnName) {
  KeyRecord pk = table.getPrimaryKey();
  if (hasColumn(pk, columnName)) {
    return true;
  }
  for (KeyRecord key:table.getUniqueKeys()) {
    if (hasColumn(key, columnName)) {
      return true;
    }            
  }
  return false;
}

代码示例来源:origin: teiid/teiid

/**
 * Adds an index to the given table.
 * @param name
 * @param nonUnique true indicates that an index is being added.
 * @param columnNames
 * @param table
 * @return
 * @throws MetadataException
 */
public KeyRecord addIndex(String name, boolean nonUnique, List<String> columnNames, Table table) {
  KeyRecord index = new KeyRecord(nonUnique?KeyRecord.Type.Index:KeyRecord.Type.Unique);
  index.setParent(table);
  index.setColumns(new ArrayList<Column>(columnNames.size()));
  index.setName(name);
  assignColumns(columnNames, table, index);
  setUUID(index);
  if (nonUnique) {
    table.getIndexes().add(index);
  }
  else {
    table.getUniqueKeys().add(index);
  }
  return index;
}

代码示例来源:origin: org.teiid/teiid-olingo

OrderBy addDefaultOrderBy() {
  if (this.table == null) {
    return null;
  }
  OrderBy orderBy = new OrderBy();
  // provide implicit ordering for cursor logic
  KeyRecord record = this.table.getPrimaryKey();
  if (record == null) {
    // if PK is not available there MUST at least one unique key
    record = this.table.getUniqueKeys().get(0);
  }
  // provide implicit ordering for cursor logic
  for (Column column:record.getColumns()) {
    ElementSymbol expr = new ElementSymbol(column.getName(), this.groupSymbol);
    orderBy.addVariable(expr);
    addProjectedColumn(column.getName(), expr);
  }
  return orderBy;
}

代码示例来源:origin: teiid/teiid

@Test
public void testConstraints2() throws Exception {
  String ddl = "CREATE FOREIGN TABLE G1( e1 integer, e2 varchar, e3 date, " +
      "ACCESSPATTERN(e1), UNIQUE(e1), ACCESSPATTERN(e2, e3))";
  Schema s = helpParse(ddl, "model").getSchema();
  Map<String, Table> tableMap = s.getTables();    
  
  assertTrue("Table not found", tableMap.containsKey("G1"));
  Table table = tableMap.get("G1");
  
  assertEquals(table.getColumns().subList(0, 1), table.getUniqueKeys().get(0).getColumns());
  assertEquals(2, table.getAccessPatterns().size());
  assertEquals(table.getColumns().subList(0, 1), table.getAccessPatterns().get(0).getColumns());
  assertEquals(table.getColumns().subList(1, 3), table.getAccessPatterns().get(1).getColumns());
}

代码示例来源:origin: org.teiid/teiid-engine

final public void inlineConstraint(MetadataFactory factory, Table table, List<String> columnName) throws ParseException {
 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 case PRIMARY:
  jj_consume_token(PRIMARY);
  jj_consume_token(KEY);
   if (table.getPrimaryKey() != null) {
     {if (true) throw new MetadataException(QueryPlugin.Util.getString("SQLParser.pk_exists", table.getName()));}
   }
   factory.addPrimaryKey("PK", columnName, table);
  break;
 case UNIQUE:
  jj_consume_token(UNIQUE);
   factory.addIndex("UNIQUE"+table.getUniqueKeys().size(), false, columnName, table);
  break;
 case INDEX:
  jj_consume_token(INDEX);
   factory.addIndex("INDEX"+table.getIndexes().size(), true, columnName, table);
  break;
 default:
  jj_la1[439] = jj_gen;
  jj_consume_token(-1);
  throw new ParseException();
 }
}

代码示例来源:origin: teiid/teiid

final public void inlineConstraint(MetadataFactory factory, Table table, List<String> columnName) throws ParseException {
 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
 case PRIMARY:
  jj_consume_token(PRIMARY);
  jj_consume_token(KEY);
   if (table.getPrimaryKey() != null) {
     {if (true) throw new MetadataException(QueryPlugin.Util.getString("SQLParser.pk_exists", table.getName()));}
   }
   factory.addPrimaryKey("PK", columnName, table);
  break;
 case UNIQUE:
  jj_consume_token(UNIQUE);
   factory.addIndex("UNIQUE"+table.getUniqueKeys().size(), false, columnName, table);
  break;
 case INDEX:
  jj_consume_token(INDEX);
   factory.addIndex("INDEX"+table.getIndexes().size(), true, columnName, table);
  break;
 default:
  jj_la1[439] = jj_gen;
  jj_consume_token(-1);
  throw new ParseException();
 }
}

代码示例来源:origin: teiid/teiid

@Test
public void testConstraints() throws Exception {
  String ddl = "CREATE FOREIGN TABLE G1( e1 integer, e2 varchar, e3 date, " +
      " PRIMARY KEY (e1, e2), INDEX(e2, e3), ACCESSPATTERN(e1), UNIQUE(e1)," +
      " ACCESSPATTERN(e2, e3))";
  Schema s = helpParse(ddl, "model").getSchema();
  Map<String, Table> tableMap = s.getTables();    
  
  assertTrue("Table not found", tableMap.containsKey("G1"));
  Table table = tableMap.get("G1");
  
  assertEquals(table.getColumns().subList(0, 2), table.getPrimaryKey().getColumns());
  assertEquals(table.getColumns().subList(1, 3), table.getIndexes().get(0).getColumns());
  assertEquals(table.getColumns().subList(0, 1), table.getUniqueKeys().get(0).getColumns());
  assertEquals(2, table.getAccessPatterns().size());
  assertEquals(table.getColumns().subList(0, 1), table.getAccessPatterns().get(0).getColumns());
  assertEquals(table.getColumns().subList(1, 3), table.getAccessPatterns().get(1).getColumns());
}

代码示例来源:origin: org.teiid.connectors/translator-mongodb

private DBCollection getCollection(Table table) {
  DBCollection collection;
  if (!this.mongoDB.collectionExists(table.getName())) {
    collection = this.mongoDB.createCollection(table.getName(), null);
    // since this is the first time creating the tables; create the indexes on the collection
    // index on foreign keys
    for (ForeignKey record:table.getForeignKeys()) {
      createIndex(collection, record, false);
    }
    // index on unique
    for (KeyRecord record:table.getUniqueKeys()) {
      createIndex(collection, record, true);
    }
    // index on index keys
    for (KeyRecord record:table.getIndexes()) {
      createIndex(collection, record, false);
    }
  }
  else {
    collection = this.mongoDB.getCollection(table.getName());
  }
  return collection;
}

代码示例来源:origin: teiid/teiid

private void buildContraints(Table table) {
  addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$
  
  KeyRecord pk = table.getPrimaryKey();
  if (pk != null) {
    addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$
  }
  addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE);
  addConstraints(table.getIndexes(), INDEX, INDEX);
  addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX);
  for (int i = 0; i < table.getForeignKeys().size(); i++) {
    ForeignKey key = table.getForeignKeys().get(i);
    addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$
    append(SPACE).append(REFERENCES);
    if (key.getReferenceKey() != null) {
      if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) {
        append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName()));
      } else {
        append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName()));
      }
    } else if (key.getReferenceTableName() != null) {
      append(SPACE).append(new GroupSymbol(key.getReferenceTableName()));
    }
    append(SPACE);
    addNames(key.getReferenceColumns());
    appendOptions(key);
  }
}

代码示例来源:origin: org.teiid/teiid-engine

private void buildContraints(Table table) {
  addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$
  
  KeyRecord pk = table.getPrimaryKey();
  if (pk != null) {
    addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$
  }
  addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE);
  addConstraints(table.getIndexes(), INDEX, INDEX);
  addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX);
  for (int i = 0; i < table.getForeignKeys().size(); i++) {
    ForeignKey key = table.getForeignKeys().get(i);
    addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$
    append(SPACE).append(REFERENCES);
    if (key.getReferenceKey() != null) {
      if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) {
        append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName()));
      } else {
        append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName()));
      }
    } else if (key.getReferenceTableName() != null) {
      append(SPACE).append(new GroupSymbol(key.getReferenceTableName()));
    }
    append(SPACE);
    addNames(key.getReferenceColumns());
    appendOptions(key);
  }
}

代码示例来源:origin: org.jboss.teiid/teiid-engine

private void buildContraints(Table table) {
  addConstraints(table.getAccessPatterns(), "AP", ACCESSPATTERN); //$NON-NLS-1$
  
  KeyRecord pk = table.getPrimaryKey();
  if (pk != null) {
    addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$
  }
  addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE);
  addConstraints(table.getIndexes(), INDEX, INDEX);
  addConstraints(table.getFunctionBasedIndexes(), INDEX, INDEX);
  for (int i = 0; i < table.getForeignKeys().size(); i++) {
    ForeignKey key = table.getForeignKeys().get(i);
    addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$
    append(SPACE).append(REFERENCES);
    if (key.getReferenceKey() != null) {
      if (key.getReferenceKey().getParent().getParent().equals(key.getParent().getParent())) {
        append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getName()));
      } else {
        append(SPACE).append(new GroupSymbol(key.getReferenceKey().getParent().getFullName()));
      }
    } else if (key.getReferenceTableName() != null) {
      append(SPACE).append(new GroupSymbol(key.getReferenceTableName()));
    }
    append(SPACE);
    addNames(key.getReferenceColumns());
    appendOptions(key);
  }
}

相关文章

微信公众号

最新文章

更多