void update_RecodeStatus(SearchLogItem logItem0, bool isUpdateDB0, SqlCommand cmd0) { List <EpgEventInfo> epgList1 = new List <EpgEventInfo>(); foreach (var item in logItem0.resultItems) { epgList1.Add(item.epgEventInfoR); } List <RecLogItem> recLogItems1 = _db_RecLog.exists(epgList1, cmd0); List <SearchLogResultItem> results_Updated1 = new List <SearchLogResultItem>(); foreach (var item in logItem0.resultItems) { RecLogItem.RecodeStatuses recodeStatus1 = RecLogItem.RecodeStatuses.NONE; RecLogItem recLogItem1 = recLogItems1.Find(x => x.epgEventInfoR.Equals(item.epgEventInfoR)); if (recLogItem1 != null) { recodeStatus1 = recLogItem1.recodeStatus; } if (item.recodeStatus != recodeStatus1) { item.recodeStatus = recodeStatus1; results_Updated1.Add(item); } } if (isUpdateDB0) { _db_SearchLogResult.update(results_Updated1, cmd0); } }
/// <summary> /// 更新されなかった予約アイテムを取得 /// </summary> /// <param name="lastUpdate0">予約リスト更新時刻</param> /// <returns></returns> public List <RecLogItem> select_Reserved_NotUpdated(DateTime lastUpdate0) { RecLogItem.RecodeStatuses recodeStatus1 = RecLogItem.RecodeStatuses.予約済み | RecLogItem.RecodeStatuses.無効登録; string where1 = getRecodeStatusQuery(recodeStatus1) + " AND " + TABLE_NAME_ABBR + "." + COLUMN_lastUpdate + "<" + q(lastUpdate0.ToString(DB_EpgEventInfo.timeStampStrFormat)); List <RecLogItem> recLogItemList1 = select(where1); return(recLogItemList1); }
public List <RecLogItem> search_Like(SqlCommand cmd0, string searchWord0, RecLogItem.RecodeStatuses recodeStatuse0, searchColumns searchColumn0 = searchColumns.title, int count0 = 50, EpgContentInfo epgContentInfo0 = null) { List <string> searchWordList1 = getSearchWordList(searchWord0); StringBuilder sb1 = new StringBuilder(); foreach (var item1 in searchWordList1) { string likeWord1 = " LIKE " + createTextValue("%" + item1 + "%"); List <string> searchWords1 = new List <string>(); if (searchColumn0.HasFlag(searchColumns.title)) { searchWords1.Add(DB_EpgEventInfo.TABLE_NAME_ABBR + "." + DB_EpgEventInfo.COLUMN_ShortInfo_event_name + likeWord1); } if (searchColumn0.HasFlag(searchColumns.content)) { searchWords1.Add(DB_EpgEventInfo.TABLE_NAME_ABBR + "." + DB_EpgEventInfo.COLUMN_ShortInfo_text_char + likeWord1); searchWords1.Add(DB_EpgEventInfo.TABLE_NAME_ABBR + "." + DB_EpgEventInfo.COLUMN_ExtInfo_text_char + likeWord1); } if (searchColumn0.HasFlag(searchColumns.comment)) { searchWords1.Add(TABLE_NAME_ABBR + "." + COLUMN_comment + likeWord1); } if (searchColumn0.HasFlag(searchColumns.recFilePath)) { searchWords1.Add(TABLE_NAME_ABBR + "." + COLUMN_RecFilePath + likeWord1); } StringBuilder sb2 = new StringBuilder(); foreach (var item2 in searchWords1) { if (0 < sb2.Length) { sb2.Append(" OR "); } sb2.Append(item2); } // if (0 < sb1.Length) { sb1.Append(" AND "); } sb1.Append(sb2.ToString()); } return(seach(sb1.ToString(), recodeStatuse0, count0, cmd0, epgContentInfo0)); }
string getRecodeStatusQuery(RecLogItem.RecodeStatuses recodeStatuse0, string tableNameAbbr0 = TABLE_NAME_ABBR) { if (recodeStatuse0 == RecLogItem.RecodeStatuses.ALL) { return(null); } StringBuilder sb1 = new StringBuilder(); string tableNameAbbr1 = null; if (!string.IsNullOrEmpty(tableNameAbbr0)) { tableNameAbbr1 = tableNameAbbr0 + "."; } if (127 < (int)RecLogItem.RecodeStatuses.ALL) { throw new NotImplementedException("RecLogItem.RecodeStatuses Item"); } foreach (var item1 in new RecLogItem.RecodeStatuses[] { RecLogItem.RecodeStatuses.予約済み, RecLogItem.RecodeStatuses.視聴済み, RecLogItem.RecodeStatuses.録画完了, RecLogItem.RecodeStatuses.録画異常, RecLogItem.RecodeStatuses.無効登録, RecLogItem.RecodeStatuses.放送中止, RecLogItem.RecodeStatuses.明 }) { if (recodeStatuse0.HasFlag(item1)) { if (0 < sb1.Length) { sb1.Append(" OR "); } sb1.Append(tableNameAbbr1 + COLUMN_recodeStatus + "=" + (int)item1); } } return("(" + sb1.ToString() + ")"); }
/// <summary> /// /// </summary> /// <param name="searchWord0"></param> /// <param name="searchColumn0">複数選択可</param> /// <param name="count0"></param> /// <returns>新しいもの順</returns> public List <RecLogItem> search_Fulltext(string searchWord0, RecLogItem.RecodeStatuses recodeStatuse0, searchColumns searchColumn0 = searchColumns.title, int count0 = 50, EpgContentInfo epgContentInfo0 = null, bool isFreetext0 = false) { try { using (SqlConnection sqlConn1 = new SqlConnection(sqlConnStr)) { sqlConn1.Open(); using (SqlCommand cmd1 = sqlConn1.CreateCommand()) { return(search_Fulltext(cmd1, searchWord0, recodeStatuse0, searchColumn0, count0, epgContentInfo0, isFreetext0)); } } } catch (Exception ex0) { System.Diagnostics.Trace.WriteLine(ex0); } return(new List <RecLogItem>()); }
public RecLogItem exists(RecLogItem.RecodeStatuses recodeStatuse0, ushort original_network_id0, ushort transport_stream_id0, ushort service_id0, ushort event_id0, DateTime startTime0) { return(exists(getRecodeStatusQuery(recodeStatuse0), original_network_id0, transport_stream_id0, service_id0, event_id0, startTime0)); }
List <RecLogItem> seach(string searchWordQuery0, RecLogItem.RecodeStatuses recodeStatuse0, int count0, SqlCommand cmd0, EpgContentInfo epgContentInfo0) { List <RecLogItem> itemList1 = new List <RecLogItem>(); if (recodeStatuse0 == RecLogItem.RecodeStatuses.NONE) { return(itemList1); } // StringBuilder query1 = new StringBuilder(); query1.Append("SELECT"); if (0 < count0) { query1.Append(" TOP " + count0); } query1.Append(" * FROM " + tableName + " " + TABLE_NAME_ABBR + " INNER JOIN " + DB_EpgEventInfo.TABLE_NAME + " " + DB_EpgEventInfo.TABLE_NAME_ABBR + " ON (" + TABLE_NAME_ABBR + "." + COLUMN_epgEventInfoID + "=" + DB_EpgEventInfo.TABLE_NAME_ABBR + "." + DB_EpgEventInfo.COLUMN_ID + ")"); StringBuilder where1 = new StringBuilder(); where1.Append(getRecodeStatusQuery(recodeStatuse0)); if (!string.IsNullOrEmpty(searchWordQuery0)) { if (0 < where1.Length) { where1.Append(" AND "); } where1.Append("(" + searchWordQuery0 + ")"); } if (0 < where1.Length) { query1.Append(" WHERE " + where1.ToString()); } query1.Append(" ORDER BY " + DB_EpgEventInfo.TABLE_NAME_ABBR + "." + DB_EpgEventInfo.COLUMN_start_time + " DESC"); cmd0.CommandText = query1.ToString(); using (SqlDataReader reader1 = cmd0.ExecuteReader()) { while (reader1.Read()) { int i1 = 0; RecLogItem recLogItem1 = getItem(reader1, ref i1); recLogItem1.epgEventInfoR = db_EpgEventInfo.getItem(reader1, ref i1); if (epgContentInfo0 != null) { bool isMatch1 = false; foreach (EpgContentData ecd1 in epgContentInfo0.nibbleList) { if (recLogItem1.epgEventInfoR.ContentInfo.nibbleList.Count == 0) // ジャンル情報が無い { isMatch1 = true; } else { isMatch1 = recLogItem1.epgEventInfoR.ContentInfo.nibbleList.Exists( x1 => { return(x1.content_nibble_level_1 == ecd1.content_nibble_level_1); }); } if (isMatch1) { break; } } if (!isMatch1) { recLogItem1 = null; } } if (recLogItem1 != null) { itemList1.Add(recLogItem1); } } } //if (itemList1.Count == 0) { // Console.WriteLine(query1); //} return(itemList1); }
public List <RecLogItem> search_Fulltext(SqlCommand cmd0, string searchWord0, RecLogItem.RecodeStatuses recodeStatuse0, searchColumns searchColumn0 = searchColumns.title, int count0 = 50, EpgContentInfo epgContentInfo0 = null, bool isFreetext0 = false) { List <string> searchWordList1; if (isFreetext0) { searchWordList1 = new List <string>() { searchWord0 }; } else { searchWordList1 = getSearchWordList(searchWord0); } string searchWordQuery_Fulltext1 = getSearchWordQuery_Fulltext(searchColumn0, searchWordList1, isFreetext0); return(seach(searchWordQuery_Fulltext1, recodeStatuse0, count0, cmd0, epgContentInfo0)); }
/// <summary> /// フルテキストのFREETEXTで得た結果をRegexで絞り込む /// </summary> /// <param name="searchWord0"></param> /// <param name="recodeStatuse0"></param> /// <param name="searchColumn0"></param> /// <param name="count0"></param> /// <returns></returns> public List <RecLogItem> search_Fulltext_Freetext_Regex(string searchWord0, RecLogItem.RecodeStatuses recodeStatuse0, searchColumns searchColumn0 = searchColumns.title, int count0 = 50, EpgContentInfo epgContentInfo0 = null) { List <RecLogItem> recLogItemList1 = new List <RecLogItem>(); List <string> searchWordList1 = new List <string>() { searchWord0 }; string searchWordQuery_Fulltext1 = getSearchWordQuery_Fulltext(searchColumn0, searchWordList1, true); List <RecLogItem> recLogItemList2 = new List <RecLogItem>(); try { using (SqlConnection sqlConn1 = new SqlConnection(sqlConnStr)) { sqlConn1.Open(); using (SqlCommand cmd1 = sqlConn1.CreateCommand()) { recLogItemList2 = seach(searchWordQuery_Fulltext1, recodeStatuse0, count0, cmd1, epgContentInfo0); } } } catch (Exception ex0) { System.Diagnostics.Trace.WriteLine(ex0); } List <string> searchWordList2 = getSearchWordList(searchWord0); List <Regex> searchRegexList2 = new List <Regex>(); foreach (var item in searchWordList2) { searchRegexList2.Add(new Regex(item)); } foreach (var recLogItem1 in recLogItemList2) { List <string> textList1 = new List <string>(); if (searchColumn0.HasFlag(searchColumns.title)) { textList1.Add(recLogItem1.tvProgramTitle); } if (searchColumn0.HasFlag(searchColumns.content)) { textList1.Add(recLogItem1.tvProgramSummary); } if (searchColumn0.HasFlag(searchColumns.comment)) { textList1.Add(recLogItem1.comment); } if (searchColumn0.HasFlag(searchColumns.recFilePath)) { textList1.Add(recLogItem1.recFilePath); } foreach (var text1 in textList1) { int matchCnt1 = 0; foreach (var rgx1 in searchRegexList2) { if (rgx1.IsMatch(text1)) { matchCnt1++; } } if (matchCnt1 == searchRegexList2.Count) { recLogItemList1.Add(recLogItem1); break; } } } return(recLogItemList1); }
void setStatusProperty(RecLogItem.RecodeStatuses recodeStatus0) { /* status */ switch (recodeStatus0) { case RecLogItem.RecodeStatuses.NONE: if (epgEventInfoR != null && epgEventInfoR.IsOnAir() == true) { status = "放"; } else { status = null; } break; case RecLogItem.RecodeStatuses.予約済み: status = "予"; break; case RecLogItem.RecodeStatuses.録画完了: status = "録"; break; case RecLogItem.RecodeStatuses.視聴済み: status = "視"; break; case RecLogItem.RecodeStatuses.録画異常: status = "異"; break; case RecLogItem.RecodeStatuses.無効登録: status = "無"; break; case RecLogItem.RecodeStatuses.明: status = "?"; break; default: throw new NotSupportedException(); } /* statusColor */ switch (recodeStatus) { case RecLogItem.RecodeStatuses.録画完了: case RecLogItem.RecodeStatuses.視聴済み: case RecLogItem.RecodeStatuses.録画異常: statusColor = Brushes.Firebrick; break; case RecLogItem.RecodeStatuses.無効登録: case RecLogItem.RecodeStatuses.明: statusColor = Brushes.Black; break; default: statusColor = Brushes.Navy; break; } /* background */ switch (recodeStatus) { case RecLogItem.RecodeStatuses.予約済み: background = background_Reserved; break; case RecLogItem.RecodeStatuses.録画完了: case RecLogItem.RecodeStatuses.視聴済み: case RecLogItem.RecodeStatuses.録画異常: background = background_Recorded; break; case RecLogItem.RecodeStatuses.無効登録: case RecLogItem.RecodeStatuses.明: background = background_Unknown; break; default: background = Brushes.White; break; } }
private void checkBox_RecStatus_Viewed_Unchecked(object sender, RoutedEventArgs e) { if (recodeStatus.HasFlag(RecLogItem.RecodeStatuses.視聴済み)) { isSearchOptionChanged = true; _recodeStatus &= ~RecLogItem.RecodeStatuses.視聴済み; } }
private void checkBox_RecStatus_Unkown_Checked(object sender, RoutedEventArgs e) { if (!recodeStatus.HasFlag(RecLogItem.RecodeStatuses.不明)) { isSearchOptionChanged = true; _recodeStatus |= RecLogItem.RecodeStatuses.不明; } }
private void checkBox_RecStatus_Reserved_Null_Unchecked(object sender, RoutedEventArgs e) { if (recodeStatus.HasFlag(RecLogItem.RecodeStatuses.無効登録)) { isSearchOptionChanged = true; _recodeStatus &= ~RecLogItem.RecodeStatuses.無効登録; } }
private void checkBox_RecStatus_Recoded_Abnormal_Unchecked(object sender, RoutedEventArgs e) { if (recodeStatus.HasFlag(RecLogItem.RecodeStatuses.録画異常)) { isSearchOptionChanged = true; _recodeStatus &= ~RecLogItem.RecodeStatuses.録画異常; } }