private static List <Table> GetDistinctTables(XmlWorkListWorkspace workspace, Geodatabase geodatabase) { var distinctTables = new Dictionary <GdbTableIdentity, Table>(); foreach (XmlTableReference tableReference in workspace.Tables) { var table = geodatabase.OpenDataset <Table>(tableReference.Name); var id = new GdbTableIdentity(table); if (!distinctTables.ContainsKey(id)) { distinctTables.Add(id, table); } } return(distinctTables.Values.ToList()); }
private static Geodatabase GetGeodatabase([NotNull] XmlWorkListWorkspace workspace) { Assert.ArgumentNotNull(workspace, nameof(workspace)); // DBCLIENT = oracle // AUTHENTICATION_MODE = DBMS // PROJECT_INSTANCE = sde // ENCRYPTED_PASSWORD = 00022e684d4b4235766e4b6e324833335277647064696e734e586f584269575652504534653763387763674876504d3d2a00 // SERVER = topgist // INSTANCE = sde:oracle11g: topgist // VERSION = SDE.DEFAULT // DB_CONNECTION_PROPERTIES = topgist // USER = topgis_tlm try { Assert.True( Enum.TryParse(workspace.WorkspaceFactory, ignoreCase: true, out WorkspaceFactory factory), $"Cannot parse {nameof(WorkspaceFactory)} from string {workspace.WorkspaceFactory}"); switch (factory) { case WorkspaceFactory.FileGDB: return(new Geodatabase( new FileGeodatabaseConnectionPath( new Uri(workspace.ConnectionString, UriKind.Absolute)))); case WorkspaceFactory.SDE: var builder = new ConnectionStringBuilder(workspace.ConnectionString); Assert.True( Enum.TryParse(builder["dbclient"], ignoreCase: true, out EnterpriseDatabaseType databaseType), $"Cannot parse {nameof(EnterpriseDatabaseType)} from connection string {workspace.ConnectionString}"); Assert.True( Enum.TryParse(builder["authentication_mode"], ignoreCase: true, out AuthenticationMode authMode), $"Cannot parse {nameof(AuthenticationMode)} from connection string {workspace.ConnectionString}"); var connectionProperties = new DatabaseConnectionProperties(databaseType) { AuthenticationMode = authMode, ProjectInstance = builder["project_instance"], Database = builder["server"], // is always null in CIMFeatureDatasetDataConnection Instance = builder["instance"], Version = builder["version"], Branch = builder["branch"] // ? //Password = builder["encrypted_password"], //User = builder["user"] }; return(new Geodatabase(connectionProperties)); default: throw new ArgumentOutOfRangeException(); } } catch (Exception e) { _msg.Debug($"Cannot open geodatabase from connection string {workspace.ConnectionString}", e); return(null); } }