public NetworkNodeType GetNodeType(int nodeId) { NodeTypesPage page = LoadNodeTypePage(NetworkObjectSerializer.Page(nodeId)); if (page == null) { return(NetworkNodeType.Unknown); } return(page.GetNodeType(nodeId)); }
private NodeTypesPage LoadNodeTypePage(int page) { lock (_thisLock) { if (_nodeTypePages.ContainsKey(page)) { return(_nodeTypePages[page]); } if (_dbfactory != null) { try { int from = page * NetworkObjectSerializer.PageSize + 1; int to = (page + 1) * NetworkObjectSerializer.PageSize; using (DbConnection connection = _dbfactory.CreateConnection()) { connection.ConnectionString = _connectionString; DbCommand command = _dbfactory.CreateCommand(); command.Connection = connection; command.CommandText = "select " + _dbNames.DbColName("FDB_OID") + "," + _dbNames.DbColName("NODETYPE") + " from " + _nodeTableName + " where " + _dbNames.DbColName("NODETYPE") + ">0 and " + _dbNames.DbColName("FDB_OID") + ">=" + from + " and " + _dbNames.DbColName("FDB_OID") + "<=" + to; connection.Open(); DbDataAdapter adapter = _dbfactory.CreateDataAdapter(); adapter.SelectCommand = command; DataTable tab = new DataTable(); adapter.Fill(tab); NodeTypesPage nodeTypesPage = new NodeTypesPage(); foreach (DataRow row in tab.Rows) { nodeTypesPage.Add(Convert.ToInt32(row["FDB_OID"]), (NetworkNodeType)Convert.ToInt32(row["NODETYPE"])); } connection.Close(); _nodeTypePages.Add(page, nodeTypesPage); return(nodeTypesPage); } } catch { } } return(null); } }