public void Add(YariMediaRecord yariMediaRecord, DateTime expiration) { lock (this) { count++; ensureArrays(); yariMediaRecordArray[count - 1] = yariMediaRecord; timeStamps[count - 1] = DateTime.Now; absoluteExpirations[count - 1] = expiration; // Expires slidingExpirations[count - 1] = TimeSpan.Zero; // Never slides quickSort(0, count - 1); } }
public int IndexOf(YariMediaRecord value) { lock (this) { for (int x = 0; x < count; x++) { if (YariMediaRecordArray[x].Equals(value)) { return(x); } } return(-1); } }
public void Insert(int index, YariMediaRecord value) { OnCollectionChanged(EventArgs.Empty); lock (this) { count++; ensureArrays(); addIndexKey(value.ID); for (int x = index + 1; x == count - 2; x++) { YariMediaRecordArray[x] = YariMediaRecordArray[x - 1]; } YariMediaRecordArray[index] = value; } }
/// <summary> /// Ensures that the index and object array are sized correctly /// for additions. This method should be protected by locks /// issued by calling methods. /// </summary> private void ensureArrays() { if (count > YariMediaRecordArray.GetUpperBound(0) + 1) { int[,] tempIndex = new int[count * 2, 2]; YariMediaRecord[] tempYariMediaRecordArray = new YariMediaRecord[count * 2]; for (int x = 0; x <= YariMediaRecordArray.GetUpperBound(0); x++) { tempIndex[x, 0] = index[x, 0]; // Copy ID tempIndex[x, 1] = index[x, 1]; // Copy Location tempYariMediaRecordArray[x] = YariMediaRecordArray[x]; // Copy Object } index = tempIndex; YariMediaRecordArray = tempYariMediaRecordArray; } }
/// <summary> /// Clones YariMediaRecord object and clones child objects with cloning or replication. /// as the parent object. /// </summary> /// <returns> A new YariMediaRecord object reflecting the replicated YariMediaRecord object.</returns> public YariMediaRecord Clone() { YariMediaRecord clonedYariMediaRecord = new YariMediaRecord(); clonedYariMediaRecord.iD = iD; clonedYariMediaRecord.isSynced = isSynced; clonedYariMediaRecord.endNoteReferenceID = endNoteReferenceID; clonedYariMediaRecord.publishYear = publishYear; clonedYariMediaRecord.title = title; clonedYariMediaRecord.pages = pages; clonedYariMediaRecord.edition = edition; clonedYariMediaRecord.isbn = isbn; clonedYariMediaRecord.label = label; clonedYariMediaRecord.abstractText = abstractText; clonedYariMediaRecord.contentsText = contentsText; clonedYariMediaRecord.notesText = notesText; clonedYariMediaRecord.amazonFillDate = amazonFillDate; clonedYariMediaRecord.amazonRefreshDate = amazonRefreshDate; clonedYariMediaRecord.imageUrlSmall = imageUrlSmall; clonedYariMediaRecord.imageUrlMedium = imageUrlMedium; clonedYariMediaRecord.imageUrlLarge = imageUrlLarge; clonedYariMediaRecord.amazonListPrice = amazonListPrice; clonedYariMediaRecord.amazonOurPrice = amazonOurPrice; clonedYariMediaRecord.amazonAvailability = amazonAvailability; clonedYariMediaRecord.amazonMedia = amazonMedia; clonedYariMediaRecord.amazonReleaseDate = amazonReleaseDate; clonedYariMediaRecord.amazonAsin = amazonAsin; clonedYariMediaRecord.abstractEnabled = abstractEnabled; clonedYariMediaRecord.contentsEnabled = contentsEnabled; clonedYariMediaRecord.notesEnabled = notesEnabled; clonedYariMediaRecord.authors = authors; clonedYariMediaRecord.secondaryAuthors = secondaryAuthors; clonedYariMediaRecord.publisher = publisher; if (mediaType != null) { clonedYariMediaRecord.mediaType = mediaType; } if (keywords != null) { clonedYariMediaRecord.keywords = keywords.Clone(); } return(clonedYariMediaRecord); }
/// <summary> /// Ensures that the index and object array are sized correctly /// for additions. This method should be protected by locks /// issued by calling methods. /// </summary> private void ensureArrays() { if (count > yariMediaRecordArray.GetUpperBound(0) + 1) { YariMediaRecord[] tempYariMediaRecordArray = new YariMediaRecord[count * 2]; DateTime[] tempTimeStamps = new DateTime[count * 2]; DateTime[] tempAbsoluteExpirations = new DateTime[count * 2]; TimeSpan[] tempSlidingExpirations = new TimeSpan[count * 2]; Array.Copy(yariMediaRecordArray, tempYariMediaRecordArray, count - 1); Array.Copy(timeStamps, tempTimeStamps, count - 1); Array.Copy(absoluteExpirations, tempAbsoluteExpirations, count - 1); Array.Copy(slidingExpirations, tempSlidingExpirations, count - 1); yariMediaRecordArray = tempYariMediaRecordArray; timeStamps = tempTimeStamps; absoluteExpirations = tempAbsoluteExpirations; slidingExpirations = tempSlidingExpirations; } }
public int Add(YariMediaRecord value) { OnCollectionChanged(EventArgs.Empty); lock (this) { count++; // Resize the array if the count is greater than the length // of the array. if (count > YariMediaRecordArray.GetUpperBound(0) + 1) { YariMediaRecord[] tempYariMediaRecordArray = new YariMediaRecord[count * 2]; Array.Copy(YariMediaRecordArray, tempYariMediaRecordArray, count - 1); YariMediaRecordArray = tempYariMediaRecordArray; } YariMediaRecordArray[count - 1] = value; } return(count - 1); }
public void CheckedAdd(YariMediaRecord yariMediaRecord, TimeSpan slidingExpiration) { lock (this) { int i = binarySearch(yariMediaRecord.iD); if (i != -1) { yariMediaRecordArray[i] = yariMediaRecord; absoluteExpirations[i] = DateTime.Now.Add(slidingExpiration); // Expires slidingExpirations[i] = slidingExpiration; // Never slides return; } count++; ensureArrays(); yariMediaRecordArray[count - 1] = yariMediaRecord; timeStamps[count - 1] = DateTime.Now; absoluteExpirations[count - 1] = DateTime.Now.Add(slidingExpiration); // Expires slidingExpirations[count - 1] = slidingExpiration; // Never slides quickSort(0, count - 1); } }
public void Insert(int index, YariMediaRecord value) { OnCollectionChanged(EventArgs.Empty); lock (this) { count++; // Resize the array if the count is greater than the length // of the array. if (count > YariMediaRecordArray.GetUpperBound(0) + 1) { YariMediaRecord[] tempYariMediaRecordArray = new YariMediaRecord[count * 2]; Array.Copy(YariMediaRecordArray, tempYariMediaRecordArray, count - 1); YariMediaRecordArray = tempYariMediaRecordArray; } for (int x = index + 1; x == count - 2; x++) { YariMediaRecordArray[x] = YariMediaRecordArray[x - 1]; } YariMediaRecordArray[index] = value; } }
public YariImporterEventArgs(string message, int importIndex) { this.message = message; this.importIndex = importIndex; this.sourceRecord = null; }
public void ImportEndNoteXml(XmlDataDocument xmlDocument) { GreyFoxContactManager authorsManager = new GreyFoxContactManager("kitYari_Authors"); GreyFoxContactManager publishersManager = new GreyFoxContactManager("kitYari_Publishers"); YariMediaRecordManager mediaRecordManager = new YariMediaRecordManager(); YariMediaKeywordManager mediaKeywordManager = new YariMediaKeywordManager(); XmlNodeList bookNodes = xmlDocument.SelectNodes("//XML/RECORDS/RECORD"); XmlNode bookNode; externalRecordCount = bookNodes.Count; OnStart(new YariImporterEventArgs("Started Import.", 0)); for (int bookIndex = 0; bookIndex < bookNodes.Count; bookIndex++) { bookNode = bookNodes[bookIndex]; YariMediaRecord r = new YariMediaRecord(); foreach (XmlNode childNode in bookNode.ChildNodes) { // check for null records which signify existing titles of // the same name. if (r == null) { break; } switch (childNode.Name) { case "ISBN": if (childNode.InnerText.Length > 15) { r.Isbn = childNode.InnerText.Substring(0, 15); } else { r.Isbn = childNode.InnerText; } break; case "REFNUM": r.EndNoteReferenceID = int.Parse(childNode.InnerText); // if(mediaRecordManager.EndNoteReferenceIDExists(r.EndNoteReferenceID)) // { // OnRecordSkipped(new YariImporterEventArgs( // "Record Skipped - '" + r.EndNoteReferenceID + "'; EndNote Reference ID already exists.", bookIndex)); // r = null; // } break; case "YEAR": try { r.PublishYear = int.Parse(childNode.InnerText); } catch { r.PublishYear = 0; } break; case "TITLE": r.Title = childNode.InnerText; if (mediaRecordManager.TitleExists(r.title)) { OnRecordSkipped(new YariImporterEventArgs( "Record Skipped - '" + r.title + "'; title already exists.", bookIndex)); r = null; } break; case "PUBLISHER": r.Publisher = childNode.InnerText; break; case "PAGES": try { r.Pages = int.Parse(childNode.InnerText); } catch {} break; case "EDITION": r.Edition = childNode.InnerText; break; case "LABEL": r.Label = childNode.InnerText; break; case "KEYWORDS": r.keywords = new YariMediaKeywordCollection(); foreach (XmlNode keywordNode in childNode.ChildNodes) { string[] keywords = keywordNode.InnerText.Split(new char[] { ',', ';' }); foreach (string keyword in keywords) { r.Keywords.Add(mediaKeywordManager.FindByKeyword(keyword.Trim().ToLower(), true)); } } break; case "ABSTRACT": r.AbstractText = childNode.InnerText; break; case "NOTES": r.ContentsText = childNode.InnerText; break; case "AUTHORS": foreach (XmlNode authorNode in childNode.ChildNodes) { // // Split author fields in case the firstName is joined with // an ampersand or 'and' text. // string authorText = authorNode.InnerText.Replace(" & ", " and "); int andIndex = authorText.ToLower().IndexOf(" and "); if (andIndex != -1) { string authorA = authorText.Substring(0, andIndex).Trim(); string authorB = authorText.Substring(andIndex + 5, authorText.Length - (authorA.Length + 6)).Trim(); } r.Authors += authorText + " "; } break; } } // save the record if it does not exist. if (r != null) { r.AmazonRefreshDate = DateTime.MinValue; r.AmazonFillDate = DateTime.MinValue; r.AmazonReleaseDate = DateTime.MinValue; r.Save(); OnRecordImported( new YariImporterEventArgs("Imported Record - '" + r.Title + "'.", bookIndex, r)); } } OnFinish(new YariImporterEventArgs("Finished import.", bookNodes.Count)); }
public bool Contains(YariMediaRecord value) { return(IndexOf(value) != -1); }
/// <summary> /// Compares the object's ID to another object's ID. /// </summary> public int CompareTo(YariMediaRecord yariMediaRecord) { return(this.iD - yariMediaRecord.iD); }
/// <summary> /// Compares the object's ID to another object's ID. /// </summary> int IComparable.CompareTo(object obj) { YariMediaRecord yariMediaRecord = (YariMediaRecord)obj; return(this.iD - yariMediaRecord.iD); }
/// <summary> /// Deep copies the current YariMediaRecord to another instance of YariMediaRecord. /// This method does not provide isolated copies; use overriden method for this feature. /// </summary> /// <param name="YariMediaRecord">The YariMediaRecord to copy to.</param> public void CopyTo(YariMediaRecord yariMediaRecord) { CopyTo(yariMediaRecord, false); }