Пример #1
0
 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);
     }
 }
Пример #2
0
 public int IndexOf(YariMediaRecord value)
 {
     lock (this)
     {
         for (int x = 0; x < count; x++)
         {
             if (YariMediaRecordArray[x].Equals(value))
             {
                 return(x);
             }
         }
         return(-1);
     }
 }
Пример #3
0
 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;
     }
 }
Пример #4
0
 /// <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;
     }
 }
Пример #5
0
        /// <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);
        }
Пример #6
0
 /// <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;
     }
 }
Пример #7
0
 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);
 }
Пример #8
0
 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);
     }
 }
Пример #9
0
 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;
     }
 }
Пример #10
0
 public YariImporterEventArgs(string message, int importIndex)
 {
     this.message      = message;
     this.importIndex  = importIndex;
     this.sourceRecord = null;
 }
Пример #11
0
        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));
        }
Пример #12
0
 public bool Contains(YariMediaRecord value)
 {
     return(IndexOf(value) != -1);
 }
Пример #13
0
 /// <summary>
 /// Compares the object's ID to another object's ID.
 /// </summary>
 public int CompareTo(YariMediaRecord yariMediaRecord)
 {
     return(this.iD - yariMediaRecord.iD);
 }
Пример #14
0
        /// <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);
        }
Пример #15
0
 /// <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);
 }