163 files changed, 13 insertions, 62934 deletions
diff --git a/tvapi/libtv/tvdb/CTvDimension.cpp b/tvapi/libtv/tvdb/CTvDimension.cpp deleted file mode 100644 index 0432a83..0000000 --- a/tvapi/libtv/tvdb/CTvDimension.cpp +++ b/dev/null @@ -1,639 +0,0 @@ -#define LOG_TAG "CTvDimension" - -#include "CTvDimension.h" -#include "CTvProgram.h" -#include "CTvTime.h" -#include "CTvEvent.h" -#include "../tvconfig/tvconfig.h" - -/** - *TV ATSC rating dimension - */ - -void CTvDimension::createFromCursor(CTvDatabase::Cursor &c) -{ - int col; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("index_j"); - this->indexj = c.getInt(col); - - col = c.getColumnIndex("rating_region"); - this->ratingRegion = c.getInt(col); - - col = c.getColumnIndex("graduated_scale"); - this->graduatedScale = c.getInt(col); - - col = c.getColumnIndex("name"); - this->name = c.getString(col); - - col = c.getColumnIndex("rating_region_name"); - this->ratingRegionName = c.getString(col); - - col = c.getColumnIndex("values_defined"); - this->valuesDefined = c.getInt(col); - this->lockValues = new int[valuesDefined]; - this->abbrevValues = new String8[valuesDefined]; - this->textValues = new String8[valuesDefined]; - char temp[256]; - for (int i = 0; i < valuesDefined; i++) { - sprintf(temp, "abbrev%d", i); - col = c.getColumnIndex(temp); - this->abbrevValues[i] = c.getString(col); - sprintf(temp, "text%d", i); - col = c.getColumnIndex(temp); - this->textValues[i] = c.getString(col); - sprintf(temp, "locked%d", i); - col = c.getColumnIndex(temp); - this->lockValues[i] = c.getInt(col); - } - - if (ratingRegion == REGION_US && !strcmp(name, "All")) { - isPGAll = true; - } else { - isPGAll = false; - } -} - -CTvDimension::CTvDimension(CTvDatabase::Cursor &c) -{ - createFromCursor(c); -} -CTvDimension::CTvDimension() -{ - -} -CTvDimension::~CTvDimension() -{ - if (lockValues != NULL) { - delete []lockValues; - } - if (textValues != NULL) { - delete []textValues; - } - if (abbrevValues != NULL) { - delete []abbrevValues; - } -} - -/* 'All' is a very special case, it links to dimension0 & dimension5 */ -int CTvDimension::getUSPGAllLockStatus(String8 abbrev) -{ - int len = 0; - CTvDimension dm5; - int j = 0; - selectByIndex(dm5, CTvDimension::REGION_US, 5); - len = dm5.getDefinedValue(); - String8 dm5Abbrev[len - 1]; - dm5.getAbbrev(dm5Abbrev); - for (j = 0; j < len - 1; j++) { - if (dm5Abbrev[j] == abbrev) { - return dm5.getLockStatus(j + 1); - } - } - CTvDimension dm0; - selectByIndex(dm0, CTvDimension::REGION_US, 0); - len = dm0.getDefinedValue(); - String8 dm0Abbrev[len - 1]; - dm0.getAbbrev(dm0Abbrev); - for (j = 0; j < len - 1; j++) { - if (dm0Abbrev[j] == abbrev) { - return dm0.getLockStatus(j + 1); - } - } - return -1; -} - -void CTvDimension::setUSPGAllLockStatus(String8 abbrev, int lock) -{ - - int len = 0; - int j = 0; - - CTvDimension dm5; - - selectByIndex(dm5, REGION_US, 5); - len = dm5.getDefinedValue(); - String8 dm5Abbrev[len - 1]; - dm5.getAbbrev(dm5Abbrev); - - for (j = 0; j < len - 1; j++) { - if (abbrev == dm5Abbrev[j]) { - dm5.setLockStatus(j + 1, lock); - return; - } - } - - CTvDimension dm0; - selectByIndex(dm0, REGION_US, 0); - len = dm0.getDefinedValue(); - String8 dm0Abbrev[len - 1]; - dm0.getAbbrev(dm0Abbrev); - - for (j = 0; j < len - 1; j++) { - if (abbrev == dm0Abbrev[j]) { - dm0.setLockStatus(j + 1, lock); - return; - } - } - return; -} - - - -/** - *根据记录ID取得对应的TVDimension - *@param context 当前Context - *@param id 记录ID - *@return 返回ID对应的TVDimension对象 - */ -void CTvDimension::selectByID(CTvDimension &dm, int id) -{ - String8 cmd = String8("select * from dimension_table where evt_table.db_id = ") + String8::format("%d", id); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); - -} - -/** - *根据记录ID取得对应的TVDimension - *@param context 当前Context - *@param ratingRegionID rating region ID - *@return 返回ID对应的TVDimension对象 - */ -void CTvDimension::selectByRatingRegion(CTvDimension &dm, int ratingRegionID) -{ - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); -} - -/** - *根据记录ID取得对应的TVDimension - *@param context 当前Context - *@param ratingRegionID rating region ID - *@param index RRT中对应的index_j - *@return 返回对应的TVDimension对象 - */ -int CTvDimension::selectByIndex(CTvDimension &dm, int ratingRegionID, int index) -{ - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - cmd += String8(" and index_j=") + String8::format("%d", index); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return -1; - } - c.close(); - - return 0; -} - -/** - *根据ID和名字取得对应的TVDimension - *@param context 当前Context - *@param ratingRegionID rating region ID - *@param dimensionName dimension的名称 - *@return 返回对应的TVDimension对象 - */ -void CTvDimension::selectByName(CTvDimension &dm, int ratingRegionID, String8 dimensionName) -{ - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - cmd += String8(" and name='") + dimensionName + String8("'"); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - LOGD("%s, %d success", "TV", __LINE__); - dm.createFromCursor(c); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); - - return; -} - - -/** - *判断指定rating_value是否需要block - *@param context 当前Context - *@param definedRating content_advisory_descr中定义的级别信息 - *@return 是否block - */ -bool CTvDimension::isBlocked(CTvDimension &dm, VChipRating *definedRating) -{ - int ret = 0; - ret = selectByIndex(dm, definedRating->getRegion(), definedRating->getDimension()); - if (ret != -1) { - LOGD("%s, %d, index=%d", "TV", __LINE__, definedRating->getValue()); - return (dm.getLockStatus(definedRating->getValue()) == 1); - } - - return false; -} - -/** - *取得事件的ID - *@return 返回事件的ID - */ -int CTvDimension::getID() -{ - return id; -} - -/** - *取得 rating region ID - *@return 返回 rating region ID - */ -int CTvDimension::getRatingRegion() -{ - return ratingRegion; -} - -int CTvDimension::getDefinedValue() -{ - return valuesDefined; -} -/** - *取得 rating region 名称 - *@return 返回 rating region 名称 - */ -String8 CTvDimension::getRatingRegionName() -{ - return ratingRegionName; -} - -/** - *取得Dimension名称 - *@return 返回Dimension名称 - */ -String8 CTvDimension::getName() -{ - return name; -} - -/** - *取得graduated scale标志 - *@return 返回graduated scale标志 - */ -int CTvDimension::getGraduatedScale() -{ - return graduatedScale; -} - -/** - *取得该dimension的所有values的加锁状态 - *@return 返回所有values的加锁状态,0-未加锁,-1-无效值,即不能对该项进行设置,其他-已加锁 - */ -#if 0 -int *CTvDimension::getLockStatus() -{ - int len = getDefinedValue(); - if (len > 1) { - if (isPGAll) { - return getUSPGAllLockStatus(abbrevValues); - } else { - int *lock = new int[len - 1]; - //System.arraycopy(lockValues, 1, l, 0, l.length); - for (int i = 0; i < len - 1; i++) - lock[i] = lockValues[1 + i]; - return lock; - } - } else { - return NULL; - } -} -#endif -/** - *取得该dimension的指定value的加锁状态 - *@param valueIndex value索引 - *@return 返回指定value的加锁状态,0-未加锁,-1-无效值,即不能对该项进行设置,其他-已加锁 - */ -int CTvDimension::getLockStatus(int valueIndex) -{ - int len = getDefinedValue(); - if (valueIndex >= len) { - return -1; - } else { - return lockValues[valueIndex]; - } -} - -/** - *取得该dimension的指定几个values的加锁状态 - *@param abbrevs 需要获取的value的abbrev集合 - *@return 返回指定values的加锁状态,0-未加锁,-1-无效值,即不能对该项进行设置,其他-已加锁 - */ -void CTvDimension::getLockStatus(String8 abbrevs[], int lock[], int *array_len) -{ - int i = 0; - int len = getDefinedValue(); - - if (abbrevs != NULL && lock != NULL) { - for (int i = 0; i < *array_len; i++) { - *(lock + i) = -1; - for (int j = 0; j < len; j++) { - if (abbrevs[i] == abbrevValues[j]) { - *(lock + i) = lockValues[j]; - break; - } - } - } - } - *array_len = len; -} - -/** - *取得该dimension的所有values的abbrev text - *@return 返回所有values的abbrev text - */ -int CTvDimension::getAbbrev(String8 abb[]) -{ - /* the first rating_value must be not visible to user */ - int len = getDefinedValue(); - if (len > 1) { - for (int i = 0; i < len - 1; i++) - abb[i] = abbrevValues[i + 1]; - return 0; - } else { - return -1; - } -} - -/** - *取得该dimension指定value的abbrev text - *@return 返回abbrev text - */ -String8 CTvDimension::getAbbrev(int valueIndex) -{ - int len = getDefinedValue(); - if (valueIndex >= len) - return String8(""); - else - return abbrevValues[valueIndex]; -} - -/** - *取得该dimension的所有values的value text - *@return 返回所有values的value text - */ -int CTvDimension::getText(String8 tx[]) -{ - int len = getDefinedValue(); - if (len > 1) { - for (int i = 0; i < len - 1; i++) - tx[i] = textValues[i + 1]; - return 0; - } else { - return -1; - } -} - -/** - *取得该dimension指定value的value text - *@return 返回value text - */ -String8 CTvDimension::getText(int valueIndex) -{ - int len = getDefinedValue(); - if (valueIndex >= len) - return String8(""); - else - return textValues[valueIndex]; -} - -/** - *设置指定value的加锁状态 - *@param valueIndex value索引 - *@param status 加锁状态 - */ -void CTvDimension::setLockStatus(int valueIndex, int status) -{ - int len = getDefinedValue(); - if (valueIndex >= len) - return; - - if (lockValues[valueIndex] != -1 && lockValues[valueIndex] != status) { - lockValues[valueIndex] = status; - String8 cmd = String8("update dimension_table set locked") + String8::format("%d", valueIndex); - cmd += String8("=") + String8::format("%d", status) + String8(" where db_id = ") + String8::format("%d", id); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - } -} - -/** - *设置该dimension所有values的加锁状态 - *@param status 加锁状态 - */ -void CTvDimension::setLockStatus(int status[]) -{ - int len = getDefinedValue(); - if (status == NULL) { - LOGD("Cannot set lock status, invalid param"); - return; - } - for (int i = 0; i < len; i++) { - setLockStatus(i + 1, status[i]); - } -} - -/** - *设置指定values的加锁状态 - *@param abbrevs abbrev集合 - *@param locks 需要修改的与abbrev对应的加锁状态集合 - */ -void CTvDimension::setLockStatus(String8 abbrevs[], int locks[], int abb_size) -{ - int len = getDefinedValue(); - if (abbrevs == NULL || locks == NULL) - return; - - for (int i = 0; i < abb_size; i++) { - for (int j = 0; j < len; j++) { - if (abbrevs[i] == abbrevValues[j]) { - setLockStatus(j, locks[i]); - break; - } - } - } -} - -CTvDimension::VChipRating::VChipRating(int region, int dimension, int value) -{ - this->region = region; - this->dimension = dimension; - this->value = value; -} -CTvDimension::VChipRating::VChipRating() -{ -} - -CTvDimension::VChipRating::~VChipRating() -{ -} -int CTvDimension::VChipRating::getRegion() -{ - return region; -} - -int CTvDimension::VChipRating::getDimension() -{ - return dimension; -} - -int CTvDimension::VChipRating::getValue()const -{ - return value; -} - -String8 CTvDimension::getCurdimension() -{ - return CurvchipDimension; -} -String8 CTvDimension::getCurAbbr() -{ - return CurvchipAbbrev; - -} -String8 CTvDimension::getCurText() -{ - return CurvchipText; -} - -void CTvDimension::insertNewDimension(const int region, String8 regionName, String8 name, - int indexj, int *lock, const char **abbrev, const char **text, int size) -{ - String8 cmd = String8("insert into dimension_table(rating_region,rating_region_name,name,graduated_scale,"); - cmd += String8("values_defined,index_j,version,abbrev0,text0,locked0,abbrev1,text1,locked1,abbrev2,text2,locked2,"); - cmd += String8("abbrev3,text3,locked3,abbrev4,text4,locked4,abbrev5,text5,locked5,abbrev6,text6,locked6,"); - cmd += String8("abbrev7,text7,locked7,abbrev8,text8,locked8,abbrev9,text9,locked9,abbrev10,text10,locked10,"); - cmd += String8("abbrev11,text11,locked11,abbrev12,text12,locked12,abbrev13,text13,locked13,abbrev14,text14,locked14,"); - cmd += String8("abbrev15,text15,locked15) values(") + String8::format("%d", region) + String8(",'") + regionName.string(); - cmd += String8("','") + name.string() + String8("',0,") + String8::format("%d", size) + String8(",") + String8::format("%d", indexj) + String8(",0"); - for (int i = 0; i < 16; i++) { - if (i < size) { - cmd += String8(",'") + String8::format("%s", abbrev[i]) + String8("'"); - cmd += String8(",'") + String8::format("%s", text[i]) + String8("'"); - cmd += String8(",'") + String8::format("%d", lock[i]) + String8("'"); - } else { - cmd += String8(",''"); - cmd += String8(",''"); - cmd += String8(",-1"); - } - } - cmd += String8(")"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} -/** - * ??????Standard ATSC V-Chip Dimensions - */ -void CTvDimension::builtinAtscDimensions() -{ - CTvDatabase::GetTvDb()->exeSql("delete from dimension_table"); - - /* Add U.S. Rating region 0x1 */ - const char *abbrev0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock0[] = { -1, -1, 0, 0, 0, 0}; - const char *abbrev1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock1[] = { -1, -1, -1, 0, 0, -1}; - const char *abbrev2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock2[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock3[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock4[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev5[] = {"", "TV-Y", "TV-Y7"}; - const char *text5[] = {"", "TV-Y", "TV-Y7"}; - int lock5[] = { -1, 0, 0}; - const char *abbrev6[] = {"", "FV", "TV-Y7"}; - const char *text6[] = {"", "FV", "TV-Y7"}; - int lock6[] = { -1, -1, 0}; - const char *abbrev7[] = {"", "N/A", "G", "PG", "PG-13", "R", "NC-17", "X", "NR"}; - const char *text7[] = {"", "MPAA Rating Not Applicable", "Suitable for AllAges", - "Parental GuidanceSuggested", "Parents Strongly Cautioned", - "Restricted, under 17 must be accompanied by adult", - "No One 17 and Under Admitted", "No One 17 and Under Admitted", - "no Rated by MPAA" - }; - int lock7[] = { -1, -1, 0, 0, 0, 0, 0, 0, 0}; - /*Extra for 'All' */ - const char *abbrevall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *textall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lockall[] = {0, 0, 0, 0, 0, 0}; - - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Entire Audience"), 0, lock0, abbrev0, text0, sizeof(lock0) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Dialogue"), 1, lock1, abbrev1, text1, sizeof(lock1) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Language"), 2, lock2, abbrev2, text2, sizeof(lock2) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Sex"), 3, lock3, abbrev3, text3, sizeof(lock3) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Violence"), 4, lock4, abbrev4, text4, sizeof(lock4) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Children"), 5, lock5, abbrev5, text5, sizeof(lock5) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Fantasy violence"), 6, lock6, abbrev6, text6, sizeof(lock6) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("MPAA"), 7, lock7, abbrev7, text7, sizeof(lock7) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("All"), -1, lockall, abbrevall, textall, sizeof(lockall) / sizeof(int)); - /* Add Canadian Rating region 0x2 */ - const char *cabbrev0[] = {"E", "C", "C8+", "G", "PG", "14+", "18+"}; - const char *ctext0[] = {"Exempt", "Children", "8+", "General", "PG", "14+", "18+"}; - int clock0[] = {0, 0, 0, 0, 0, 0, 0}; - const char *cabbrev1[] = {"E", "G", "8 ans+", "13 ans+", "16 ans+", "18 ans+"}; - const char *ctext1[] = {"Exempt??es", "Pour tous", "8+", "13+", "16+", "18+"}; - int clock1[] = {0, 0, 0, 0, 0, 0}; - - insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), - String8("Canadian English Language Rating"), 0, clock0, cabbrev0, ctext0, sizeof(clock0) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), - String8("Codes francais du Canada"), 1, clock1, cabbrev1, ctext1, sizeof(clock1) / sizeof(int)); -} - -int CTvDimension::isDimensionTblExist() -{ - String8 cmd = String8("select * from dimension_table"); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - return c.moveToFirst(); -} |