Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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() + ")");
        }
Ejemplo n.º 5
0
        /// <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>());
        }
Ejemplo n.º 6
0
 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));
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        /// <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);
        }
Ejemplo n.º 10
0
        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;
            }
        }
Ejemplo n.º 11
0
 private void checkBox_RecStatus_Viewed_Unchecked(object sender, RoutedEventArgs e)
 {
     if (recodeStatus.HasFlag(RecLogItem.RecodeStatuses.視聴済み))
     {
         isSearchOptionChanged = true;
         _recodeStatus &= ~RecLogItem.RecodeStatuses.視聴済み;
     }
 }
Ejemplo n.º 12
0
 private void checkBox_RecStatus_Unkown_Checked(object sender, RoutedEventArgs e)
 {
     if (!recodeStatus.HasFlag(RecLogItem.RecodeStatuses.不明))
     {
         isSearchOptionChanged = true;
         _recodeStatus |= RecLogItem.RecodeStatuses.不明;
     }
 }
Ejemplo n.º 13
0
 private void checkBox_RecStatus_Reserved_Null_Unchecked(object sender, RoutedEventArgs e)
 {
     if (recodeStatus.HasFlag(RecLogItem.RecodeStatuses.無効登録))
     {
         isSearchOptionChanged = true;
         _recodeStatus &= ~RecLogItem.RecodeStatuses.無効登録;
     }
 }
Ejemplo n.º 14
0
 private void checkBox_RecStatus_Recoded_Abnormal_Unchecked(object sender, RoutedEventArgs e)
 {
     if (recodeStatus.HasFlag(RecLogItem.RecodeStatuses.録画異常))
     {
         isSearchOptionChanged = true;
         _recodeStatus &= ~RecLogItem.RecodeStatuses.録画異常;
     }
 }