public void NavigationThroughRecords( ) { ITable testTable = m_database.GetTable("People"); Insert_100_NewRecordsAndCheck(testTable, 100); IResultSet people = testTable.CreateResultSet(Id); int count = 0; foreach (IRecord person in people) { person.GetValue(Id); count++; } Assert.AreEqual(100, count); people.Dispose(); people = testTable.CreateResultSet(Id); count = 0; foreach (IRecord person in people) { person.GetValue(Id); count++; } Assert.AreEqual(100, count); people.Dispose(); }
public bool MoveNext() { if (_baseEnumerator == null) { return(false); } while (true) { bool result; try { result = _baseEnumerator.MoveNext(); } catch (IOException ex) { _ioError = true; _resultSet.Dispose(); MyPalStorage.Storage.OnIOErrorDetected(ex); return(false); } catch (BadIndexesException) { MyPalStorage.Storage.OnIndexCorruptionDetected("Bad indexes found in " + _operation); return(false); } if (!result) { return(false); } try { LoadCurrentRecord(); } catch (IOException ex) { _ioError = true; _resultSet.Dispose(); MyPalStorage.Storage.OnIOErrorDetected(ex); return(false); } catch (BadIndexesException) { MyPalStorage.Storage.OnIndexCorruptionDetected("Bad indexes found in " + _operation); continue; } return(true); } }
public void SaveAndLoad( ) { ITable testTable = m_database.GetTable("People"); DateTime dateTime = DateTime.Now; for (int i = 0; i < 100; i++) { InsertRecord(testTable, i.ToString(), i, dateTime.Subtract(new TimeSpan(i, 0, 0, 0))); } IResultSet people = testTable.CreateResultSet(Id); int count = 0; foreach (IRecord person in people) { int id = person.GetIntValue(Id); Assert.IsTrue(id == count); string name = person.GetStringValue(Name); Assert.IsTrue(name == count.ToString()); int age = person.GetIntValue(Age); age = age; DateTime receivedTime = (DateTime)person.GetValue(Birthday); Assert.IsTrue(receivedTime == dateTime.Subtract(new TimeSpan(count, 0, 0, 0))); count++; } Assert.AreEqual(100, count); people.Dispose(); }
internal override IntArrayList GetMatchingResources(out bool sortedById) { bool reverseLink = (_propId < 0 && MyPalStorage.Storage.IsLinkDirected(-_propId)); IResultSet rs = MyPalStorage.Storage.SelectLinksOfType(reverseLink ? -_propId : _propId); try { IntArrayList list; if (reverseLink) { list = DoGetResourcesFromResultSet(rs, 1); list.Sort(); } else { list = DoGetResourcesFromResultSet(rs, 0); list.Sort(); if (!MyPalStorage.Storage.IsLinkDirected(_propId)) { IntArrayList list2 = DoGetResourcesFromResultSet(rs, 1); list2.Sort(); list = IntArrayList.MergeSorted(list, list2); } } list.RemoveDuplicatesSorted(); sortedById = true; return(list); } finally { rs.Dispose(); } }
private void UpdatePropTypeRecord(string propName, IResource res) { IResultSet rs = _propTypeTable.CreateModifiableResultSet(1, propName); try { IEnumerator enumerator = rs.GetEnumerator(); using ((IDisposable)enumerator) { if (!enumerator.MoveNext()) { throw new StorageException("Cannot find the property type to be updated"); } IRecord rec = (IRecord)enumerator.Current; if (rec.GetIntValue(2) != res.GetIntProp("DataType")) { throw new StorageException("Invalid attempt to change data type of property " + propName + " from " + (PropDataType)rec.GetIntValue(2) + " to " + (PropDataType)res.GetIntProp("DataType")); } rec.SetValue(3, res.GetIntProp("Flags")); _storage.SafeCommitRecord(rec, "PropTypeCollection.UpdatePropTypeRecord"); } } finally { rs.Dispose(); } }
protected IntArrayList GetResourcesFromResultSet(IResultSet rs, int column) { try { return(DoGetResourcesFromResultSet(rs, column)); } finally { rs.Dispose(); } }
public void SortEqualAscWithNoRecords( ) { IResultSet resultSet = _peopleTable.CreateModifiableResultSet(1, "300"); int count = 0; foreach (IRecord record in resultSet) { string name = record.GetStringValue(1); name = name; count++; } Assert.AreEqual(0, count, "Count is wrong"); resultSet.Dispose(); }
public void SortEqualAsc( ) { IResultSet resultSet = _peopleTable.CreateModifiableResultSet(1, "495"); int count = 0; foreach (IRecord record in resultSet) { string name = record.GetStringValue(1); Assert.AreEqual("495", name, "Name is wrong"); count++; } Assert.AreEqual(1, count, "Count is wrong"); resultSet.Dispose(); }
protected SafeRecordEnumeratorBase(IResultSet resultSet, string operation) { _resultSet = resultSet; _operation = operation; try { _baseEnumerator = resultSet.GetEnumerator(); } catch (IOException ex) { _ioError = true; _resultSet.Dispose(); MyPalStorage.Storage.OnIOErrorDetected(ex); _baseEnumerator = null; } }
public void SortOnFiled( ) { IResultSet resultSet = m_testTable.CreateResultSet(Name); int count = 0; foreach (IRecord record in resultSet) { string name = record.GetStringValue(Name); name = name; count++; } Assert.AreEqual(10, count); resultSet.Dispose(); return; }
public void CheckUnicodeStringReading( ) { IRecord record = _peopleTable.NewRecord(); string str = @"Ѓ¦–ўЏі‘ш‚ЖЏі‘шЌLЌђЃЎ8ђз–њ‰~Ћы“ь•ы–@’с‹џѓЃѓ‹ѓ}ѓKЃЎђV”N‚НЃy‚T‰‚Xђз–њ‰~ЏШ‹’—LѓrѓWѓlѓXЃz‚Е–Ъ“I’Bђ¬6ђз–њ‰~ЏШ‹’—LЋы“ь•ы–@‚ ‚и‚Ь‚·Ѓ@-‚Uђз–њ‰~€И‰є”NЋы‚М•ы‚Й‘еЉЅЊ}‚і‚к‚Д‚ў‚Ь‚·---_‚ж‚иЏШ‹’‚Е‚·ЃBЃ@"; record.SetValue(0, 888); record.SetValue(1, str); record.Commit(); IResultSet resultSet = _peopleTable.CreateResultSet(0, 888); foreach (IRecord rec in resultSet) { Assert.AreEqual(str, rec.GetStringValue(1)); } resultSet.Dispose(); }
/** * Unregisters the specified property type and deletes all properties * of that type. */ public void Delete(int id) { PropTypeItem item = FindPropTypeItem(id); if (item.DataType == PropDataType.Link) { _storage.DeleteLinksOfType(id); } else { _storage.DeletePropsOfType(id); } ResourceRestrictions.DeletePropRestrictions(id); IResultSet rs = _propTypeTable.CreateModifiableResultSet(0, id); try { SafeRecordEnumerator enumerator = new SafeRecordEnumerator(rs, "PropTypes.Delete"); using ( enumerator ) { if (!enumerator.MoveNext()) { MyPalStorage.Storage.OnIndexCorruptionDetected("PropTypeCollection.Delete: Attempt to delete non-existing property type " + id); } else { IRecord rec = enumerator.Current; _storage.SafeDeleteRecord(rec, "PropTypes.Delete"); } } } finally { rs.Dispose(); } IResource propTypeRes = _storage.FindUniqueResource("PropType", "ID", id); Debug.Assert(propTypeRes != null); propTypeRes.Delete(); }
/** * Loads the property types to the cache hash table. */ internal void CachePropTypes() { IResultSet rs = _propTypeTable.CreateResultSet(0); try { foreach (IRecord rec in rs) { int ID = rec.GetIntValue(0); string name = rec.GetStringValue(1); AddPropTypeToCache(ID, name, (PropDataType)rec.GetIntValue(2), (PropTypeFlags)rec.GetIntValue(3)); } } finally { rs.Dispose(); } _propTypesCached = true; }
/** * Loads the resource types to the cache hash table. */ internal void CacheResourceTypes() { int count = 0; IResultSet rs = _resourceTypeTable.CreateResultSet(0); try { foreach (IRecord rec in rs) { int ID = rec.GetIntValue(0); string name = rec.GetStringValue(1); AddResourceTypeToCache(ID, name, "", ResourceTypeFlags.Normal); count++; } } finally { rs.Dispose(); } Debug.WriteLine("Loaded " + count + " resource types to cache"); }
public void Search( ) { m_testTable = m_database.GetTable("People"); for (int i = 0; i < 10; i++) { IRecord record = m_testTable.NewRecord(); Assert.AreEqual(i, record.GetID()); record.SetValue(Name, (500 - i).ToString()); record.Commit(); Assert.AreEqual((i + 1), m_testTable.Count); } IResultSet resultSet = m_testTable.CreateModifiableResultSet(Name, "300"); int count = 0; foreach (IRecord record in resultSet) { string name = record.GetStringValue(Name); name = name; count++; } Assert.AreEqual(0, count); resultSet.Dispose(); }
public void CheckSaveLoadIndex( ) { ITable testTable = m_database.GetTable("People"); for (int i = 0; i < 10; i++) { IRecord record = testTable.NewRecord(); record.SetValue(Name, i.ToString()); record.SetValue(Birthday, DateTime.Now.Date); record.Commit(); Assert.IsTrue(testTable.Count == (i + 1)); } m_database.Shutdown(); DBStructure dbStruct = new DBStructure("", "MyPal"); dbStruct.LoadStructure(); m_database = dbStruct.OpenDatabase( ); testTable = m_database.GetTable("People"); Assert.AreEqual(10, testTable.Count); IResultSet people = testTable.CreateResultSet(Id); int count = 0; foreach (IRecord person in people) { int id = person.GetIntValue(Id); Assert.AreEqual(count, id); string name = person.GetStringValue(Name); Assert.AreEqual(count.ToString(), name); int age = person.GetIntValue(Age); age = age; DateTime dateTime = (DateTime)person.GetValue(Birthday); Assert.AreEqual(DateTime.Now.Date, dateTime); count++; } Assert.AreEqual(10, count); people.Dispose(); }
public void Dispose() { _resultSet.Dispose(); }