00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <algorithm>
00021
00022 #include "inputgroupmap.h"
00023 #include "mythdbcon.h"
00024
00025 bool InputGroupMap::Build(void)
00026 {
00027 bool ok = true;
00028 inputgroupmap.clear();
00029 MSqlQuery query(MSqlQuery::InitCon());
00030
00031 query.prepare("SELECT cardinputid, inputgroupid from inputgroup");
00032 if (!query.exec())
00033 {
00034 MythContext::DBError("InputGroupMap::Build 1", query);
00035 ok = false;
00036 }
00037 else
00038 {
00039 while (query.next())
00040 {
00041 uint inputid = query.value(0).toUInt();
00042 uint groupid = query.value(1).toUInt();
00043 inputgroupmap[inputid].push_back(groupid);
00044 }
00045 }
00046
00047 query.prepare("SELECT cardinputid, cardid from cardinput");
00048 if (!query.exec())
00049 {
00050 MythContext::DBError("InputGroupMap::Build 2", query);
00051 ok = false;
00052 }
00053 else
00054 {
00055 while (query.next())
00056 {
00057 uint inputid = query.value(0).toUInt();
00058 uint groupid = query.value(1).toUInt() + 1000;
00059 if (inputgroupmap[inputid].empty())
00060 inputgroupmap[inputid].push_back(groupid);
00061 }
00062 }
00063
00064 return ok;
00065 }
00066
00067 uint InputGroupMap::GetSharedInputGroup(uint inputid1, uint inputid2) const
00068 {
00069 const InputGroupList &input1 = inputgroupmap[inputid1];
00070 const InputGroupList &input2 = inputgroupmap[inputid2];
00071 if (input1.empty() || input2.empty())
00072 return 0;
00073
00074 InputGroupList::const_iterator it;
00075 for (it = input1.begin(); it != input1.end(); ++it)
00076 {
00077 if (find(input2.begin(), input2.end(), *it) != input2.end())
00078 return *it;
00079 }
00080
00081 return 0;
00082 }