public void testGetSchemas() { // Legacy code Database contains Schemas directly, no catalog Database db = SQLSchemaFactoryImpl.eINSTANCE.createDatabase(); db.setName("database"); Schema s1 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s1.setName("s1"); Schema s2 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s2.setName("s2"); db.getSchemas().add(s1); db.getSchemas().add(s2); EList ss = ModelUtil.getSchemas(db, null); assertTrue(ss.size() == 2); // Both Database.getSchemas and Catalog.getSchemas exist, return all db = SQLSchemaFactoryImpl.eINSTANCE.createDatabase(); db.setName("database"); s1 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s1.setName("s1"); s2 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s2.setName("s2"); db.getSchemas().add(s1); db.getSchemas().add(s2); Catalog cat1 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat1.setName("cat1"); db.getCatalogs().add(cat1); cat1.getSchemas().add(s1); Catalog cat2 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat2.setName("cat2"); db.getCatalogs().add(cat2); cat2.getSchemas().add(s2); ss = ModelUtil.getSchemas(db, null); assertTrue(ss.size() == 2); // Both Database.getSchemas and Catalog.getSchemas exist, but only the latter is valid db = SQLSchemaFactoryImpl.eINSTANCE.createDatabase(); db.setName("database"); s1 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s1.setName("s1"); s2 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s2.setName("s2"); Schema s3 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s3.setName(""); db.getSchemas().add(s3); cat1 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat1.setName("cat1"); db.getCatalogs().add(cat1); cat1.getSchemas().add(s1); cat2 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat2.setName("cat2"); db.getCatalogs().add(cat2); cat2.getSchemas().add(s2); ss = ModelUtil.getSchemas(db, null); assertTrue(ss.size() == 2); // No Database.getSchemas, use catalogName null to retrieve all schemas db = SQLSchemaFactoryImpl.eINSTANCE.createDatabase(); db.setName("database"); s1 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s1.setName("s1"); s2 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s2.setName("s2"); cat1 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat1.setName("cat1"); db.getCatalogs().add(cat1); cat1.getSchemas().add(s1); cat2 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat2.setName("cat2"); db.getCatalogs().add(cat2); cat2.getSchemas().add(s2); ss = ModelUtil.getSchemas(db, null); assertTrue(ss.size() == 2); // No Database.getSchemas, catalog is a dummy node, use catalogName "" to retrieve all schemas db = SQLSchemaFactoryImpl.eINSTANCE.createDatabase(); db.setName("database"); s1 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s1.setName("s1"); s2 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s2.setName("s2"); cat1 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat1.setName(""); db.getCatalogs().add(cat1); cat1.getSchemas().add(s1); cat1.getSchemas().add(s2); ss = ModelUtil.getSchemas(db, ""); assertTrue(ss.size() == 2); // No Database.getSchemas, use catalogName to retrieve all schemas for a specific catalog db = SQLSchemaFactoryImpl.eINSTANCE.createDatabase(); db.setName("database"); s1 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s1.setName("s1"); s2 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s2.setName("s2"); cat1 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat1.setName("cat1"); db.getCatalogs().add(cat1); cat1.getSchemas().add(s1); cat2 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat2.setName("cat2"); db.getCatalogs().add(cat2); cat2.getSchemas().add(s2); ss = ModelUtil.getSchemas(db, "cat1"); assertTrue(ss.size() == 1); assertEquals(((Schema) ss.get(0)).getName(), "s1"); // No Database.getSchemas, and Database only has a dummy catalog, // use catalogName to retrieve all schemas for a specific catalog. // This is for backward compatibility db = SQLSchemaFactoryImpl.eINSTANCE.createDatabase(); db.setName("database"); s1 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s1.setName("s1"); s2 = SQLSchemaFactoryImpl.eINSTANCE.createSchema(); s2.setName("s2"); cat1 = SQLSchemaFactoryImpl.eINSTANCE.createCatalog(); cat1.setName(""); db.getCatalogs().add(cat1); cat1.getSchemas().add(s1); cat1.getSchemas().add(s2); ss = ModelUtil.getSchemas(db, "database"); assertTrue(ss.size() == 2); }