public Dictionary<int, GroupSwitchGroup> GetAllGroupSwitchGroups(ref string errMessage)
        {
            Database db = DatabaseFactory.CreateDatabase();
            errMessage = "";
            var list = new Dictionary<int, GroupSwitchGroup>();
            try
            {
                GroupSwitchGroup groupSwitchGroup;
                DataSet ds = GroupSwitchGroupDataAccess.GetAllGroupSwitchGroupInfo(db);
                DataSet groupSwitchDetail;
                GroupSwitchDetailInfo groupSwitchDetailInfo;
                CameraMonitorPairInfo cameraMonitorPairInfo;
                //对于每一个群组切换的组
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    groupSwitchGroup = new GroupSwitchGroup(ds.Tables[0].Rows[i]);
                    groupSwitchDetail = GroupSwitchDetailDataAccess.GetGroupSwitchDetailByGroupSwitchId(db, groupSwitchGroup.Id);
                    groupSwitchGroup.ListGroupSwitchDetailInfo = new Dictionary<int, GroupSwitchDetailInfo>();
                    //对于一个组中的所有与同步群组有联系的记录
                    foreach (DataRow drgsdi in groupSwitchDetail.Tables[0].Rows)
                    {
                        groupSwitchDetailInfo = new GroupSwitchDetailInfo(drgsdi);
                        //根据同步群组获取同步群组与摄像机、监视器的配对信息
                        DataSet dsCamMonPair = CameraMonitorPairDataAccess.GetCameraMonitorPairBySynGroupId(db,
                                            groupSwitchDetailInfo.SynGroupId);
                        groupSwitchDetailInfo.ListCameraMonitorPair = new Dictionary<int, CameraMonitorPairInfo>();
                        foreach (DataRow drCmP in dsCamMonPair.Tables[0].Rows)
                        {
                            cameraMonitorPairInfo = new CameraMonitorPairInfo(drCmP);
                            groupSwitchDetailInfo.ListCameraMonitorPair.Add(cameraMonitorPairInfo.CameraMonitorPairId, cameraMonitorPairInfo);
                        }

                        groupSwitchGroup.ListGroupSwitchDetailInfo.Add(groupSwitchDetailInfo.Id, groupSwitchDetailInfo);
                    }

                    list.Add(groupSwitchGroup.Id, groupSwitchGroup);
                }
                return list;

            }
            catch (Exception ex)
            {
                errMessage = ex.Message + ex.StackTrace;
                Logger.Error("Error Message:" + ex.Message + " Trace:" + ex.StackTrace);
                return null;
            }
        }
        public SynGroup GetSynGroupBySynGroupName(ref string errMessage, string synGroupName)
        {
            Database db = DatabaseFactory.CreateDatabase();
            errMessage = "";
            try
            {
                DataSet ds = SynGroupDataAccess.GetSynGroupBySynGroupName(db, synGroupName);
                if (ds.Tables[0].Rows.Count == 0)
                {
                    return null;
                }
                CameraInfo oCamera;
                DeviceInfo oDevice;

                var synGroup = new SynGroup(ds.Tables[0].Rows[0]) { ListCamera = new Dictionary<int, CameraInfo>() };

                //DataSet dsCamera = CameraDataAccess.GetCamInfoBySynGroupId(db, synGroup.SynGroupId);
                //synGroup.ListCamera = new Dictionary<int, CameraInfo>();
                //foreach (DataRow drCam in dsCamera.Tables[0].Rows)
                //{
                //    oCamera = new CameraInfo(drCam);
                //    synGroup.ListCamera.Add(oCamera.CameraId, oCamera);

                //}
                CameraMonitorPairInfo cameraMonitorPair;
                DataSet dsCameraMonitorPair = CameraMonitorPairDataAccess.GetCameraMonitorPairBySynGroupId(db, synGroup.SynGroupId);
                synGroup.ListCameraMonitorPair = new Dictionary<int, CameraMonitorPairInfo>();
                foreach (DataRow drCamMonPair in dsCameraMonitorPair.Tables[0].Rows)
                {
                    cameraMonitorPair = new CameraMonitorPairInfo(drCamMonPair);
                    synGroup.ListCameraMonitorPair.Add(cameraMonitorPair.CameraMonitorPairId, cameraMonitorPair);
                }
                return synGroup;

            }
            catch (Exception ex)
            {
                errMessage = ex.Message + ex.StackTrace;
                Logger.Error("Error Message:" + ex.Message + " Trace:" + ex.StackTrace);
                return null;
            }
        }
        public Dictionary<int, SynGroup> GetAllSynGroups(ref string errMessage)
        {
            Database db = DatabaseFactory.CreateDatabase();
            errMessage = "";
            var list = new Dictionary<int, SynGroup>();
            try
            {
                SynGroup synGroup;
                DeviceInfo oDevice;
                DataSet ds = SynGroupDataAccess.GetAllSynGroupInfo(db);
                DataSet dsCamera;
                CameraInfo oCamera;
                DataSet dsCameraMonitorPair;
                CameraMonitorPairInfo cameraMonitorPair;
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    synGroup = new SynGroup(ds.Tables[0].Rows[i]);
                    //dsCamera = CameraDataAccess.GetCamInfoBySynGroupId(db, synGroup.SynGroupId);
                    //synGroup.ListCamera = new Dictionary<int, CameraInfo>();
                    //foreach (DataRow drCam in dsCamera.Tables[0].Rows)
                    //{
                    //    oCamera = new CameraInfo(drCam);
                    //    synGroup.ListCamera.Add(oCamera.CameraId, oCamera);
                    //}
                    dsCameraMonitorPair = CameraMonitorPairDataAccess.GetCameraMonitorPairBySynGroupId(db, synGroup.SynGroupId);
                    synGroup.ListCameraMonitorPair = new Dictionary<int, CameraMonitorPairInfo>();
                    foreach (DataRow drCamMonPair in dsCameraMonitorPair.Tables[0].Rows)
                    {
                        cameraMonitorPair = new CameraMonitorPairInfo(drCamMonPair);
                        synGroup.ListCameraMonitorPair.Add(cameraMonitorPair.CameraMonitorPairId, cameraMonitorPair);
                    }

                    list.Add(synGroup.SynGroupId, synGroup);
                }
                return list;

            }
            catch (Exception ex)
            {
                errMessage = ex.Message + ex.StackTrace;
                Logger.Error("Error Message:" + ex.Message + " Trace:" + ex.StackTrace);
                return null;
            }
        }
        public GroupSwitchGroup GetGroupSwitchGroupById(ref string errMessage, int groupSwitchGroupId)
        {
            Database db = DatabaseFactory.CreateDatabase();
            errMessage = "";
            try
            {
                DataSet ds = GroupSwitchGroupDataAccess.GetGroupSwitchGroupById(db, groupSwitchGroupId);
                if (ds.Tables[0].Rows.Count == 0)
                {
                    return null;
                }
                var groupSwitchGroup = new GroupSwitchGroup(ds.Tables[0].Rows[0]) {ListGroupSwitchDetailInfo = new Dictionary<int, GroupSwitchDetailInfo>()};

                var groupSwitchDetail = GroupSwitchDetailDataAccess.GetGroupSwitchDetailByGroupSwitchId(db, groupSwitchGroup.Id);
                groupSwitchGroup.ListGroupSwitchDetailInfo = new Dictionary<int, GroupSwitchDetailInfo>();
                //对于一个组中的所有与同步群组有联系的记录
                foreach (DataRow drgsdi in groupSwitchDetail.Tables[0].Rows)
                {
                    var groupSwitchDetailInfo = new GroupSwitchDetailInfo(drgsdi);
                    //根据同步群组获取同步群组与摄像机、监视器的配对信息
                    DataSet dsCamMonPair = CameraMonitorPairDataAccess.GetCameraMonitorPairBySynGroupId(db,
                                        groupSwitchDetailInfo.SynGroupId);
                    groupSwitchDetailInfo.ListCameraMonitorPair = new Dictionary<int, CameraMonitorPairInfo>();
                    foreach (DataRow drCmP in dsCamMonPair.Tables[0].Rows)
                    {
                        var cameraMonitorPairInfo = new CameraMonitorPairInfo(drCmP);
                        groupSwitchDetailInfo.ListCameraMonitorPair.Add(cameraMonitorPairInfo.CameraMonitorPairId, cameraMonitorPairInfo);
                    }

                    groupSwitchGroup.ListGroupSwitchDetailInfo.Add(groupSwitchDetailInfo.Id, groupSwitchDetailInfo);
                }
                return groupSwitchGroup;

            }
            catch (Exception ex)
            {
                errMessage = ex.Message + ex.StackTrace;
                Logger.Error("Error Message:" + ex.Message + " Trace:" + ex.StackTrace);
                return null;
            }
        }