コード例 #1
0
        /// <summary>
        /// Duplicates YariMediaKeyword object into a database; may or may not be the same database
        /// as the parent object.
        /// </summary>
        /// <returns> A new YariMediaKeyword object reflecting the replicated YariMediaKeyword object.</returns>
        public YariMediaKeyword Duplicate()
        {
            YariMediaKeyword clonedYariMediaKeyword = this.Clone();

            // Insert must be called after children are replicated!
            clonedYariMediaKeyword.iD       = YariMediaKeywordManager._insert(clonedYariMediaKeyword);
            clonedYariMediaKeyword.isSynced = true;
            return(clonedYariMediaKeyword);
        }
コード例 #2
0
        /// <summary>
        /// Ensures that the object's fields and children are
        /// pre-loaded before any updates or reads.
        /// </summary>
        public void EnsurePreLoad()
        {
            if (!isPlaceHolder)
            {
                return;
            }

            YariMediaKeywordManager._fill(this);
            isPlaceHolder = false;
        }
コード例 #3
0
        //--- Begin Custom Code ---

        public void SetKeywords(string keywordString)
        {
            if (keywords == null)
            {
                keywords = new YariMediaKeywordCollection();
            }
            else
            {
                keywords.Clear();
            }

            string[] keywordArray = keywordString.Split(';');

            YariMediaKeywordManager m = new YariMediaKeywordManager();

            for (int x = 0; x < keywordArray.Length; x++)
            {
                keywords.Add(m.FindByKeyword(keywordArray[x], true));
            }
        }
コード例 #4
0
        //--- Begin Custom Code ---

        public YariMediaKeyword FindByKeyword(string keyword, bool placeHolderOnly)
        {
            StringBuilder query = new StringBuilder();

            query.Append("SELECT ");
            if (placeHolderOnly)
            {
                query.Append(InnerJoinFields[0]);
            }
            else
            {
                query.Append(string.Join(",", InnerJoinFields));
            }
            query.Append(" FROM kitYari_MediaKeywords");
            query.Append(" WHERE Keyword=@Keyword;");

            Database  database  = DatabaseFactory.CreateDatabase();
            DbCommand dbCommand = database.GetSqlStringCommand(query.ToString());

            addParameter(database, dbCommand, "Keyword", DbType.String, keyword);
            IDataReader      r = database.ExecuteReader(dbCommand);
            YariMediaKeyword k;

            if (r.Read())
            {
                if (placeHolderOnly)
                {
                    k = YariMediaKeyword.NewPlaceHolder(r.GetInt32(0));
                }
                else
                {
                    k = YariMediaKeywordManager.ParseFromReader(r, 0, 1);
                }
            }
            else
            {
                k         = new YariMediaKeyword();
                k.Keyword = keyword;
            }
            return(k);
        }
コード例 #5
0
        /// <summary>
        /// Saves the YariMediaKeyword object state to the database.
        /// </summary>
        public int Save()
        {
            if (isSynced)
            {
                return(iD);
            }

            if (iD == -1)
            {
                throw (new Exception("Invalid record; cannot be saved."));
            }
            if (iD == 0)
            {
                iD = YariMediaKeywordManager._insert(this);
            }
            else
            {
                YariMediaKeywordManager._update(this);
            }
            isSynced = iD != -1;
            return(iD);
        }
コード例 #6
0
 /// <summary>
 /// Overwrites and existing YariMediaKeyword object in the database.
 /// </summary>
 public void Overwrite(int id)
 {
     iD = id;
     YariMediaKeywordManager._update(this);
     isSynced = true;
 }
コード例 #7
0
 public void Delete()
 {
     YariMediaKeywordManager._delete(this.iD);
     this.iD  = 0;
     isSynced = false;
 }
コード例 #8
0
 public YariMediaKeyword(int id)
 {
     this.iD  = id;
     isSynced = YariMediaKeywordManager._fill(this);
 }
コード例 #9
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));
        }