private void PrepareExcelForm()
 {
     CCloudDao cDao = new CCloudDao();
     cDao.NotifyDataBaseFinished += new NotifyDataBaseFinishedHandler(Data_Receviced);
     cDao.GetNMSLogReportCommandList(this.sessionId);
 }
        private void BatchDeviceInfo(string fileName)
        {
            try
            {
                object missing = System.Reflection.Missing.Value;

                string strProvider = string.Empty;
                strProvider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0\"";

                OleDbConnection excelConnection = new OleDbConnection(strProvider);
                excelConnection.Open();

                string strQuery = "SELECT * FROM [Sheet1$]";
                OleDbCommand dbCommand = new OleDbCommand(strQuery, excelConnection);
                OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);

                DataTable dTable = new DataTable();
                dataAdapter.Fill(dTable);

                List<CelotMClient.Model.Device> deviceList = new List<CelotMClient.Model.Device>();
                CelotMClient.Model.Device device;
                int rowIndex = 0;
                foreach (DataRow row in dTable.Rows)
                {
                    device = new CelotMClient.Model.Device();
                    device.Name = Convert.ToString(row[ExcelColumnIndex.NAME]);
                    device.SerialNo = Convert.ToInt32(row[ExcelColumnIndex.SERIAL_NUMBER]);
                    device.SecuCode = Convert.ToString(row[ExcelColumnIndex.SECURE_CODE]);
                    device.PhoneNumber = Convert.ToInt32(row[ExcelColumnIndex.PHONE_NUMBER]);
                    device.GroupName = Convert.ToString(row[ExcelColumnIndex.GROUP]);
                    device.RouterIp = Convert.ToString(row[ExcelColumnIndex.ROUTER_IP]);
                    device.Latitude = Convert.ToString(row[ExcelColumnIndex.LATITUDE]);
                    device.Longitude = Convert.ToString(row[ExcelColumnIndex.LONGITUDE]);
                    device.SmsSupport =
                        Convert.ToString(row[ExcelColumnIndex.SMS]).ToUpper().Equals("ON") ? (int)SmsSupport.SUPPORTED : (int)SmsSupport.UNSUPPORTED;
                    device.WifiSupport =
                         Convert.ToString(row[ExcelColumnIndex.WIFI]).ToUpper().Equals("ON") ? (int)WifiSupport.SUPPORTED : (int)WifiSupport.UNSUPPORTED;
                    device.BatterySupport =
                        Convert.ToString(row[ExcelColumnIndex.BATTERY]).ToUpper().Equals("ON") ? (int)BatterySupport.SUPPORTED : (int)BatterySupport.UNSUPPORTED;
                    device.VpnSupport =
                         Convert.ToString(row[ExcelColumnIndex.VPN]).ToUpper().Equals("ON") ? (int)VpnSupport.SUPPORTED : (int)VpnSupport.UNSUPPORTED;
                    device.Des = Convert.ToString(row[ExcelColumnIndex.DES]);
                    deviceList.Add(device);
                    rowIndex++;
                    Debug.WriteLine(String.Format(
                        "{0} | {1} | {2} | {3} | {4} | {5} | {6} | {7} | {8} | {9} | {10} | {11} | {12} ",
                         device.Name,
                         device.SerialNo,
                         device.SecuCode,
                         device.PhoneNumber,
                         device.GroupName,
                         device.RouterIp,
                         device.Latitude,
                         device.Longitude,
                         device.SmsSupport,
                         device.WifiSupport,
                         device.BatterySupport,
                         device.VpnSupport,
                         device.Des
                        ));
                }
                dTable.Dispose();
                dataAdapter.Dispose();
                dbCommand.Dispose();

                excelConnection.Close();
                excelConnection.Dispose();

                if (deviceList.Count < 1)
                {
                    MessageBox.Show("디바이스 입력 정보가 존재하지 않습니다");
                    return;
                }
                Debug.WriteLine("디바이스 개수 : " + deviceList.Count);

                bool isError = false;
                StringBuilder strBuilder = new StringBuilder();

                //최신의 디바이스 리스트로 업데이트
                ApplicationCache.Instance().LoadDevices();
                List<CelotMClient.Model.Device> tempRegisteredList = new List<CelotMClient.Model.Device>(ApplicationCache.Instance().Devices);
                foreach (CelotMClient.Model.Device d1 in deviceList)
                {
                    var query = tempRegisteredList.Where(x => x.PhoneNumber == d1.PhoneNumber || x.SerialNo == d1.SerialNo);
                    if (query.Count() > 0)
                    {
                        isError = true;
                        strBuilder.AppendLine(String.Format("Router Info overlapped :  Ip {0}, Phone {1}, Serial {2}", d1.RouterIp, d1.PhoneNumber, d1.SerialNo));
                    }

                    if (!CelotUtility.CheckValidIp(d1.RouterIp))
                    {
                        isError = true;
                        strBuilder.AppendLine(String.Format("wrong ip format  :  Ip {0}, Phone {1}, Serial {2}", d1.RouterIp, d1.PhoneNumber, d1.SerialNo));
                    }
                    tempRegisteredList.Add(d1);
                }

                if (isError)
                {
                    Logger.singleton().log(logLevel.Error, "DEVICE REGISTER ERROR", strBuilder.ToString());
                    MessageBox.Show("파일에  잘못된 디바이스 정보가 있습니다.등록을 취소합니다.\n자세한 사항은 로그파일을 확인해주세요");
                    this.deviceFileName = "";
                    this.deviceFileBox.Text = "";
                    this.deviceBatchfileStatus = 0;
                    this.setDeviceBatchBtnText();
                    return;
                }

                string insertBatchQuery = this.BuildInsertBatchQuery(deviceList);
                Debug.WriteLine(insertBatchQuery);

                CCloudDao cDao = new CCloudDao();
                cDao.NotifyDataBaseFinished += new NotifyDataBaseFinishedHandler(DeviceBatch_Finished);
                cDao.RawAffectedQuery(insertBatchQuery);
            }catch(Exception ee){
                throw ee;
            }
        }