/* create catalog or schema for a database connection,the structure is the same as TOP */ public static void addCatalogOrSchema( IMetadataConnection metadataConnection, DatabaseConnection dbconn) { EDatabaseSchemaOrCatalogMapping catalog = null; EDatabaseSchemaOrCatalogMapping schema = null; EDatabaseTypeName type = EDatabaseTypeName.getTypeFromDbType(metadataConnection.getDbType()); if (type.equals(EDatabaseTypeName.GENERAL_JDBC)) { String realtype = ExtractMetaDataUtils.getInstance() .getDbTypeByClassName(metadataConnection.getDriverClass()); type = EDatabaseTypeName.getTypeFromDbType(realtype); catalog = type.getCatalogMappingField(); schema = type.getSchemaMappingField(); } else { catalog = type.getCatalogMappingField(); schema = type.getSchemaMappingField(); } fillValuesForSchemaOrCatalog(catalog, schema, metadataConnection, dbconn); }
/** * Test method for {@link * org.talend.metadata.managment.model.MetadataFillFactory#getDBInstance(org.talend.core.database.EDatabaseTypeName)} * . */ @Test public void testGetDBInstance() { MetadataFillFactory dbInstance = MetadataFillFactory.getDBInstance(EDatabaseTypeName.SYBASEASE); Assert.assertTrue( "MetadataFiller should be instanceof SybaseConnectionFillerImpl", //$NON-NLS-1$ dbInstance.getMetadataFiller() instanceof SybaseConnectionFillerImpl); dbInstance = MetadataFillFactory.getDBInstance(EDatabaseTypeName.SYBASEIQ); Assert.assertTrue( "MetadataFiller should be instanceof SybaseConnectionFillerImpl", //$NON-NLS-1$ dbInstance.getMetadataFiller() instanceof SybaseConnectionFillerImpl); for (EDatabaseConnTemplate databaseType : EDatabaseConnTemplate.values()) { dbInstance = MetadataFillFactory.getDBInstance( EDatabaseTypeName.getTypeFromDbType(databaseType.getDBTypeName())); Assert.assertNotNull(dbInstance); } }
/* return all tables from current datapackage with List,so that the result is order-sorted */ public static List<org.talend.core.model.metadata.builder.connection.MetadataTable> getTablesFromSpecifiedDataPackageWithOders(DatabaseConnection dbconn) { // if the database connection is contextmodel, need to get the original value of every parameter IMetadataConnection iMetadataConnection = ConvertionHelper.convert(dbconn); String schema = dbconn.getUiSchema(); String catalog = dbconn.getSID(); String databaseType = dbconn.getDatabaseType(); EDatabaseTypeName currentType = EDatabaseTypeName.getTypeFromDbType(databaseType); EDatabaseSchemaOrCatalogMapping curCatalog = currentType.getCatalogMappingField(); EDatabaseSchemaOrCatalogMapping curSchema = currentType.getSchemaMappingField(); if (curCatalog != null && curSchema != null) { switch (curCatalog) { case Login: catalog = dbconn.getUsername(); break; case None: catalog = ""; break; } switch (curSchema) { case Login: schema = dbconn.getUsername(); break; case Schema: schema = dbconn.getUiSchema(); break; case None: schema = ""; break; case Default_Name: schema = dbconn.getName(); // label for default name for // access or such kind of // non-catalogs databases break; } } boolean isAccess = EDatabaseTypeName.ACCESS.getDisplayName().equals(iMetadataConnection.getDbType()); if (!isAccess) { schema = ExtractMetaDataUtils.getInstance().getDBConnectionSchema(dbconn); } return getTablesFromCurrentCatalogOrSchemaWithOrders(catalog, schema, dbconn); }
private static EDatabaseTypeName[] retrieveDBTypes(IConfigurationElement parent) { IConfigurationElement[] children = parent.getChildren("DBType"); // $NON-NLS-1$ List<EDatabaseTypeName> list = new ArrayList<EDatabaseTypeName>(); for (IConfigurationElement ce : children) { String type = ce.getAttribute("type"); // $NON-NLS-1$ EDatabaseTypeName dbType = EDatabaseTypeName.getTypeFromDbType(type, false); if (dbType == null) { // process some the types for (EDatabaseTypeName dtn : EDatabaseTypeName.values()) { if (dtn.name().equals(type)) { dbType = dtn; break; } } } if (dbType != null) { list.add(dbType); } } return list.toArray(new EDatabaseTypeName[0]); }
/** * wzhang Comment method "addDefaultTableForSpecifiedDataPackage". this function only for add * metadataTable. * * @param dbconn * @param dbtable * @throws SQLException * @throws IllegalAccessException * @throws InstantiationException * @throws ClassNotFoundException */ public static void addDefaultTableForSpecifiedDataPackage( DatabaseConnection dbconn, MetadataTable dbtable) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException { // if the database connection is contextmodel, need to get the original value of every parameter ExtractMetaDataUtils extractMeta = ExtractMetaDataUtils.getInstance(); IMetadataConnection imetadataConnection = ConvertionHelper.convert(dbconn); String schema = imetadataConnection.getSchema(); String catalog = imetadataConnection.getDatabase(); String databaseType = imetadataConnection.getDbType(); EDatabaseTypeName currentType = EDatabaseTypeName.getTypeFromDbType(databaseType); // IDBMetadataProvider extractor = // ExtractMetaDataFromDataBase.getProviderByDbType(databaseType); // if (extractor != null && currentType.isUseProvider()) { // catalog = extractor.getDefaultCatalogName(); // } EDatabaseSchemaOrCatalogMapping curCatalog = currentType.getCatalogMappingField(); EDatabaseSchemaOrCatalogMapping curSchema = currentType.getSchemaMappingField(); if (curCatalog != null && curSchema != null) { switch (curCatalog) { case Login: catalog = imetadataConnection.getUsername(); break; case None: catalog = ""; break; } switch (curSchema) { case Login: schema = imetadataConnection.getUsername(); break; case Schema: schema = imetadataConnection.getSchema(); break; case None: schema = ""; break; case Default_Name: schema = dbconn.getName(); // label for default name for // access or such kind of // non-catalogs databases break; } } boolean isAccess = EDatabaseTypeName.ACCESS.getDisplayName().equals(imetadataConnection.getDbType()); if (!isAccess) { schema = extractMeta.getMeataConnectionSchema(imetadataConnection); } // for olap connection boolean isOlap = extractMeta.isOLAPConnection(dbconn); if (isOlap) { List<Catalog> catalogs = ConnectionHelper.getCatalogs(dbconn); if (!catalogs.isEmpty()) { Catalog c = catalogs.get(0); catalog = c.getName(); if (!CatalogHelper.getSchemas(c).isEmpty()) { Schema s = CatalogHelper.getSchemas(c).get(0); schema = s.getName(); } } } addTableForTemCatalogOrSchema(catalog, schema, dbconn, dbtable, imetadataConnection); }