public static DB_EA.Database getDatabase(TSF_EA.Element element) { //first get the database based on the attribute var databasePackage = element.getAllOwners().OfType <Package>().FirstOrDefault(x => x.stereotypeNames.Any(y => y.ToLower() == "database")); //no database found, return empty if (databasePackage == null) { return(null); } string databaseType = databasePackage.taggedValues.FirstOrDefault(x => x.name.ToLower() == "dbms")?.tagValue.ToString(); //no database type found. We cannot create the database if (string.IsNullOrEmpty(databaseType)) { return(null); } //create the factory and database // TODO: add caching? var dbFactory = getFactory(databaseType, element.EAModel, new StrategyFactory()); return(dbFactory?.createDataBase(databasePackage)); }