/// <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); }
/// <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; }
//--- 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)); } }
//--- 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); }
/// <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); }
/// <summary> /// Overwrites and existing YariMediaKeyword object in the database. /// </summary> public void Overwrite(int id) { iD = id; YariMediaKeywordManager._update(this); isSynced = true; }
public void Delete() { YariMediaKeywordManager._delete(this.iD); this.iD = 0; isSynced = false; }
public YariMediaKeyword(int id) { this.iD = id; isSynced = YariMediaKeywordManager._fill(this); }
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)); }