Exemplo n.º 1
0
 /// <summary>
 /// Удаляет из входной строки все символы, которые не подпадают под допустимые
 /// </summary>
 /// <param name="Input">Входная строка, которую следует "почистить". Если NULL или пустая, возвращается без изменений</param>
 /// <param name="AllowedSymbols">Допустимые клссы символов. Если содержит неопределённое значение, входная строка возвращается без изменений.</param>
 /// <returns></returns>
 public static String CleanFromChars(String Input, StringTools.StringAnalyzers.ContainsEntities AllowedSymbols)
 {
     if (Input.IsStringNullOrEmpty() == true || AllowedSymbols == StringTools.StringAnalyzers.ContainsEntities.Empty) { return Input; }
     StringBuilder output = new StringBuilder(Input.Length);
     for (Int32 i = 0; i < Input.Length; i++)
     {
         Char current = Input[i];
         if (Char.IsControl(current) == true && AllowedSymbols.Misses(StringTools.StringAnalyzers.ContainsEntities.Controls) == true)
         { continue; }
         if (
             (AllowedSymbols.Contains(StringTools.StringAnalyzers.ContainsEntities.Letters) == true && Char.IsLetter(current) == true) ||
             (AllowedSymbols.Contains(StringTools.StringAnalyzers.ContainsEntities.Digits) == true && Char.IsDigit(current) == true) ||
             (AllowedSymbols.Contains(StringTools.StringAnalyzers.ContainsEntities.Spaces) == true && Char.IsWhiteSpace(current) == true) ||
             (AllowedSymbols.Contains(StringTools.StringAnalyzers.ContainsEntities.Controls) == true && Char.IsControl(current) == true)
             )
         {
             output.Append(current);
         }
     }
     return output.ToString();
 }
        private void  LuuThongTin()
        {
            // lưu bảng hoạt động

            // lưu bảng ksxll
            KiemSoatXeLienLac objKSXeLL = new KiemSoatXeLienLac();

            objKSXeLL.SoHieuXe     = StringTools.TrimSpace(editSoHieuXe.Text);
            objKSXeLL.ThoiDiemBao  = timeServer;
            objKSXeLL.ViTriDiemBao = StringTools.TrimSpace(editViTriBao.Text);
            objKSXeLL.MaLaiXe      = StringTools.TrimSpace(editTenLaiXe.Text);

            if (mKieuBao == 1)
            {
                objKSXeLL.IsHoatDong = true;

                objKSXeLL.TrangThaiLaiXeBao = EFiling.Utils.KieuLaiXeBao.BaoRaHoatDong;
                objKSXeLL.LoaiChoKhach      = EFiling.Utils.LoaiChoKhach.ChoKhachNoiTinh;
                objKSXeLL.ViTriDiemDen      = string.Empty;

                objKSXeLL.GhiChu = "";
            }
            else if (mKieuBao == 2) // báo điểm
            {
                objKSXeLL.IsHoatDong   = true;
                objKSXeLL.ViTriDiemBao = StringTools.TrimSpace(txtViTriBao1.Text);
                if (chkTongDaiGoi.Checked)
                {
                    objKSXeLL.TrangThaiLaiXeBao = KieuLaiXeBao.TongDaiCheck;
                }
                else
                {
                    objKSXeLL.TrangThaiLaiXeBao = EFiling.Utils.KieuLaiXeBao.BaoDiemDo;
                }
                objKSXeLL.LoaiChoKhach = EFiling.Utils.LoaiChoKhach.ChoKhachNoiTinh;
                if (chkDuongDai.Checked)
                {
                    objKSXeLL.LoaiChoKhach = EFiling.Utils.LoaiChoKhach.ChoKhachDuongDai;
                }
                else if (chkSanBay.Checked)
                {
                    objKSXeLL.LoaiChoKhach = EFiling.Utils.LoaiChoKhach.ChoKhachSanBay;
                }

                objKSXeLL.ViTriDiemDen = StringTools.TrimSpace(editViTriBao.Text);

                objKSXeLL.GhiChu = "";
            }
            else if (mKieuBao == 3) // báo  nghỉ
            {
                objKSXeLL.IsHoatDong = true;

                objKSXeLL.TrangThaiLaiXeBao = EFiling.Utils.KieuLaiXeBao.BaoNghi;
                objKSXeLL.LoaiChoKhach      = EFiling.Utils.LoaiChoKhach.ChoKhachNoiTinh;
                objKSXeLL.ViTriDiemDen      = string.Empty;
                objKSXeLL.GhiChu            = "";
            }
            else if (mKieuBao == 4) // báo  về
            {
                objKSXeLL.IsHoatDong = false;

                objKSXeLL.TrangThaiLaiXeBao = EFiling.Utils.KieuLaiXeBao.BaoVe;
                objKSXeLL.LoaiChoKhach      = EFiling.Utils.LoaiChoKhach.ChoKhachNoiTinh;
                objKSXeLL.ViTriDiemDen      = string.Empty;
                objKSXeLL.GhiChu            = "";
            }


            if (!objKSXeLL.InsertUpdate())
            {
                lblMessage.Text = "Lỗi lưu thông tin.Bạn cần liên hệ với quản trị hệ thống."; lblMessage.Visible = true;
                return;
            }
            else
            {
                lblMessage.Text = "";
            }

            if ((mKieuBao == 1) || (mKieuBao == 4))
            {
                if (!KiemSoatXeLienLac.InsertUpdateXeDangHoatDong(objKSXeLL.SoHieuXe, objKSXeLL.ThoiDiemBao, objKSXeLL.IsHoatDong))
                {
                    lblMessage.Text = "Lỗi lưu thông tin xe hoạt động.Bạn cần liên hệ với quản trị hệ thống."; lblMessage.Visible = true;
                    return;
                }
                else
                {
                    lblMessage.Text = "";
                }
            }
            lblMessage.Text = "Lưu thông tin thành công.";
        }
Exemplo n.º 3
0
        private void btnLuu_Click(object sender, EventArgs e)
        {
            string TenCongTy = StringTools.TrimSpace(txtTenCongTy.Text);

            string LogoPath = g_LogoCongTy;

            if (g_bCoThayLogo)
            {
                // lấy file name

                FileInfo info = new FileInfo(g_LogoCongTy);

                LogoPath = info.Name;
                string DesFile = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "\\Reports\\" + LogoPath;
                FileTools.CopyFileTo(g_LogoCongTy, DesFile);
            }

            string SoDauCuaTongDai = "";

            if (chkCoSuDungTongDai.Checked)
            {
                SoDauCuaTongDai = StringTools.TrimSpace(txtSoDauTongDai.Text);
            }
            bool   bTinhTienCuoc2ChieuNgatCuoc          = chkTinhTienCuocHaiChieuKhongNgatCuoc.Checked;
            int    SoGiayGioiHanThoiGianChuyenTongDai   = int.Parse(StringTools.TrimSpace(txtThoiGianChuyenTongDai.Text));
            int    SoGiayGioiHanThoiGianDieuXe          = int.Parse(StringTools.TrimSpace(txtThoiGianDieuXe.Text));
            int    SoGiayGioiHanThoiGianDonKhach        = int.Parse(StringTools.TrimSpace(txtThoiGianDonKhach.Text));
            int    SoPhutGioiHanMatLienLac              = int.Parse(StringTools.TrimSpace(txtGioiHanMLL.Text));
            int    SoPhutGioiHanMatLienLacBaoNghi       = int.Parse(StringTools.TrimSpace(txtGioiHanMLLBaoNghi.Text));
            int    SoPhutGioiHanMatLienLacBaoDiSanBay   = int.Parse(StringTools.TrimSpace(txtGioiHanMLLDiSanBay.Text));
            int    SoPhutGioiHanMatLienLacBaoDiDuongDai = int.Parse(StringTools.TrimSpace(txtGioiHanMLLDiSanBay.Text));
            string ThuMucDuLieuTanasonic = txtThuMucDuLieuTanasonic.Text;
            string ThuMucFileAmThanh     = txtThuMucFileAmThanh.Text;
            string TatCaLinesHeThong     = StringTools.TrimSpace(txtLineHeThong.Text);
            string CacLineTaxi           = StringTools.TrimSpace(txtLineTaxi.Text);
            string CacVungTongDai        = StringTools.TrimSpace(txtCacVungTongDai.Text);

            if (CacVungTongDai.Length <= 0)
            {
                CacVungTongDai = "1";
            }
            string PhoneTaxi  = StringTools.TrimSpace(txtPhoneTaxi.Text);
            bool   HasTongDai = chkHasCOMPort.Checked;
            int    SoDongCuocGoiDaGiaiQuyet = Convert.ToInt16(txtDongCuocGoiDaGiaiQuyet.Text);
            bool   bKiemTraXeDaRaHoatDong   = chkKiemTraXeDaRaHoatDong.Checked;

            bool KichHoachTaxiGroupDon      = chkKichHoatTaxiGroupDon.Checked;
            byte SoPhutGiuKhachChuaCoXeNhan = 0;
            byte SoPhutGiuKhachCoXeNhan     = 0;
            byte SoPhutGiuKhachLai          = 0;

            try
            {
                SoPhutGiuKhachChuaCoXeNhan = Convert.ToByte(txtSoPhutChuaCoXeNhan.Text);
            }
            catch (Exception ex) { SoPhutGiuKhachChuaCoXeNhan = 5; }
            try
            {
                SoPhutGiuKhachCoXeNhan = Convert.ToByte(txtSoPhutCoXeNhan.Text);
            }
            catch (Exception ex) { SoPhutGiuKhachCoXeNhan = 10; }
            try
            {
                SoPhutGiuKhachLai = Convert.ToByte(txtSoPhutGiuKhachLai.Text);
            }
            catch (Exception ex) { SoPhutGiuKhachLai = 15; }


            if (PhoneTaxi.Length <= 0)
            {
                new MessageBox.MessageBoxBA().Show(this, "Bạn phải nhập số điện thoại công ty.");
                txtPhoneTaxi.Focus();
                return;
            }
            if (CacVungTongDai.Length <= 0)
            {
                new MessageBox.MessageBoxBA().Show(this, "Bạn phải nhập các vùng tổng đài.");
                txtCacVungTongDai.Focus();
                return;
            }
            if (!ValidateLinesHeThong(TatCaLinesHeThong, CacLineTaxi))
            {
                new MessageBox.MessageBoxBA().Show(this, "Bạn cần phải đặt lại thông tin lines hệ thống,(0<Lines <=32) và lines taxi phải thuộc trong lines hệ thống.");
                txtLineTaxi.Focus();
                return;
            }

            #region Tab Config GPS
            string MaCungXn  = "";
            string BanDo     = "";
            int    Zoom      = 0;
            float  KinhDo    = 0;
            float  ViDo      = 0;
            bool   TrangThai = false;
            string TenTinh   = string.Empty;

            if (!validConfigGPS())
            {
                return;
            }

            MaCungXn = txtGPS_MaCungXN.Text;
            BanDo    = lblGPS_LoaiBanDo.Text.Trim();
            Zoom     = Convert.ToInt32(lblGPS_mucZoom.Text);
            KinhDo   = float.Parse(lblGPS_KinhDo.Text);
            ViDo     = float.Parse(lblGPS_ViDo.Text);
            TenTinh  = txtGPS_TenTinh.Text;

            TrangThai = ckGPS_KetNoi.Checked ? true : false;

            int BKGioiHan = 500;
            int BKXeNhan  = 500;
            int.TryParse(txtGPS_BanKinhTimXe.Text.Trim(), out BKGioiHan);
            int.TryParse(txtBKXeNhan.Text.Trim(), out BKXeNhan);

            #endregion

            TimeSpan GioDB               = time_GopKenh_GioBatDau.Value.TimeOfDay;
            TimeSpan GioKT               = time_GopKenh_GioKetThuc.Value.TimeOfDay;
            bool     status              = chkGopKenh_TrangThai.Checked;
            bool     ft_ChieuVe_CoDuyet  = chkFT_ChieuVe_CoDuyet.Checked;
            bool     ft_ChieuVe_CoChotCo = chkFT_ChieuVe_CoChotCo.Checked;
            bool     fT_Active           = ckSuDungStaxi.Checked;
            bool     fT_ChieuVe_Active   = ckbSuDungStaxiChieuVe.Checked;
            int      fT_ServiceMap       = inputEnumLookUp_ServiceMap1.EditValue.To <int>();
            int      fT_SoKM             = txtGioiHanKm.EditValue.To <int>();

            if (ThongTinCauHinh.UpdateInsetThongTinCauHinh(TenCongTy, LogoPath, SoDauCuaTongDai,
                                                           SoGiayGioiHanThoiGianChuyenTongDai, SoGiayGioiHanThoiGianDieuXe, SoGiayGioiHanThoiGianDonKhach,
                                                           SoPhutGioiHanMatLienLac, SoPhutGioiHanMatLienLacBaoNghi, SoPhutGioiHanMatLienLacBaoDiSanBay,
                                                           SoPhutGioiHanMatLienLacBaoDiDuongDai, ThuMucDuLieuTanasonic, ThuMucFileAmThanh, TatCaLinesHeThong,
                                                           CacLineTaxi, PhoneTaxi, HasTongDai, SoDongCuocGoiDaGiaiQuyet, bKiemTraXeDaRaHoatDong, CacVungTongDai,
                                                           bTinhTienCuoc2ChieuNgatCuoc, KichHoachTaxiGroupDon, SoPhutGiuKhachChuaCoXeNhan, SoPhutGiuKhachCoXeNhan, SoPhutGiuKhachLai,
                                                           MaCungXn, BanDo, Zoom, KinhDo, ViDo, TenTinh, TrangThai, BKGioiHan, BKXeNhan, status, GioDB, GioKT, ft_ChieuVe_CoDuyet, ft_ChieuVe_CoChotCo, fT_Active, fT_ChieuVe_Active, fT_ServiceMap, fT_SoKM))
            {
                new MessageBox.MessageBoxBA().Show(this, "Lưu thông tin cấu hình thành công.");
                new MessageBox.MessageBoxBA().Show(this, "Cần phải khởi động lại chương trình các máy con để để thiết lập thông tin.");
                Application.Restart();
            }
            else
            {
                new MessageBox.MessageBoxBA().Show(this, "Lỗi lưu thông tin cấu hình thành công");
            }
        }
 /// <summary>
 /// Gửi SMS riêng cho Dương Thảo, API Viettel
 /// </summary>
 /// <param name="mobileCustomer"></param>
 /// <param name="privateCode"></param>
 /// <param name="message"></param>
 /// <returns></returns>
 public static bool SendSMS_DuongThao_CustomerPhone(string mobileCustomer, string privateCode, string message)
 {
     try
     {
         string driverPhone = "";
         if (CommonBL.DictDriver != null && CommonBL.DictDriver.ContainsKey(privateCode))
         {
             driverPhone = CommonBL.DictDriver[privateCode].DiDong;
             if (string.IsNullOrEmpty(driverPhone))
             {
                 driverPhone = CommonBL.DictDriver[privateCode].DienThoai;
             }
         }
         return(Client.TryGet(p => p.SendSMS_DuongThao_CustomerPhone(StringTools.ConvertPhoneNumber(driverPhone), StringTools.ConvertPhoneNumber(mobileCustomer), message)).Value);
     }
     catch (Exception ex)
     {
         LogError.WriteLogError("SendSMS_DuongThao_CustomerPhone", ex);
         return(false);
     }
 }
Exemplo n.º 5
0
 public static string GetCompositeId(params string[] parts)
 {
     return(StringTools.ConcatenateWithDelimiter(".", parts));
 }
Exemplo n.º 6
0
        /// <summary>
        /// 保存数据
        /// </summary>
        private void SaveBOM()
        {
            try
            {
                string strSQL = string.Empty;
                foreach (DataRow row in dtBOM.Rows)
                {
                    #region 新增行
                    if (row.RowState == DataRowState.Added)
                    {
                        if (row["进口料件id"] == DBNull.Value)
                        {
                            continue;
                        }
                        strSQL += string.Format(@"INSERT INTO [产品组成表]([出口成品id],[进口料件id],[数量],[备注])
                                         VALUES({0},{1},{2},{3})" + Environment.NewLine,
                                                row["出口成品id"] == DBNull.Value ? "NULL" : row["出口成品id"],
                                                row["进口料件id"] == DBNull.Value ? "NULL" : row["进口料件id"],
                                                row["数量"] == DBNull.Value ? "NULL" : row["数量"],
                                                row["备注"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["备注"].ToString()));
                    }
                    #endregion

                    #region  除行
                    else if (row.RowState == DataRowState.Deleted)
                    {
                        if (row["产品组成表id", DataRowVersion.Original] == DBNull.Value)
                        {
                            continue;
                        }
                        strSQL += string.Format("DELETE FROM [产品组成表] WHERE 产品组成表id={0}" + Environment.NewLine, row["产品组成表id", DataRowVersion.Original]);
                    }
                    #endregion

                    #region 修改行
                    else if (row.RowState == DataRowState.Modified)
                    {
                        if (row["产品组成表id"] == DBNull.Value)
                        {
                            continue;
                        }
                        strSQL += string.Format(@"UPDATE [产品组成表] SET [出口成品id] ={0},[进口料件id] = {1},[数量] = {2},[备注] = {3}
                                                 WHERE 产品组成表id={4}",
                                                row["出口成品id"] == DBNull.Value ? "NULL" : row["出口成品id"],
                                                row["进口料件id"] == DBNull.Value ? "NULL" : row["进口料件id"],
                                                row["数量"] == DBNull.Value ? "NULL" : row["数量"],
                                                row["备注"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["备注"].ToString()),
                                                row["产品组成表id"] == DBNull.Value ? "NULL" : row["产品组成表id"]);
                    }
                    #endregion
                }
                if (strSQL.Length > 0)
                {
                    IDataAccess dataAccess = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_Uniquegrade);
                    dataAccess.Open();
                    dataAccess.ExecuteNonQuery(strSQL, null);
                    dataAccess.Close();
                    dtBOM.AcceptChanges();
                }
            }
            catch (Exception ex)
            {
                SysMessage.ErrorMsg(ex.Message);
            }
        }
 public String CleanFromChars(String Input, StringTools.StringAnalyzers.ContainsEntities AllowedSymbols)
 {
     return StringTools.SubstringHelpers.CleanFromChars(Input, AllowedSymbols);
 }
 private static string getPkTupleTypeArguments(TableColumns tableColumns)
 {
     return(StringTools.ConcatenateWithDelimiter(", ", tableColumns.KeyColumns.Select(i => i.DataTypeName).ToArray()));
 }
Exemplo n.º 9
0
        /// <summary>
        /// Возвращает подстроку из входной строки, которая отчитывается от начала или от конца и до указанного вхожденя указанного токена.
        /// </summary>
        /// <param name="Input"></param>
        /// <param name="Token"></param>
        /// <param name="Number">Номер вхождения указанного токена, начиная с 1</param>
        /// <param name="Dir"></param>
        /// <param name="ComparisonType"></param>
        /// <returns></returns>
        public static String GetSubstringToTokenWithSpecifiedNumber(String Input, String Token, Byte Number, StringTools.Direction Dir, StringComparison ComparisonType)
        {
            if (Input.IsStringNullEmptyWhiteSpace() == true) { throw new ArgumentException("Входная строка не может быть NULL, пустой или состоящей из одних пробелов", "Input"); }
            if (Token.IsStringNullOrEmpty() == true) { throw new ArgumentException("Токен не может быть NULL или пустой строкой", "Token"); }
            if (Enum.IsDefined(ComparisonType.GetType(), ComparisonType) == false)
            { throw new InvalidEnumArgumentException("ComparisonType", (Int32)ComparisonType, ComparisonType.GetType()); }
            if (String.Compare(Input, Token, ComparisonType) == 0) { throw new ArgumentException("Входная строка не может быть равна токену"); }
            if (Input.Contains(Token, ComparisonType) == false) { return Input; }
            if (Number == 0) { throw new ArgumentOutOfRangeException("Number", "Номер вхождения указанного токена не может быть нулевой"); }
            Int32 nums_of_occureses = StringTools.StringAnalyzers.GetNumberOfOccurencesInString(Input, Token, ComparisonType);
            if (Number > nums_of_occureses) { throw new ArgumentOutOfRangeException("Number", Number, "Указанная позиция больше, чем количество вхождений токена в строке"); }

            List<int> positions = StringTools.StringAnalyzers.GetPositionsOfTokenInString(Input, Token, ComparisonType);

            Int32 token_length = Token.Length;
            Int32 desired_position;
            switch (Dir)
            {
                case StringTools.Direction.FromStartToEnd:
                    desired_position = positions[Number - 1];
                    return Input.Substring(0, desired_position);
                case StringTools.Direction.FromEndToStart:
                    desired_position = positions[positions.Count - Number];
                    return Input.Substring(desired_position + token_length);
                default:
                    throw new InvalidEnumArgumentException("Dir", (Int32)Dir, Dir.GetType());
            }
        }
Exemplo n.º 10
0
 /// <summary>
 /// Возвращает часть указанной входной строки, которая размещена от начала или от конца и до первого указанного токена
 /// </summary>
 /// <param name="Input">Входящая строка, из которой надо извлечь подстроку</param>
 /// <param name="Token">Токен, который определяет конец подстроки</param>
 /// <param name="LeaveToken">Если "true" - ближайший токен будет оставлен. Если "false" - он тоже будет удалён.</param>
 /// <param name="Dir">Направление, с которого будет возвращена подстрока: из начала или из конца</param>
 /// <param name="CompareOptions">Опции сравнения строк между собой</param>
 /// <returns></returns>
 public static string GetSubstringToToken(String Input, String Token, Boolean LeaveToken, StringTools.Direction Dir, StringComparison CompareOptions)
 {
     if (Input.IsStringNullEmptyWhiteSpace() == true) { throw new ArgumentException("Входная строка не может быть NULL, пустой или состоящей из одних пробелов", "Input"); }
     if (Token.IsStringNullOrEmpty() == true) { throw new ArgumentException("Токен не может быть NULL или пустой строкой", "Token"); }
     if (String.Compare(Input, Token, CompareOptions) == 0) { throw new ArgumentException("Входная строка не может быть равна токену"); }
     if (Input.Contains(Token, CompareOptions) == false) { return Input; }
     Int32 input_length = Input.Length;
     String temp;
     switch (Dir)
     {
         case StringTools.Direction.FromStartToEnd:
             Int32 index_of_first_token = Input.IndexOf(Token, CompareOptions);
             temp = Input.Substring(0, index_of_first_token);
             if (LeaveToken == false) { return temp; }
             else { return temp + Token; }
         case StringTools.Direction.FromEndToStart:
             Int32 token_length = Token.Length;
             Int32 index_of_last_token = Input.LastIndexOf(Token, CompareOptions);
             temp = SubstringFromEnd(Input, (input_length - (index_of_last_token + token_length)), true);
             if (LeaveToken == false) { return temp; }
             else { return Token + temp; }
         default:
             throw new InvalidEnumArgumentException("Dir", (Int32)Dir, Dir.GetType());
     }
 }
Exemplo n.º 11
0
        /// <summary>
        /// Возвращает искомую подстроку из указанной строки, которые находятся между наборами указанных начальных и конечных токенов 
        /// в правильной последовательности. Если каких-либо или всех указанных токенов не найдено, или их реальный порядок не совпадает с указанным, 
        /// возвращается пустой список подстрок.
        /// </summary>
        /// <param name="Input">Входная строка, содержащая токены, и внутри которой происходит поиск. Входная строка не может быть NULL, пустой или состоящей из одних пробелов.</param>
        /// <param name="StartTokens">Список начальных токенов в определённой последовательности, которая будет соблюдена при поиске подстрок. 
        /// Не может быть NULL или пустым, но может содержать единственный элемент.</param>
        /// <param name="EndTokens">Список конечных токенов в определённой последовательности, которая будет соблюдена при поиске подстрок. 
        /// Не может быть NULL или пустым, но может содержать единственный элемент.</param>
        /// <param name="EndTokensSearchDirection">Задаёт направление поиска конечных токенов после того, как найдены все начальные. 
        /// FromEndToStart - поиск ведётся от самого конца строки и продвигается до последнего начального токена до тех пор, пока не найдёт все конечные токены. 
        /// FromStartToEnd - поиск ведётся от конца последнего начального токена до конца строки.</param>
        /// <param name="StartIndex">Позиция (включительная) начала поиска во входной строке. Если 0 - поиск ведётся с начала. 
        /// Если меньше 0 или больше длины входной строки - выбрасывается исключение.</param>
        /// <param name="CompOpt">Опции сравнения строк между собой</param>
        /// <exception cref="ArgumentException"></exception>
        /// <returns>Искомая подстрока. Если не найдена, возвращается NULL.</returns>
        public static Substring GetInnerStringBetweenTokensSet(String Input, String[] StartTokens, String[] EndTokens,
            StringTools.Direction EndTokensSearchDirection, Int32 StartIndex, StringComparison CompOpt)
        {
            if(Input == null){throw new ArgumentNullException("Input");}
            if (Input.IsStringNullEmptyWhiteSpace() == true)
            { throw new ArgumentException("Входная строка не может быть NULL, пустой или состоящей из одних пробелов", "Input"); }

            if (StartTokens.IsNullOrEmpty())
            { throw new ArgumentException("Список начальных токенов не может быть NULL или пустым", "StartTokens"); }
            if (EndTokens.IsNullOrEmpty())
            { throw new ArgumentException("Список конечных токенов не может быть NULL или пустым", "EndTokens"); }
            if (StartIndex < 0) { throw new ArgumentOutOfRangeException("StartIndex", StartIndex, "Позиция начала поиска не может быть меньше 0"); }
            if (StartIndex >= Input.Length)
            {
                throw new ArgumentOutOfRangeException("StartIndex", StartIndex,
                  String.Format("Позиция начала поиска ('{0}') не может быть больше или равна длине строки ('{1}')", StartIndex, Input.Length));
            }
            if (Enum.IsDefined(typeof(StringTools.Direction), EndTokensSearchDirection) == false)
            { throw new InvalidEnumArgumentException("EndTokensSearchDirection", (Int32)EndTokensSearchDirection, typeof(StringTools.Direction)); }

            if (Enum.IsDefined(typeof(StringComparison), (Int32)CompOpt) == false)
            { throw new InvalidEnumArgumentException("CompOpt", (Int32)CompOpt, typeof(StringComparison)); }

            Int32 internal_offset = StartIndex;

            for (Int32 one_start_token_index = 0; one_start_token_index < StartTokens.Length; one_start_token_index++)
            {
                String current_start_token = StartTokens[one_start_token_index];
                Int32 current_start_token_pos = Input.IndexOf(current_start_token, internal_offset, CompOpt);
                if (current_start_token_pos == -1)
                {
                    return null;
                }
                else
                {
                    internal_offset = current_start_token_pos + current_start_token.Length;
                }
            }
            Int32 final_substr_start_index = internal_offset;

            if (EndTokensSearchDirection == StringTools.Direction.FromEndToStart)
            {
                Int32 end_offset = Input.Length - 1;

                for (Int32 one_end_token_index = EndTokens.Length - 1; one_end_token_index >= 0; one_end_token_index--)
                {
                    String current_end_token = EndTokens[one_end_token_index];
                    Int32 count_to_search = end_offset - final_substr_start_index;
                    Int32 current_end_token_pos = Input.LastIndexOf(current_end_token, end_offset, count_to_search, CompOpt);
                    if (current_end_token_pos == -1)
                    {
                        return null;
                    }
                    else
                    {
                        end_offset = current_end_token_pos;
                    }
                }
                return Substring.FromIndexToIndex(Input, final_substr_start_index, end_offset - 1);
            }
            else// if (EndTokensSearchDirection == StringTools.Direction.FromStartToEnd)
            {
                Int32 final_substr_end_index = 0;

                for (Int32 one_end_token_index = 0; one_end_token_index < EndTokens.Length; one_end_token_index++)
                {
                    String current_end_token = EndTokens[one_end_token_index];

                    Int32 current_end_token_pos = Input.IndexOf(current_end_token, internal_offset, CompOpt);
                    if (current_end_token_pos == -1)
                    {
                        return null;
                    }
                    internal_offset = current_end_token_pos + current_end_token.Length;
                    if (final_substr_end_index == 0)
                    {
                        final_substr_end_index = current_end_token_pos;
                    }
                }
                return Substring.FromIndexToIndex(Input, final_substr_start_index, final_substr_end_index - 1);
            }
        }
Exemplo n.º 12
0
 /// <summary>
 /// Возвращает искомую подстроку из указанной исходной строки, которая размещена между указанным начальным и конечным токеном. 
 /// Ведёт поиск токенов от начала или он указанной начальной позиции до конца строки, и возвращает первое попавшееся совпадение. 
 /// Если указанных токенов не найдено, возвращает NULL.
 /// </summary>
 /// <param name="Input">Входная строка, содержащая токены, и внутри которой происходит поиск. Не может быть NULL, пустой или состоящей из одних пробелов.</param>
 /// <param name="StartToken">Начальный токен. Не может быть NULL или пустой строкой.</param>
 /// <param name="EndToken">Конечный токен. Не может быть NULL или пустой строкой.</param>
 /// <param name="StartIndex">Начальная позиция исходной строки, с которой включительно начинается поиск. Если 0 - поиск ведётся с начала. 
 /// Если меньше 0 или больше длины исходной строки, выбрасывается исключение.</param>
 /// <param name="EndIndex">Конечная позиция исходной строки, на которой включительно останавливается поиск и за которую не выходит. 
 /// Если больше фактической длины строки, 0 или меньше 0, поиск ведётся до конца строки. 
 /// Если больше нуля и меньше или равно ненулевой начальной позиции, выбрасывается исключение.</param>
 /// <param name="IncludeTokens">Определяет, следует ли включать начальный и конечный токены в возвращаемую подстроку (true) или нет (false)</param>
 /// <param name="EndTokenSearchDirection">Задаёт направление поиска конечного токена после того, как найден начальный. 
 /// FromEndToStart - поиск ведётся от самого конца входной строки и продвигается до найденного начального токена до тех пор, пока не найдёт конечный токен. 
 /// FromStartToEnd - поиск ведётся от конца найденного начального токена до конца входной строки.</param>
 /// <param name="ComparisonType">Опции сравнения строк между собой</param>
 /// <returns>NULL - если не нашло</returns>
 public static Substring GetInnerStringBetweenTokens(String Input, String StartToken, String EndToken,
     Int32 StartIndex, Int32 EndIndex, Boolean IncludeTokens, StringTools.Direction EndTokenSearchDirection, StringComparison ComparisonType)
 {
     if (Input.IsStringNullEmptyWhiteSpace() == true) throw new ArgumentException("Входная строка не может быть NULL, пустой или состоящей из одних пробелов", "Input");
     if (StartToken.IsStringNullOrEmpty() == true) throw new ArgumentException("Начальный токен не может быть NULL или пустой строкой", "StartToken");
     if (EndToken.IsStringNullOrEmpty() == true) throw new ArgumentException("Конечный токен не может быть NULL или пустой строкой", "EndToken");
     if (StartIndex < 0) { throw new ArgumentOutOfRangeException("StartIndex", StartIndex, "Начальная позиция не может быть меньше 0"); }
     if (StartIndex >= Input.Length)
     { throw new ArgumentOutOfRangeException("StartIndex", StartIndex, String.Format("Начальная позиция ('{0}') не может быть больше или равна длине строки ('{1}')", StartIndex, Input.Length)); }
     if (EndIndex <= 0 || EndIndex >= Input.Length)
     {
         EndIndex = Input.Length - 1;
     }
     if (EndIndex <= StartIndex)
     { throw new ArgumentOutOfRangeException("EndIndex", EndIndex, String.Format("Конечная позиция ('{0}') не может быть меньше или равна начальной позиции ('{1}')", EndIndex, StartIndex)); }
     if (Enum.IsDefined(EndTokenSearchDirection.GetType(), EndTokenSearchDirection) == false)
     { throw new InvalidEnumArgumentException("EndTokenSearchDirection", (Int32)EndTokenSearchDirection, EndTokenSearchDirection.GetType()); }
     if (Enum.IsDefined(typeof(StringComparison), ComparisonType) == false)
     { throw new InvalidEnumArgumentException("ComparisonType", (Int32)ComparisonType, typeof(StringComparison)); }
     Int32 start_token_start_pos = Input.IndexOf(StartToken, StartIndex, (EndIndex - StartIndex + 1), ComparisonType);
     if (start_token_start_pos == -1)
     {
         return null;
     }
     Int32 end_token_start_pos;
     if (EndTokenSearchDirection == StringTools.Direction.FromStartToEnd)
     {
         Int32 search_start_index = start_token_start_pos + StartToken.Length;
         Int32 count = EndIndex - search_start_index + 1;
         end_token_start_pos = Input.IndexOf(EndToken, search_start_index, count, ComparisonType);
     }
     else// if (EndTokenSearchDirection == StringTools.Direction.FromEndToStart)
     {
         Int32 start_index = EndIndex;
         Int32 count = EndIndex - start_token_start_pos + StartToken.Length;
         end_token_start_pos = Input.LastIndexOf(EndToken, start_index, count, ComparisonType);
     }
     if (end_token_start_pos == -1)
     {
         return null;
     }
     Substring output;
     if (IncludeTokens == false)
     {
         output = Substring.FromIndexToIndex(Input, start_token_start_pos + StartToken.Length, end_token_start_pos - 1);
     }
     else
     {
         output = Substring.FromIndexToIndex(Input, start_token_start_pos, end_token_start_pos + EndToken.Length - 1);
     }
     return output;
 }
 public String TruncateToClosestToken(String Input, String Token, Boolean LeaveToken, StringTools.Direction Dir, StringComparison CompareOptions)
 {
     return StringTools.SubstringHelpers.TruncateToClosestToken(Input, Token, LeaveToken, Dir, CompareOptions);
 }
 public String GetSubstringToTokenWithSpecifiedNumber1(String Input, String Token, Byte Number, StringTools.Direction Dir, StringComparison CompareOptions)
 {
     return StringTools.SubstringHelpers.GetSubstringToTokenWithSpecifiedNumber(Input, Token, Number, Dir, CompareOptions);
 }
        private void editSoHieuXe_TextChanged(object sender, EventArgs e)
        {
            string SoHieuXe = StringTools.TrimSpace(editSoHieuXe.Text);

            if (SoHieuXe.Length <= 0)
            {
                return;
            }

            if (!Xe.KiemTraTonTaiCuaSoHieuXe(SoHieuXe))
            {
                g_boolValidate = false;

                errorProvider.SetError(editSoHieuXe, "Số hiệu xe này không tồn tại");
                // new MessageBox.MessageBox().Show(this, "Số hiệu xe này không tồn tại", "Thông báo", Taxi.MessageBox.MessageBoxButtons.OK, Taxi.MessageBox.MessageBoxIcon.Warning);
                editTenLaiXe.Text = "";
                return;
            }
            else
            {
                KiemSoatXeLienLac objKSXe = new KiemSoatXeLienLac();
                objKSXe = KiemSoatXeLienLac.GetKSXe_BySoHieuXe(SoHieuXe); // số hiệu xe này đã được khai báo trước đó.
                if (objKSXe != null)
                {
                    if (StringTools.TrimSpace(editTenLaiXe.Text).Length <= 0)
                    {
                        editTenLaiXe.Text = objKSXe.MaLaiXe;
                    }
                }
                if (KiemSoatXeLienLac.CheckXeDangHoatDong(SoHieuXe))
                {
                    if (mKieuBao == 1) // xe hoạt động
                    {
                        g_boolValidate = false;
                        errorProvider.SetError(editSoHieuXe, "Xe đang hoạt động. Bạn cần kiểm tra lại.");
                        new MessageBox.MessageBox().Show(this, "Xe đang hoạt động, bạn không thể nhập lại trạng thái này", "Thông báo", Taxi.MessageBox.MessageBoxButtons.OK, Taxi.MessageBox.MessageBoxIcon.Warning);
                        return;
                    }
                    else if (mKieuBao == 4)
                    {
                        Xe objXe = new Xe();
                        editViTriBao.Text = objXe.GetChiTietXe(SoHieuXe).GaraName;
                        if (StringTools.TrimSpace(editViTriBao.Text).Length <= 0)
                        {
                            editViTriBao.Text = "Gara";
                        }
                    }
                }
                else
                {                      // lấy thông tin nhập cho xe haọt động
                    if (mKieuBao == 1) // xe hoạt động
                    {
                        Xe objXe = new Xe();
                        editViTriBao.Text = objXe.GetChiTietXe(SoHieuXe).GaraName;
                        objXe             = null;
                    }
                    else if (mKieuBao == 2 || mKieuBao == 3 || mKieuBao == 4) // xe hoạt điểm
                    {
                        g_boolValidate  = false;
                        lblMessage.Text = "Xe chưa hoạt động bạn cần phải cho xe ra hoạt động"; return;
                    }
                }
            }
            g_boolValidate = true;
            errorProvider.SetError(editSoHieuXe, "");
        }
Exemplo n.º 16
0
        /// <summary>
        /// Возвращает исходную строку, в которой обрезана её часть от начала или от конца до ближайшего указанного токена
        /// </summary>
        /// <param name="Input">Входящая строка, из которой надо извлечь подстроку</param>
        /// <param name="Token">Токен, который определяет точку обрезания и также обрезается</param>
        /// <param name="LeaveToken">Если "true" - ближайший токен будет оставлен. Если "false" - он тоже будет удалён.</param>
        /// <param name="Dir">Направление, с которого будет обрезана подстрока: из начала или из конца</param>
        /// <param name="ComparisonType">Опции сравнения строк между собой</param>
        /// <returns></returns>
        public static String TruncateToClosestToken(String Input, String Token, Boolean LeaveToken, StringTools.Direction Dir, StringComparison ComparisonType)
        {
            if (Input.IsStringNullEmptyWhiteSpace() == true) { throw new ArgumentException("Входная строка не может быть NULL, пустой или состоящей из одних пробелов", "Input"); }
            if (Token.IsStringNullOrEmpty() == true) { throw new ArgumentException("Токен не может быть NULL или пустой строкой", "Token"); }
            if (Enum.IsDefined(ComparisonType.GetType(), ComparisonType) == false)
            { throw new InvalidEnumArgumentException("ComparisonType", (Int32)ComparisonType, ComparisonType.GetType()); }
            if (String.Compare(Input, Token, ComparisonType) == 0) { throw new ArgumentException("Входная строка не может быть равна токену"); }
            if (Input.Contains(Token, ComparisonType) == false) { return Input; }
            Int32 token_length = Token.Length;
            switch (Dir)
            {
                case StringTools.Direction.FromStartToEnd:
                    Int32 index_of_first_token = Input.IndexOf(Token, ComparisonType);
                    if (LeaveToken == true)
                    {
                        return Input.Remove(0, index_of_first_token);
                    }
                    else
                    {
                        return Input.Remove(0, index_of_first_token + token_length);
                    }

                case StringTools.Direction.FromEndToStart:

                    Int32 index_of_last_token = Input.LastIndexOf(Token, ComparisonType);
                    if (LeaveToken == true)
                    {
                        return Input.Remove(index_of_last_token + token_length);
                    }
                    else
                    {
                        return Input.Remove(index_of_last_token);
                    }
                default:
                    throw new InvalidEnumArgumentException("Dir", (Int32)Dir, Dir.GetType());
            }
        }
        internal static void Generate(DBConnection cn, TextWriter writer, string namespaceDeclaration, IDatabase database, IEnumerable <Table> tables, Database configuration)
        {
            writer.WriteLine(namespaceDeclaration);
            foreach (var table in tables)
            {
                try {
                    CodeGenerationStatics.AddSummaryDocComment(writer, "Contains logic that retrieves rows from the " + table + " table.");
                    writer.WrapInTableNamespaceIfNecessary(
                        table,
                        () => {
                        writer.WriteLine($"public static partial class {table.GetTableRetrievalClassDeclaration()} {{");

                        var isRevisionHistoryTable = DataAccessStatics.IsRevisionHistoryTable(table.Name, configuration);
                        var columns = new TableColumns(cn, table.ObjectIdentifier, isRevisionHistoryTable);

                        // Write nested classes.
                        DataAccessStatics.WriteRowClasses(
                            writer,
                            columns.AllColumns,
                            localWriter => {
                            if (!isRevisionHistoryTable)
                            {
                                return;
                            }
                            writer.WriteLine(
                                "public UserTransaction Transaction { get { return RevisionHistoryStatics.UserTransactionsById[ RevisionHistoryStatics.RevisionsById[ System.Convert.ToInt32( " +
                                Utility.GetCSharpIdentifier(columns.PrimaryKeyAndRevisionIdColumn.PascalCasedNameExceptForOracle) + " ) ].UserTransactionId ]; } }");
                        },
                            localWriter => {
                            if (!columns.DataColumns.Any())
                            {
                                return;
                            }

                            var modClass = "Modification." + table.GetStandardModificationClassReference();
                            var revisionHistorySuffix = StandardModificationStatics.GetRevisionHistorySuffix(isRevisionHistoryTable);
                            writer.WriteLine("public " + modClass + " ToModification" + revisionHistorySuffix + "() {");
                            writer.WriteLine(
                                "return " + modClass + ".CreateForSingleRowUpdate" + revisionHistorySuffix + "( " + StringTools.ConcatenateWithDelimiter(
                                    ", ",
                                    columns.AllColumnsExceptRowVersion.Select(i => Utility.GetCSharpIdentifier(i.PascalCasedNameExceptForOracle)).ToArray()) + " );");
                            writer.WriteLine("}");
                        });
                        writeCacheClass(
                            cn,
                            writer,
                            database,
                            table,
                            columns,
                            isRevisionHistoryTable);

                        var isSmallTable = configuration.SmallTables != null && configuration.SmallTables.Any(i => i.EqualsIgnoreCase(table.ObjectIdentifier));

                        var tableUsesRowVersionedCaching = configuration.TablesUsingRowVersionedDataCaching != null &&
                                                           configuration.TablesUsingRowVersionedDataCaching.Any(i => i.EqualsIgnoreCase(table.ObjectIdentifier));
                        if (tableUsesRowVersionedCaching && columns.RowVersionColumn == null && !(cn.DatabaseInfo is OracleInfo))
                        {
                            throw new ApplicationException(
                                cn.DatabaseInfo is MySqlInfo
                                                                                ? "Row-versioned data caching cannot currently be used with MySQL databases."
                                                                                : "Row-versioned data caching can only be used with the {0} table if you add a rowversion column.".FormatWith(table));
                        }

                        if (isSmallTable)
                        {
                            writeGetAllRowsMethod(writer, isRevisionHistoryTable, false);
                        }
                        writeGetRowsMethod(
                            cn,
                            writer,
                            database,
                            table,
                            columns,
                            isSmallTable,
                            tableUsesRowVersionedCaching,
                            isRevisionHistoryTable,
                            false,
                            configuration.CommandTimeoutSecondsTyped);
                        if (isRevisionHistoryTable)
                        {
                            if (isSmallTable)
                            {
                                writeGetAllRowsMethod(writer, true, true);
                            }
                            writeGetRowsMethod(
                                cn,
                                writer,
                                database,
                                table,
                                columns,
                                isSmallTable,
                                tableUsesRowVersionedCaching,
                                true,
                                true,
                                configuration.CommandTimeoutSecondsTyped);
                        }

                        writeGetRowMatchingPkMethod(
                            cn,
                            writer,
                            database,
                            table,
                            columns,
                            isSmallTable,
                            tableUsesRowVersionedCaching,
                            isRevisionHistoryTable,
                            configuration.CommandTimeoutSecondsTyped);

                        if (isRevisionHistoryTable)
                        {
                            DataAccessStatics.WriteGetLatestRevisionsConditionMethod(writer, columns.PrimaryKeyAndRevisionIdColumn.Name);
                        }

                        if (tableUsesRowVersionedCaching)
                        {
                            var keyTupleTypeArguments = getPkAndVersionTupleTypeArguments(cn, columns);

                            writer.WriteLine($"private static Cache<{TypeNames.Tuple}<{keyTupleTypeArguments}>, BasicRow> getRowsByPkAndVersion() {{");
                            var first  = $"VersionedRowDataCache<{TypeNames.Tuple}<{getPkTupleTypeArguments( columns )}>, {TypeNames.Tuple}<{keyTupleTypeArguments}>, BasicRow>";
                            var second = table.Name.TableNameToPascal(cn) + "TableRetrievalRowsByPkAndVersion";
                            var third  = StringTools.ConcatenateWithDelimiter(", ", Enumerable.Range(1, columns.KeyColumns.Count()).Select(i => "i.Item{0}".FormatWith(i)));
                            writer.WriteLine(
                                $@"return AppMemoryCache.GetCacheValue<{first}>( ""{second}"", () => new {first}( i => {TypeNames.Tuple}.Create( {third} ) ) ).RowsByPkAndVersion;");
                            writer.WriteLine("}");
                        }

                        // Initially we did not generate this method for small tables, but we found a need for it when the cache is disabled since that will cause
                        // GetRowMatchingId to repeatedly query.
                        if (columns.KeyColumns.Count() == 1 && columns.KeyColumns.Single().Name.ToLower().EndsWith("id"))
                        {
                            writeToIdDictionaryMethod(writer, columns);
                        }

                        writer.WriteLine("}");                                   // class
                    });
                }
                catch (Exception e) when(!(e is UserCorrectableException))
                {
                    throw new ApplicationException($"An error occurred while generating TableRetrieval logic for the '{table}' table.", e);
                }
            }

            writer.WriteLine("}");               // namespace
        }
Exemplo n.º 18
0
        /// <summary>
        /// 保存数据,并返回是否保存成功
        /// <param name="bShowSuccessMsg">保存成功时是否弹出提示信息</param>
        /// </summary>
        public bool Save(bool bShowSuccessMsg)
        {
            bool bSuccess = true;

            try
            {
                #region 前期验证
                if (txt_产品编号.Text.Trim().Length == 0)
                {
                    SysMessage.InformationMsg("产品编号不能为空!");
                    txt_产品编号.Focus();
                    return(false);
                }
                if (txt_商品编码.Text.Trim().Length == 0)
                {
                    SysMessage.InformationMsg("商品编码不能为空!");
                    txt_商品编码.Focus();
                    return(false);
                }
                #endregion
                StringBuilder strBuilder = new StringBuilder();
                if (rowHead.RowState == DataRowState.Added)
                {
                    #region 新增数据
                    IDataAccess dataAccess = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_Manufacture);
                    dataAccess.Open();
                    dataAccess.BeginTran();
                    try
                    {
                        #region 新增表头数据
                        strBuilder.AppendLine(@"INSERT INTO [归并后料件清单]([电子帐册号],[序号],[产品编号],[商品编码],[商品名称],[商品规格],[产销国]
           ,[计量单位],[法定单位],[换算因子],[单价],[损耗率],[币种],[主料],[四位大类序号])");
                        strBuilder.AppendFormat("VALUES({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14})",
                                                rowHead["电子帐册号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["电子帐册号"].ToString()),
                                                rowHead["序号"] == DBNull.Value ? "NULL" : rowHead["序号"].ToString(),
                                                rowHead["产品编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["产品编号"].ToString()),
                                                rowHead["商品编码"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["商品编码"].ToString()),
                                                rowHead["商品名称"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["商品名称"].ToString()),
                                                rowHead["商品规格"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["商品规格"].ToString()),
                                                rowHead["产销国"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["产销国"].ToString()),
                                                rowHead["计量单位"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["计量单位"].ToString()),
                                                rowHead["法定单位"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["法定单位"].ToString()),
                                                rowHead["换算因子"] == DBNull.Value ? "NULL" : rowHead["换算因子"],
                                                rowHead["单价"] == DBNull.Value ? "NULL" : rowHead["单价"],
                                                rowHead["损耗率"] == DBNull.Value ? "NULL" : rowHead["损耗率"],
                                                rowHead["币种"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["币种"].ToString()),
                                                rowHead["主料"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["主料"].ToString()),
                                                rowHead["四位大类序号"] == DBNull.Value ? "NULL" : rowHead["四位大类序号"]);
                        strBuilder.AppendLine("select @@IDENTITY--新增预先录入订单时,自动生成的订单ID");
                        DataTable dtInsert = dataAccess.GetTable(strBuilder.ToString(), null);
                        object    归并后料件id  = dtInsert.Rows[0][0]; // dataAccess.ExecScalar(strBuilder.ToString(), null);
                        rowHead["归并后料件id"] = 归并后料件id;
                        strBuilder.Clear();
                        #endregion

                        #region 新增明细数据
                        foreach (DataRow row in dtDetails.Rows)
                        {
                            if (row["产品编号"] == DBNull.Value || row["产品编号"].ToString().Trim().Length == 0)
                            {
                                continue;
                            }
                            strBuilder.AppendLine("INSERT INTO [归并前料件清单]([归并后料件id],[产品编号],[序号],[商品规格],[对应编号],[单价])");
                            strBuilder.AppendFormat("VALUES({0},{1},{2},{3},{4},{5})",
                                                    归并后料件id, row["产品编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["产品编号"].ToString()),
                                                    row["序号"] == DBNull.Value ? "NULL" : row["序号"],
                                                    row["商品规格"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["商品规格"].ToString()),
                                                    row["对应编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["对应编号"].ToString()),
                                                    row["单价"] == DBNull.Value ? "NULL" : row["单价"]);
                            strBuilder.AppendLine("select @@IDENTITY--新增预先录入订单时,自动生成的订单ID");
                            object 归并前料件id = dataAccess.ExecScalar(strBuilder.ToString(), null);
                            strBuilder.Clear();
                            row["归并前料件id"] = 归并前料件id;
                        }
                        #endregion

                        giOrderID = Convert.ToInt32(归并后料件id);
                        dataAccess.CommitTran();
                        dataAccess.Close();
                    }
                    catch (Exception ex)
                    {
                        dataAccess.RollbackTran();
                        dataAccess.Close();
                        throw new Exception(ex.Message);
                    }
                    #endregion
                }
                else //if (rowHead.RowState == DataRowState.Modified || (dtDetails.GetChanges() !=null && dtDetails.GetChanges().Rows.Count>0))
                {
                    #region 修改数据
                    IDataAccess dataAccess = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_Manufacture);
                    dataAccess.Open();
                    dataAccess.BeginTran();
                    try
                    {
                        #region 修改表头数据
                        if (rowHead.RowState == DataRowState.Modified)
                        {
                            strBuilder.AppendFormat(@"UPDATE [归并后料件清单]
   SET [电子帐册号] = {0},[序号] = {1},[产品编号] = {2},[商品编码] = {3},[商品名称] = {4},[商品规格] = {5},[产销国] = {6},[计量单位] = {7},
   [法定单位] ={8},[换算因子] = {9},[单价] = {10},[损耗率] ={11},[币种] ={12},[主料] = {13},[四位大类序号] ={14} where 归并后料件id={15}",
                                                    rowHead["电子帐册号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["电子帐册号"].ToString()),
                                                    rowHead["序号"] == DBNull.Value ? "NULL" : rowHead["序号"].ToString(),
                                                    rowHead["产品编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["产品编号"].ToString()),
                                                    rowHead["商品编码"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["商品编码"].ToString()),
                                                    rowHead["商品名称"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["商品名称"].ToString()),
                                                    rowHead["商品规格"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["商品规格"].ToString()),
                                                    rowHead["产销国"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["产销国"].ToString()),
                                                    rowHead["计量单位"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["计量单位"].ToString()),
                                                    rowHead["法定单位"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["法定单位"].ToString()),
                                                    rowHead["换算因子"] == DBNull.Value ? "NULL" : rowHead["换算因子"],
                                                    rowHead["单价"] == DBNull.Value ? "NULL" : rowHead["单价"],
                                                    rowHead["损耗率"] == DBNull.Value ? "NULL" : rowHead["损耗率"],
                                                    rowHead["币种"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["币种"].ToString()),
                                                    rowHead["主料"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rowHead["主料"].ToString()),
                                                    rowHead["四位大类序号"] == DBNull.Value ? "NULL" : rowHead["四位大类序号"],
                                                    rowHead["归并后料件id"]);
                            dataAccess.ExecuteNonQuery(strBuilder.ToString(), null);
                            strBuilder.Clear();
                        }
                        #endregion

                        #region 处理明细数据
                        foreach (DataRow row in dtDetails.Rows)
                        {
                            #region 新增表身数据
                            if (row.RowState == DataRowState.Added)
                            {
                                if (row["产品编号"] == DBNull.Value || row["产品编号"].ToString().Trim().Length == 0)
                                {
                                    continue;
                                }
                                strBuilder.AppendLine("INSERT INTO [归并前料件清单]([归并后料件id],[产品编号],[序号],[商品规格],[对应编号],[单价])");
                                strBuilder.AppendFormat("VALUES({0},{1},{2},{3},{4},{5})",
                                                        rowHead["归并后料件id"], row["产品编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["产品编号"].ToString()),
                                                        row["序号"] == DBNull.Value ? "NULL" : row["序号"],
                                                        row["商品规格"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["商品规格"].ToString()),
                                                        row["对应编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["对应编号"].ToString()),
                                                        row["单价"] == DBNull.Value ? "NULL" : row["单价"]);
                                strBuilder.AppendLine("select @@IDENTITY--新增预先录入订单时,自动生成的订单ID");
                                object 归并前料件id = dataAccess.ExecScalar(strBuilder.ToString(), null);
                                strBuilder.Clear();
                                row["归并前料件id"] = 归并前料件id;
                            }
                            #endregion

                            #region  除表身数据
                            else if (row.RowState == DataRowState.Deleted)
                            {
                                if (row["归并前料件id", DataRowVersion.Original] == DBNull.Value)
                                {
                                    continue;
                                }
                                strBuilder.AppendFormat(@"DELETE FROM [归并前料件清单] WHERE 归并前料件id={0}", row["归并前料件id", DataRowVersion.Original]);
                                dataAccess.ExecuteNonQuery(strBuilder.ToString(), null);
                                strBuilder.Clear();
                            }
                            #endregion

                            #region 修改表身数据
                            else if (row.RowState == DataRowState.Modified)
                            {
                                if (row["归并前料件id"] == DBNull.Value)
                                {
                                    continue;
                                }
                                if (row["产品编号"] == DBNull.Value || row["产品编号"].ToString().Trim().Length == 0)
                                {
                                    strBuilder.AppendFormat(@"DELETE FROM [归并前料件清单] WHERE 归并前料件id={0}", row["归并前料件id"]);
                                }
                                else
                                {
                                    strBuilder.AppendFormat(@"UPDATE [归并前料件清单] SET [归并后料件id] = {0},[产品编号] = {1},
                                                        [序号] = {2},[商品规格] = {3},[对应编号] = {4},[单价] = {5} WHERE [归并前料件id]={6}",
                                                            rowHead["归并后料件id"], row["产品编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["产品编号"].ToString()),
                                                            row["序号"] == DBNull.Value ? "NULL" : row["序号"],
                                                            row["商品规格"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["商品规格"].ToString()),
                                                            row["对应编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(row["对应编号"].ToString()),
                                                            row["单价"] == DBNull.Value ? "NULL" : row["单价"],
                                                            row["归并前料件id"]);
                                }
                                dataAccess.ExecuteNonQuery(strBuilder.ToString(), null);
                                strBuilder.Clear();
                            }
                            #endregion
                        }
                        #endregion

                        dataAccess.CommitTran();
                        dataAccess.Close();
                    }
                    catch (Exception ex)
                    {
                        dataAccess.RollbackTran();
                        dataAccess.Close();
                        throw new Exception(ex.Message);
                    }
                    #endregion
                }
                dtHead.AcceptChanges();
                bCellKeyPress = false;
                dtDetails.AcceptChanges();
                bCellKeyPress = true;
                if (bSuccess && bShowSuccessMsg)
                {
                    SysMessage.InformationMsg("保存成功!");
                }
                //LoadDataSourceDetails();
            }
            catch (Exception ex)
            {
                bSuccess = false;
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.AppendLine("保存数据出错:");
                strBuilder.AppendLine(ex.Message);
                SysMessage.ErrorMsg(strBuilder.ToString());
            }
            return(bSuccess);
        }
Exemplo n.º 19
0
        private void DrawLinks(IEnumerable <ThingInMemory> thingInMemories, int bIsReferences)
        {
            var   c = GUI.backgroundColor;
            Color elementColor;

            if (bIsReferences == 1)
            {
                elementColor = Color.white;
            }
            else if (bIsReferences == 2)
            {
                elementColor = new Color(0.8039f, 0.8627f, 0.2235f);
            }
            else
            {
                elementColor = new Color(0, 0.8f, 0.8f);
            }
            GUI.skin.button.alignment = TextAnchor.UpperLeft;
            foreach (var thingInMemory in thingInMemories)
            {
                bool disableGroup = thingInMemory == myInfo.memObject || thingInMemory == null;
                if (bCreateChildNodes)
                {
                    if (referencesNum < thingInMemories.Count <ThingInMemory>())
                    {
                        if (!disableGroup)
                        {
                            CreateChildNodes(thingInMemory, elementColor);
                            referencesNum++;
                        }
                    }
                }

                {
                    EditorGUI.BeginDisabledGroup(disableGroup);

                    GUI.backgroundColor = ColorFor(thingInMemory);

                    var caption = thingInMemory == null ? "null" : thingInMemory.caption;

                    var managedObject = thingInMemory as ManagedObject;
                    if (managedObject != null && managedObject.typeDescription.name == "System.String")
                    {
                        caption = StringTools.ReadString(_unpackedCrawl.managedHeap.Find(managedObject.address, _unpackedCrawl.virtualMachineInformation), _unpackedCrawl.virtualMachineInformation);
                    }

                    if (GUILayout.Button(caption))
                    {
                        var nativeObject = thingInMemory as NativeUnityEngineObject;
                        if (nativeObject != null)
                        {
                            int nodeId = parent.FindExistingObjectByInstanceID(nativeObject.instanceID);
                            if (nodeId < 0)
                            {
                                if (!disableGroup)
                                {
                                    CreateChildNodes(thingInMemory, elementColor, false);
                                }
                            }
                            else
                            {
                                parent.SetSelectedNode(nodeId);
                            }
                        }
                        var manObject = thingInMemory as ManagedObject;
                        if (manObject != null)
                        {
                            if (!disableGroup)
                            {
                                int nodeId = parent.FindExistingObjectByAddress(manObject.address);
                                if (nodeId < 0)
                                {
                                    CreateChildNodes(thingInMemory, elementColor, false);
                                }
                                else
                                {
                                    parent.SetSelectedNode(nodeId);
                                }
                            }
                        }
                        if (thingInMemory is GCHandle)
                        {
                            if (!disableGroup)
                            {
                                CreateChildNodes(thingInMemory, elementColor, false);
                            }
                        }
                        var staticFields = thingInMemory as StaticFields;
                        if (staticFields != null)
                        {
                            if (!disableGroup)
                            {
                                CreateChildNodes(thingInMemory, elementColor, false);
                            }
                        }
                    }
                    EditorGUI.EndDisabledGroup();
                }
            }
            GUI.backgroundColor = c;
        }
Exemplo n.º 20
0
        private void btnLuu_Click(object sender, EventArgs e)
        {
            Taxi.Business.BanGiaGoc.Dulieudauvaotinhtien DulieudauvaotinhtienControl = new Taxi.Business.BanGiaGoc.Dulieudauvaotinhtien();
            if (CheckGiatrinhapvao() == false)
            {
                new MessageBox.MessageBoxBA().Show("Bạn cần nhập đầy đủ thông tin");
            }
            else
            {
                if (Chechvalue() == true)
                {
                    try
                    {
                        DulieudauvaotinhtienControl.GiaTien1Chieu         = Convert.ToDouble(txtGiaTien1Chieu.Text);
                        DulieudauvaotinhtienControl.GiaTien2Chieu         = Convert.ToDouble(txtGiaTien2Chieu.Text);
                        DulieudauvaotinhtienControl.KmQuyDinh1Chieu       = Convert.ToDouble(txtKmQD1Chieu.Text);
                        DulieudauvaotinhtienControl.KmQuyDinh2Chieu       = Convert.ToDouble(txtKmQD2Chieu.Text);
                        DulieudauvaotinhtienControl.ThoiGianQuyDinh1Chieu = Convert.ToDouble(txtThoiGianQD1Chieu.Text);
                        DulieudauvaotinhtienControl.ThoiGianQuyDinh2Chieu = Convert.ToDouble(txtThoiGianQD2Chieu.Text);
                        DulieudauvaotinhtienControl.IsQuanToan            = (bool)cboViTri.SelectedValue;
                        DulieudauvaotinhtienControl.VeTram = StringTools.TrimSpace(txtVeTram.Text);
                        string TuyenDuong = lstTuyenDuong.Text;
                        Taxi.Business.BanGiaGoc.TuyenDuong TuyenDuongControl = new Taxi.Business.BanGiaGoc.TuyenDuong();
                        Dulieudauvaotinhtien Dulieudauvaotinhtienobj         = new Dulieudauvaotinhtien();
                        if (Flat == 1)
                        {
                            // Kiểm tra tuyến đưồng loại xe này đã có dữ liệu chua

                            DulieudauvaotinhtienControl.TuyenDuongID = lstTuyenDuong.SelectedValue.ToString();
                            try
                            {
                                string S = cboLoaiXe.SelectedValue.ToString();
                                DulieudauvaotinhtienControl.LoaiXeID = Convert.ToInt32(S);
                            }
                            catch
                            {
                                new MessageBox.MessageBoxBA().Show("Bạn chọn Tuyến đường !");
                                return;
                            }

                            //Kiem tra dữ liệu tuyến đuwongf loại xe đã tồn tại chưa
                            ///
                            Dulieudauvaotinhtienobj = DulieudauvaotinhtienControl.Selectone(g_IsQuanToan, DulieudauvaotinhtienControl.TuyenDuongID, DulieudauvaotinhtienControl.LoaiXeID);

                            if (Dulieudauvaotinhtienobj != null)
                            {
                                if (Dulieudauvaotinhtienobj.LoaiXeID == DulieudauvaotinhtienControl.LoaiXeID && DulieudauvaotinhtienControl.TuyenDuongID == Dulieudauvaotinhtienobj.TuyenDuongID)
                                {
                                    new MessageBox.MessageBoxBA().Show("Dữ liệu nhập cho loại xe trên tuyến đường này đã có.");
                                }
                                else
                                {
                                    int so = DulieudauvaotinhtienControl.insert(DulieudauvaotinhtienControl);
                                    if (so > 0)
                                    {
                                        Lock();
                                        string MaTuyenDuong = lstTuyenDuong.SelectedValue.ToString();
                                        LoadGiaGoc(g_IsQuanToan, MaTuyenDuong);
                                        new MessageBox.MessageBoxBA().Show("Cập nhật thành công");
                                    }
                                    else
                                    {
                                        new MessageBox.MessageBoxBA().Show("Cập nhật không thành công");
                                    }
                                }
                            }
                            else
                            {
                                int so = DulieudauvaotinhtienControl.insert(DulieudauvaotinhtienControl);
                                if (so > 0)
                                {
                                    new MessageBox.MessageBoxBA().Show("Cập nhật thành công");
                                    Lock();
                                    string MaTuyenDuong = lstTuyenDuong.SelectedValue.ToString();
                                    LoadGiaGoc(g_IsQuanToan, MaTuyenDuong);
                                }
                                else
                                {
                                    new MessageBox.MessageBoxBA().Show("Cập nhật không thành công");
                                }
                            }
                        }
                        else if (Flat == 2)
                        {
                            DulieudauvaotinhtienControl.TuyenDuongID = TuyenDuongID;

                            DulieudauvaotinhtienControl.LoaiXeID = LoaixeID;
                            int so = DulieudauvaotinhtienControl.Update(DulieudauvaotinhtienControl);
                            if (so > 0)
                            {
                                new MessageBox.MessageBoxBA().Show("Cập nhật thành công");
                                Lock();
                                string MaTuyenDuong = lstTuyenDuong.SelectedValue.ToString();
                                LoadGiaGoc(g_IsQuanToan, MaTuyenDuong);
                            }
                            else
                            {
                                new MessageBox.MessageBoxBA().Show("Cập nhật không thành công");
                            }
                        }
                    }
                    catch

                    { new MessageBox.MessageBoxBA().Show("Bạn cận chọn Tuyến đường !"); }
                }
            }
        }
Exemplo n.º 21
0
 public string NoiDungTimKhac()
 {
     return(StringTools.TrimSpace(txtTimKiem.Text));
 }
Exemplo n.º 22
0
 internal static void SetUpTableAndCaption(WebControl table, EwfTableStyle style, ReadOnlyCollection <string> classes, string caption, string subCaption)
 {
     table.CssClass = StringTools.ConcatenateWithDelimiter(" ", new[] { getTableStyleClass(style) }.Concat(classes).ToArray());
     addCaptionIfNecessary(table, caption, subCaption);
 }
Exemplo n.º 23
0
        /// <summary>
        /// 验证手册编号合法性
        /// </summary>
        /// <param name="dgv"></param>
        /// <param name="cell"></param>
        /// <returns></returns>
        private bool validate手册编号(myDataGridView dgv, DataGridViewCell cell)
        {
            string strSQL = string.Empty;

            strSQL = string.Format("SELECT 手册id, 手册编号, 有效期限, 进出口岸一 FROM 手册资料表 where 手册编号 like '%{0}%'", StringTools.SqlLikeQ(cell.EditedFormattedValue.ToString()));
            IDataAccess dataAccess = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_Uniquegrade);

            dataAccess.Open();
            DataTable dtData = dataAccess.GetTable(strSQL, null);

            dataAccess.Close();
            if (dtData.Rows.Count == 1)
            {
                DataRow row = dtData.Rows[0];
                dgv.Rows[cell.RowIndex].Cells["手册id"].Value = row["手册id"];
                dgv.Rows[cell.RowIndex].Cells["手册编号"].Value = row["手册编号"];
            }
            else if (dtData.Rows.Count > 1)
            {
                FormBaseSingleSelect formSelect = new FormBaseSingleSelect();
                formSelect.strFormText = "选择资料";
                formSelect.dtData      = dtData;
                if (formSelect.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    dgv.Rows[cell.RowIndex].Cells["手册id"].Value = formSelect.returnRow["手册id"];
                    dgv.Rows[cell.RowIndex].Cells["手册编号"].Value = formSelect.returnRow["手册编号"];
                }
                else
                {
                    dgv.CurrentCell = cell;
                    return(false);
                }
            }
            else
            {
                SysMessage.InformationMsg("此手册编号不存在!");
                dgv.CurrentCell = cell;
                return(false);
            }
            return(true);
        }
        private void PopulateItems()
        {
            bool exclusive  = ObjBooleanAnd.IsChecked ?? true;
            bool is_negated = ObjBooleanNot.IsChecked ?? false;

            MultiMapSet <string, string> tags_with_fingerprints_ALL = GetNodeItems(this.library, null);
            MultiMapSet <string, string> tags_with_fingerprints     = tags_with_fingerprints_ALL;

            // If this is exclusive mode, we want to constrain the list of items in the tree
            if (!is_negated && exclusive && 0 < selected_tags.Count)
            {
                bool             first_set = true;
                HashSet <string> exclusive_fingerprints = new HashSet <string>();
                foreach (string selected_tag in selected_tags)
                {
                    if (first_set)
                    {
                        first_set = false;
                        exclusive_fingerprints.UnionWith(tags_with_fingerprints_ALL.Get(selected_tag));
                    }
                    else
                    {
                        exclusive_fingerprints.IntersectWith(tags_with_fingerprints_ALL.Get(selected_tag));
                    }
                }

                tags_with_fingerprints = GetNodeItems(this.library, exclusive_fingerprints);
            }

            // Filter them by the user filter
            List <string> tags_eligible = null;

            if (!String.IsNullOrEmpty(TxtSearchTermsFilter.Text))
            {
                string   filter_set = TxtSearchTermsFilter.Text.ToLower();
                string[] filters    = filter_set.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < filters.Length; ++i)
                {
                    filters[i] = filters[i].Trim();
                }

                tags_eligible = new List <string>();
                foreach (string tag in tags_with_fingerprints.Keys)
                {
                    string tag_lower = tag.ToLower();
                    foreach (string filter in filters)
                    {
                        if (tag_lower.Contains(filter))
                        {
                            tags_eligible.Add(tag);
                            break;
                        }
                    }
                }
            }
            else
            {
                tags_eligible = new List <string>(tags_with_fingerprints.Keys);
            }

            // Sort the tags
            List <string> tags_sorted = new List <string>(tags_eligible);

            if (ObjSort.IsChecked ?? false)
            {
                tags_sorted.Sort(delegate(string tag1, string tag2)
                {
                    return(tags_with_fingerprints[tag2].Count - tags_with_fingerprints[tag1].Count);
                });
            }
            else
            {
                tags_sorted.Sort();
            }

            // Create the tag list to bind to
            List <GenericLibraryExplorerItem> displayed_items = new List <GenericLibraryExplorerItem>();

            foreach (string tag in tags_sorted)
            {
                GenericLibraryExplorerItem item = new GenericLibraryExplorerItem
                {
                    GenericLibraryExplorerControl = this,
                    library = this.library,

                    tag          = tag,
                    fingerprints = tags_with_fingerprints[tag],

                    OnItemDragOver = this.OnItemDragOver,
                    OnItemDrop     = this.OnItemDrop,
                    OnItemPopup    = this.OnItemPopup,

                    IsSelected = selected_tags.Contains(tag)
                };

                displayed_items.Add(item);
            }

            // Bind baby bind - tag list
            TreeSearchTerms.DataContext = displayed_items;

            // Populate the chart
            PopulateChart(tags_with_fingerprints);

            // Then we have to list the associated documents
            HashSet <string> fingerprints = new HashSet <string>();

            if (0 < selected_tags.Count)
            {
                if (exclusive)
                {
                    bool first_set = true;
                    foreach (string selected_tag in selected_tags)
                    {
                        if (first_set)
                        {
                            fingerprints.UnionWith(tags_with_fingerprints.Get(selected_tag));
                        }
                        else
                        {
                            fingerprints.IntersectWith(tags_with_fingerprints.Get(selected_tag));
                        }
                    }
                }
                else
                {
                    foreach (string selected_tag in selected_tags)
                    {
                        fingerprints.UnionWith(tags_with_fingerprints.Get(selected_tag));
                    }
                }
            }

            // Implement the NEGATION
            if (is_negated && 0 < fingerprints.Count)
            {
                HashSet <string> negated_fingerprints = this.library.GetAllDocumentFingerprints();
                fingerprints = new HashSet <string>(negated_fingerprints.Except(fingerprints));
            }

            // And build a description of them
            // Build up the descriptive span
            Span descriptive_span = new Span();

            if (!String.IsNullOrEmpty(description_title))
            {
                Bold bold = new Bold();
                bold.Inlines.Add(description_title);
                descriptive_span.Inlines.Add(bold);
                descriptive_span.Inlines.Add(": ");
            }
            string separator = exclusive ? " AND " : " OR ";

            if (is_negated)
            {
                descriptive_span.Inlines.Add("NOT [ ");
            }
            descriptive_span.Inlines.Add(StringTools.ConcatenateStrings(selected_tags, separator, 0));
            if (is_negated)
            {
                descriptive_span.Inlines.Add(" ] ");
            }
            descriptive_span.Inlines.Add(" ");
            descriptive_span.Inlines.Add(LibraryFilterHelpers.GetClearImageInline("Clear this filter.", hyperlink_clear_all_OnClick));

            if (null != OnTagSelectionChanged)
            {
                OnTagSelectionChanged(fingerprints, descriptive_span);
            }
        }
Exemplo n.º 25
0
        public override ParseFileResult GetResult()
        {
            //string matchFilenameRegex = "([^;:]*) :  ([^;:]*) :  ([^;:]*)";
            string matchFilenameRegex = "(.*?):(.*):(.*)";
            Regex  rx = new Regex(matchFilenameRegex);

            foreach (var entry in Entries)
            {
                try
                {
                    if (entry.Item.ContainsField("file"))
                    {
                        #region Do some post processing on the file

                        /*
                         * Samples:
                         *
                         *  file = {sample.pdf:files/10/sample.pdf:application/pdf}
                         *  file = {Google Books Link:undefined:text/html}
                         *  file = {chris bishop - Google Scholar:files/21/scholar.html:text/html}
                         *
                         * *NOTE THE MULTIPLE ATTACHMENTS HERE
                         * file = {Analytics_www.qiqqa.com_20100531_(Qiqqa_utilisation).pdf:files/24/Analytics_www.qiqqa.com_20100531_(Qiqqa_utilisation).pdf:application/pdf;Namecheap.com - Checkout : Secure Payment:files/26/payment.html:text/html}
                         */

                        // Since there can be multiple attachments, we take the first one with mime type application/pdf, with a valid file.
                        entry.FileType = null; // Assume we've not found a workable attachment

                        string fileValue = entry.Item["file"];

                        foreach (string attachmentValue in fileValue.Split(';'))
                        {
                            Match match = rx.Match(attachmentValue);
                            if (match.Success)
                            {
                                string fileType = match.Groups[3].Value.ToLower();
                                if (String.CompareOrdinal(fileType, PDF_MIMETYPE) == 0)
                                {
                                    string fn = match.Groups[2].Value;
                                    fn = fn.Replace("\\_", "_"); // Zotero escapes underscores. I get the feeling from http://www.citeulike.org/groupforum/1245 that others might not.
                                    //fn = fn.Replace("/", "\\"); // Convert to windows slashes for directories.

                                    try
                                    {
                                        fn = Path.GetFullPath(Path.Combine(_importBasePath, fn));

                                        if (File.Exists(fn))
                                        {
                                            entry.FileType = "pdf"; // Normalized with other importers
                                            entry.Filename = fn;
                                            break;                  // We've found a suitable attachment
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        Logging.Warn(ex, "Ignoring problems with weird filenames like \"undefined\": {0}", fn);
                                    }
                                }
                            }
                            else
                            {
                                Logging.Warn("Non-conformant file key in Zotero import: {0}", fileValue);
                            }
                        }
                        #endregion
                    }


                    // Parse notes.
                    string notes = entry.Item["annote"];
                    if (!String.IsNullOrEmpty(notes))
                    {
                        //annote = {\textless}p{\textgreater}zotnotes1{\textless}/p{\textgreater},

                        // Turn back to pseudo html - we may want to support this format later.
                        notes = notes.Replace(@"{\textless}", "<").Replace(@"{\textgreater}", ">");

                        notes = notes.Replace("<p>", "\r");  //Some basic support

                        // Remove tags
                        notes = StringTools.StripHtmlTags(notes, " ");

                        // Change N to 1 repeated spaces due to missing tags
                        notes = Regex.Replace(notes, @"[\s]+", " ", RegexOptions.Singleline | RegexOptions.IgnoreCase);

                        entry.Notes = notes.Trim();
                    }
                }
                catch (Exception ex)
                {
                    Logging.Warn(ex, "Exception while parsing Zotero import");
                }
            }

            return(CreateFinalResult());
        }
Exemplo n.º 26
0
        private PhrasingComponent getComponent(
            FormValue formValue, ElementId id, string radioButtonListItemId, DisplaySetup displaySetup, bool isReadOnly, ElementClassSet classes,
            PageModificationValue <bool> pageModificationValue, IReadOnlyCollection <PhrasingComponent> label, FormAction action, FormAction valueChangedAction,
            Func <string> jsClickStatementGetter)
        {
            return(new CustomPhrasingComponent(
                       new DisplayableElement(
                           labelContext => new DisplayableElementData(
                               displaySetup,
                               () => new DisplayableElementLocalData("label"),
                               classes: elementClass.Add(classes ?? ElementClassSet.Empty),
                               children: new DisplayableElement(
                                   context => {
                if (!isReadOnly)
                {
                    action?.AddToPageIfNecessary();
                    valueChangedAction?.AddToPageIfNecessary();
                }

                return new DisplayableElementData(
                    null,
                    () => {
                    var attributes = new List <ElementAttribute>();
                    var radioButtonFormValue = formValue as FormValue <ElementId>;
                    attributes.Add(new ElementAttribute("type", radioButtonFormValue != null ? "radio" : "checkbox"));
                    if (radioButtonFormValue != null || !isReadOnly)
                    {
                        attributes.Add(
                            new ElementAttribute(
                                "name",
                                radioButtonFormValue != null ? ((FormValue)radioButtonFormValue).GetPostBackValueKey() : context.Id));
                    }
                    if (radioButtonFormValue != null)
                    {
                        attributes.Add(new ElementAttribute("value", radioButtonListItemId ?? context.Id));
                    }
                    if (pageModificationValue.Value)
                    {
                        attributes.Add(new ElementAttribute("checked"));
                    }
                    if (isReadOnly)
                    {
                        attributes.Add(new ElementAttribute("disabled"));
                    }

                    var jsInitStatements = StringTools.ConcatenateWithDelimiter(
                        " ",
                        !isReadOnly
                                                                                                        ? SubmitButton.GetImplicitSubmissionKeyPressStatements(action, false)
                        .Surround("$( '#{0}' ).keypress( function( e ) {{ ".FormatWith(context.Id), " } );")
                                                                                                        : "",
                        jsClickStatementGetter().Surround("$( '#{0}' ).click( function() {{ ".FormatWith(context.Id), " } );"));

                    return new DisplayableElementLocalData(
                        "input",
                        new FocusabilityCondition(!isReadOnly),
                        isFocused => {
                        if (isFocused)
                        {
                            attributes.Add(new ElementAttribute("autofocus"));
                        }
                        return new DisplayableElementFocusDependentData(
                            attributes: attributes,
                            includeIdAttribute: true,
                            jsInitStatements: jsInitStatements);
                    });
                },
                    classes: elementClass,
                    clientSideIdReferences: id.ToCollection());
            },
                                   formValue: formValue).ToCollection()
                               .Concat(label.Any() ? new GenericPhrasingContainer(label, classes: elementClass).ToCollection() : Enumerable.Empty <FlowComponent>())
                               .Materialize())).ToCollection()));
        }
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            if (TimKiem_BaoCao.CheckTuNgayDenNgay(calTuNgay.Value, calDenNgay.Value))
            {
                string strPhoneNumber = string.Empty;
                //Vung
                string strVung = string.Empty;
                if (StringTools.TrimSpace(editVung.Text).Length > 0)
                {
                    strVung = editVung.Text;
                }
                //ThoiDiemChuyenTongDai (giay)
                g_ThoiDiemChuyenTongDai = timeThoiGianChuyenTongDai.Value.Hour * 3600 + timeThoiGianChuyenTongDai.Value.Minute * 60 + timeThoiGianChuyenTongDai.Value.Second;

                // ThoiGianDieuXe (phut)
                g_ThoiGianDieuXe = timeThoiGianDieuXe.Value.Hour * 60 + timeThoiGianDieuXe.Value.Minute;

                // ThoiGianDonKhach (phut)
                g_ThoiGianDonKhach = timeThoiGianDonKhach.Value.Hour * 60 + timeThoiGianDonKhach.Value.Minute;

                DieuHanhTaxi objDHTaxi = new DieuHanhTaxi();

                string NRecords       = "";
                int    MoiGioiVangLai = 0; //0 ca moi gioi và vang lai; 1 : Môi giới, 3 : Vãng lai,  4 : Cac vang lai va moi giới
                if (chkMoiGioi.Checked)
                {
                    MoiGioiVangLai = 1;
                }
                if (chkVangLai.Checked)
                {
                    MoiGioiVangLai += 3;
                }
                string SQLCondition = this.BuildStringQuery(calTuNgay.Value, calDenNgay.Value, StringTools.TrimSpace(this.editDienThoai.Text), strVung, g_ThoiDiemChuyenTongDai, g_ThoiGianDieuXe, g_ThoiGianDonKhach, MoiGioiVangLai);
                g_lstCuocGoiKetThuc = objDHTaxi.Get_CuocGoi_KetThuc(NRecords, SQLCondition);

                gridDienThoai.SetDataBinding(g_lstCuocGoiKetThuc, "lstCuocGoiKetThuc");
                btnRefresh.Enabled     = false;
                btnPrint.Enabled       = !btnRefresh.Enabled;
                btnExportExcel.Enabled = !btnRefresh.Enabled;
            }
            else
            {
                MessageBox.MessageBoxBA msgDialog = new Taxi.MessageBox.MessageBoxBA();
                msgDialog.Show(this, "Bạn phải nhập [Từ ngày] nhỏ hơn hoặc bằng [Đến ngày].", "Thông báo", Taxi.MessageBox.MessageBoxButtonsBA.OK, Taxi.MessageBox.MessageBoxIconBA.Warning);
                return;
            }
        }
    /// <summary>
    /// 获得文件名
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>
    static public string GetFileName(string str)
    {
        string rexStr = @"(?<=\\)[^\\]+$|(?<=/)[^/]+$";

        return(StringTools.GetFirstMatch(str, rexStr));
    }
 /// <summary>
 /// 加载订单内容数据
 /// </summary>
 private void LoadDataSourceDetails()
 {
     try
     {
         int    iOrderID   = 0;
         string strBooksNo = string.Empty;
         if (this.myDataGridViewHead.CurrentRowNew != null)
         {
             if (this.myDataGridViewHead.Rows[this.myDataGridViewHead.CurrentRowNew.Index].Cells["料件出库表id"].Value != DBNull.Value)
             {
                 iOrderID   = (int)this.myDataGridViewHead.Rows[this.myDataGridViewHead.CurrentRowNew.Index].Cells["料件出库表id"].Value;
                 strBooksNo = this.myDataGridViewHead.CurrentRowNew.Cells["电子帐册号"].Value.ToString();
             }
         }
         IDataAccess dataAccess = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_Manufacture);
         dataAccess.Open();
         //string strSQL = string.Format("select * from 报关预先订单明细表 where 订单id={0}", iOrderID);
         string    strSQL    = string.Format("exec 进口料件出库修改查询 {0},{1}", iOrderID, StringTools.SqlQ(strBooksNo));
         DataTable dtDetails = dataAccess.GetTable(strSQL, null);
         dataAccess.Close();
         DataTableTools.AddEmptyRow(dtDetails);
         this.myDataGridViewDetails.DataSource = dtDetails;
     }
     catch (Exception ex)
     {
         SysMessage.ErrorMsg(string.Format("加载【出库单明细】出错,错误信息如下:{0}{1}", Environment.NewLine, ex.Message));
     }
 }
    /// <summary>
    /// 获得扩展名
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>
    static public string GetExName(string str)
    {
        string rexStr = @"(?<=\\[^\\]+.)[^\\.]+$|(?<=/[^/]+.)[^/.]+$";

        return(StringTools.GetFirstMatch(str, rexStr));
    }
        private void editSoHieuXe_Leave(object sender, EventArgs e)
        {
            string SoHieuXe = StringTools.TrimSpace(editSoHieuXe.Text);

            //if (!Xe.KiemTraTonTaiCuaSoHieuXe(SoHieuXe))
            //{
            //    g_boolValidate = false;

            //    errorProvider.SetError(editSoHieuXe, "Số hiệu xe này không tồn tại");
            //    new MessageBox.MessageBox().Show(this, "Số hiệu xe này không tồn tại", "Thông báo", Taxi.MessageBox.MessageBoxButtons.OK, Taxi.MessageBox.MessageBoxIcon.Warning);
            //    editTenLaiXe.Text = "";
            //    editSoHieuXe.Focus();
            //    return;
            //}
            //else
            //{
            //    KiemSoatXeLienLac objKSXe = new KiemSoatXeLienLac();
            //    objKSXe = KiemSoatXeLienLac.GetKSXe_BySoHieuXe(SoHieuXe); // số hiệu xe này đã được khai báo trước đó.
            //    if (objKSXe != null)
            //    {
            //        if (StringTools.TrimSpace(editTenLaiXe.Text).Length <= 0)
            //            editTenLaiXe.Text = objKSXe.MaLaiXe;
            //    }
            //    if (KiemSoatXeLienLac.CheckXeDangHoatDong(SoHieuXe))
            //    {
            //        if (mKieuBao == 1) // xe hoạt động
            //        {
            //            g_boolValidate = false;
            //            errorProvider.SetError(editSoHieuXe, "Xe đang hoạt động. Bạn cần kiểm tra lại.");
            //            new MessageBox.MessageBox().Show(this, "Xe đang hoạt động, bạn không thể nhập lại trạng thái này", "Thông báo", Taxi.MessageBox.MessageBoxButtons.OK, Taxi.MessageBox.MessageBoxIcon.Warning);
            //            editSoHieuXe.Focus();
            //            return;
            //        }
            //        else if (mKieuBao == 4)
            //        {
            //            Xe objXe = new Xe();
            //            editViTriBao.Text = objXe.GetChiTietXe(SoHieuXe).GaraName;
            //            if (StringTools.TrimSpace(editViTriBao.Text).Length <= 0) editViTriBao.Text = "Gara";
            //        }
            //    }
            //    else
            //    {  // lấy thông tin nhập cho xe haọt động
            //        if (mKieuBao == 1) // xe hoạt động
            //        {
            //            Xe objXe = new Xe();
            //            editViTriBao.Text = objXe.GetChiTietXe(SoHieuXe).GaraName;
            //            objXe = null;
            //        }
            //        else if (mKieuBao == 2 || mKieuBao == 3 || mKieuBao == 4) // xe hoạt điểm
            //        {
            //            g_boolValidate = false;
            //            lblMessage.Text = "Xe chưa hoạt động bạn cần phải cho xe ra hoạt động";
            //            editSoHieuXe.Focus();
            //            return;
            //        }
            //    }
            //}
            //g_boolValidate = true;
            //errorProvider.SetError(editSoHieuXe, "");

            //if (SoHieuXe == "999")
            //{
            //    if (!ThongTinDangNhap.HasPermission("010299"))
            //    {
            //        g_boolValidate = false;

            //        errorProvider.SetError(editSoHieuXe, "Bạn không có quyền cho xe 999 ra hoạt động, hoặc về.");
            //        new MessageBox.MessageBox().Show(this, "Bạn không có quyền cho xe 999 ra hoạt động, hoặc về", "Thông báo", Taxi.MessageBox.MessageBoxButtons.OK, Taxi.MessageBox.MessageBoxIcon.Warning);
            //        editSoHieuXe.Focus();
            //    }
            //}
        }
Exemplo n.º 32
0
        private void TraCuu()
        {
            int MaDonVi = Convert.ToInt32(cboCongTy.SelectedValue.ToString());
            int Nam     = Convert.ToInt32(txtNam.Text);

            if (Nam < 2009)
            {
                new MessageBox.MessageBox().Show("Bạn phải nhập thông tin năm vé hủy lớn hơn bằng 2009.");
                return;
            }
            if (radVe.Checked)
            {
                int Seri = int.Parse(numSeriDau.Value.ToString());

                if (Seri <= 0 || MaDonVi <= 0)
                {
                    new MessageBox.MessageBox().Show("Bạn phải nhập thông tin vé cần tra cứu.");
                }
                else
                {
                    DataTable dt = Ve.TimKiemThongTinVe(MaDonVi, Seri, Nam);
                    if ((dt != null) && (dt.Rows.Count > 0))
                    {
                        lblGiaTriSuDung.Text = "VÉ ĐÃ HỦY.";
                        if (dt.Rows[0]["GhiChu"] != null)
                        {
                            lblGhiChu.Text = dt.Rows[0]["GhiChu"].ToString();
                        }
                        if (Convert.ToBoolean(dt.Rows[0]["IsTamNhap"].ToString()))
                        {
                            lblGiaTriSuDung.Text += " [Tạm nhập ]";
                        }
                    }
                    else
                    {
                        lblGiaTriSuDung.Text = "VÉ CHƯA ĐƯỢC NHẬP THÔNG TIN HỦY.";
                    }
                }
            }
            else if (radThe.Checked)
            {
                string    MaSoThe = StringTools.TrimSpace(txtMaSoThe.Text);
                DataTable dt      = The.GetChiTietThe(MaSoThe, MaDonVi, Nam);
                if ((dt != null) && (dt.Rows.Count > 0))
                {
                    lblGiaTriSuDung.Text = "THẺ ĐÃ HỦY.(" + dt.Rows[0]["TenCongTy"].ToString() + ")";
                    if (dt.Rows[0]["GhiChu"] != null)
                    {
                        lblGhiChu.Text = dt.Rows[0]["GhiChu"].ToString();
                    }
                }
                else
                {
                    lblGiaTriSuDung.Text = "THẺ CHƯA ĐƯỢC NHẬP THÔNG TIN HỦY";
                }
            }
            else if (radHopDong.Checked)
            {
                int SoHopDong = int.Parse(numSeriDau.Value.ToString());

                if (SoHopDong <= 0)
                {
                    new MessageBox.MessageBox().Show("Bạn phải nhập thông tin số hợp đồng cần tra cứu.");
                }
                else
                {
                    DataTable dt = Ve.TimKiemThongTinSoHopDong(MaDonVi, SoHopDong, Nam);
                    if ((dt != null) && (dt.Rows.Count > 0))
                    {
                        lblGiaTriSuDung.Text = "SỐ HỢP ĐỒNG ĐÃ HỦY.";
                        if (dt.Rows[0]["GhiChu"] != null)
                        {
                            lblGhiChu.Text = dt.Rows[0]["GhiChu"].ToString();
                        }
                    }
                    else
                    {
                        lblGiaTriSuDung.Text = "SỐ HỢP ĐỒNG CHƯA ĐƯỢC NHẬP THÔNG TIN HỦY.";
                    }
                }
            }
        }
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (myTextBox1.Text.Trim().Length == 0)
            {
                SysMessage.InformationMsg("产品类别不允许为空!");
                return;
            }
            string strSQL = string.Empty;

            if (itypeID == 0) //新增
            {
                strSQL = string.Format("INSERT INTO [产品类别表]([产品类别],[产品类别描述])VALUES({0},{1})", iParentTypeID == 0 ? "NULL" : iParentTypeID.ToString(), StringTools.SqlQ(myTextBox1.Text.Trim()));
            }
            else
            {
                if (this.strTypeText == this.myTextBox1.Text.Trim())
                {
                    this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
                    this.Close();
                    return;
                }
                if (SysMessage.YesNoMsg("确定要修改?") == System.Windows.Forms.DialogResult.No)
                {
                    this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
                    this.Close();
                    return;
                }
                strSQL = string.Format("UPDATE [产品类别表] SET [产品类别描述] ={0} WHERE 产品类别ID={1}", StringTools.SqlQ(myTextBox1.Text.Trim()), itypeID);
            }
            IDataAccess dataAccess = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_Manufacture);

            dataAccess.Open();
            dataAccess.ExecuteNonQuery(strSQL, null);
            dataAccess.Close();
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
            this.Close();
        }
        private void btnDataImport_Click(object sender, EventArgs e)
        {
            if (this.myDataGridViewHead.CurrentRow == null)
            {
                return;
            }
            if (SysMessage.YesNoMsg("数据是否导出?") == System.Windows.Forms.DialogResult.No)
            {
                return;
            }
            DataRow     mRs             = (myDataGridViewHead.CurrentRow.DataBoundItem as DataRowView).Row;
            IDataAccess dataManufacture = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_Manufacture);
            IDataAccess dataGWT         = DataAccessFactory.CreateDataAccess(DataAccessEnum.DataAccessName.DataAccessName_GWT);

            dataManufacture.Open();
            DataTable rs = dataManufacture.GetTable(string.Format("报关进口料件数量转换统计 @id={0},@电子帐册号='{1}',@类别=1",
                                                                  mRs["料件入库表id"], mRs["电子帐册号"]), null);

            dataManufacture.Close();
            if (rs.Rows.Count > 0)
            {
                decimal PriceValue;
                int     n = 1;
                dataManufacture.Open();
                dataGWT.Open();
                foreach (DataRow rsRow in rs.Rows)
                {
                    DataTable crs = dataManufacture.GetTable(string.Format(@"SELECT H.单价 FROM 归并前料件清单 Q RIGHT OUTER JOIN 归并后料件清单 H ON Q.归并后料件id = H.归并后料件id 
                                    WHERE H.电子帐册号='{0}' and Q.产品编号='{1}'", mRs["电子帐册号"], rsRow["料号"]), null);
                    if (crs.Rows.Count > 0 && crs.Rows[0]["单价"] != DBNull.Value)
                    {
                        PriceValue = Convert.ToDecimal(Convert.ToDecimal(crs.Rows[0]["单价"]).ToString("N2"));
                    }
                    else
                    {
                        PriceValue = Convert.ToDecimal(Convert.ToDecimal(0).ToString("N2"));
                    }
                    dataGWT.ExecuteNonQuery(string.Format(@"INSERT INTO GWT_EMS_CL(Ems_No,owner_code, Cop_List_No, I_E_Mark, G_Mark,List_Declare_Date,List_G_No,Cop_G_No,Qty,Factor_1,Unit,Unit_1,
                                                                Dec_Price,Use_Type,Duty_Mode,Country_Code,Curr) VALUES({0},'3502948415',{1},'I','3','{2}',{3},{4},{5},{6},'035','035',
                                                                {7},{8},{9},{10},{11})",
                                                          mRs["电子帐册号"] == DBNull.Value ? "NULL" :StringTools.SqlQ(mRs["电子帐册号"].ToString()),
                                                          mRs["清单编号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(mRs["清单编号"].ToString()),
                                                          DateTime.Now.ToString("yyyy-MM-dd"), n, rsRow["料号"] == DBNull.Value ? "NULL" : StringTools.SqlQ(rsRow["料号"].ToString()),
                                                          rsRow["入库数量"] == DBNull.Value ? "NULL" : rsRow["入库数量"], rsRow["入库数量"] == DBNull.Value ? "NULL" : rsRow["入库数量"], PriceValue,
                                                          mRs["用途"] == DBNull.Value ? "NULL" : StringTools.SqlQ(mRs["用途"].ToString()),
                                                          mRs["征免方式"] == DBNull.Value ? "NULL" : mRs["征免方式"],
                                                          mRs["产销国"] == DBNull.Value ? "NULL" : StringTools.SqlQ(mRs["产销国"].ToString()),
                                                          mRs["币制"] == DBNull.Value ? "NULL" : mRs["币制"]), null);
                    n++;
                }
                dataGWT.ExecuteNonQuery("sp_get_gwt_ems_cl", null);
                dataManufacture.Close();
                dataGWT.Close();
            }
        }
        private static void writeResultSetCreatorBody(
            DBConnection cn, TextWriter writer, IDatabase database, Table table, TableColumns tableColumns, bool tableUsesRowVersionedCaching, bool excludesPreviousRevisions,
            string cacheQueryInDbExpression, int?commandTimeoutSeconds)
        {
            if (tableUsesRowVersionedCaching)
            {
                writer.WriteLine("var results = new List<Row>();");
                writer.WriteLine(DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression + ".ExecuteInTransaction( () => {");

                // Query for the cache keys of the results.
                writer.WriteLine(
                    "var keyCommand = {0};".FormatWith(
                        getInlineSelectExpression(
                            table,
                            tableColumns,
                            "{0}, \"{1}\"".FormatWith(
                                StringTools.ConcatenateWithDelimiter(", ", tableColumns.KeyColumns.Select(i => "\"{0}\"".FormatWith(i.Name)).ToArray()),
                                cn.DatabaseInfo is OracleInfo ? "ORA_ROWSCN" : tableColumns.RowVersionColumn.Name),
                            cacheQueryInDbExpression,
                            commandTimeoutSeconds)));
                writer.WriteLine(getCommandConditionAddingStatement("keyCommand"));
                writer.WriteLine($"var keys = new List<{TypeNames.Tuple}<{getPkAndVersionTupleTypeArguments( cn, tableColumns )}>>();");
                var concatenateWithDelimiter = StringTools.ConcatenateWithDelimiter(
                    ", ",
                    tableColumns.KeyColumns.Select((c, i) => c.GetDataReaderValueExpression("r", ordinalOverride: i)));
                var o = cn.DatabaseInfo is OracleInfo
                                                ? "({0})r.GetValue( {1} )".FormatWith(oracleRowVersionDataType, tableColumns.KeyColumns.Count())
                                                : tableColumns.RowVersionColumn.GetDataReaderValueExpression("r", ordinalOverride: tableColumns.KeyColumns.Count());
                writer.WriteLine(
                    "keyCommand.Execute( " + DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression + ", r => { while( r.Read() ) keys.Add( " +
                    $"{TypeNames.Tuple}.Create( {concatenateWithDelimiter}, {o} )" + " ); } );");

                writer.WriteLine("var rowsByPkAndVersion = getRowsByPkAndVersion();");
                writer.WriteLine("var cachedKeyCount = keys.Where( i => rowsByPkAndVersion.ContainsKey( i ) ).Count();");

                // If all but a few results are cached, execute a single-row query for each missing result.
                writer.CodeBlock(
                    "if( cachedKeyCount >= keys.Count() - 1 || cachedKeyCount >= keys.Count() * .99 ) {",
                    () => {
                    writer.WriteLine("foreach( var key in keys ) {");
                    writer.WriteLine("results.Add( new Row( rowsByPkAndVersion.GetOrAdd( key, () => {");
                    writer.WriteLine("var singleRowCommand = {0};".FormatWith(getInlineSelectExpression(table, tableColumns, "\"*\"", "false", commandTimeoutSeconds)));
                    foreach (var i in tableColumns.KeyColumns.Select((c, i) => new { column = c, index = i }))
                    {
                        writer.WriteLine(
                            $"singleRowCommand.AddCondition( ( ({table.GetTableConditionInterfaceReference()})new {table.GetEqualityConditionClassReference( cn, i.column )}( key.Item{i.index + 1} ) ).CommandCondition );");
                    }

                    writer.WriteLine("var singleRowResults = new List<BasicRow>();");
                    writer.WriteLine(
                        "singleRowCommand.Execute( " + DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression +
                        ", r => { while( r.Read() ) singleRowResults.Add( new BasicRow( r ) ); } );");
                    writer.WriteLine("return singleRowResults.Single();");
                    writer.WriteLine("} ) ) );");
                    writer.WriteLine("}");
                });
                // Otherwise, execute the full query.
                writer.CodeBlock(
                    "else {",
                    () => {
                    writer.WriteLine(
                        "var command = {0};".FormatWith(
                            getInlineSelectExpression(
                                table,
                                tableColumns,
                                cn.DatabaseInfo is OracleInfo ? "\"{0}.*\", \"ORA_ROWSCN\"".FormatWith(table) : "\"*\"",
                                cacheQueryInDbExpression,
                                commandTimeoutSeconds)));
                    writer.WriteLine(getCommandConditionAddingStatement("command"));
                    writer.WriteLine("command.Execute( " + DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression + ", r => {");
                    writer.WriteLine(
                        "while( r.Read() ) results.Add( new Row( rowsByPkAndVersion.GetOrAdd( System.Tuple.Create( {0}, {1} ), () => new BasicRow( r ) ) ) );".FormatWith(
                            StringTools.ConcatenateWithDelimiter(", ", tableColumns.KeyColumns.Select(i => i.GetDataReaderValueExpression("r")).ToArray()),
                            cn.DatabaseInfo is OracleInfo
                                                                        ? "({0})r.GetValue( {1} )".FormatWith(oracleRowVersionDataType, tableColumns.AllColumns.Count())
                                                                        : tableColumns.RowVersionColumn.GetDataReaderValueExpression("r")));
                    writer.WriteLine("} );");
                });

                writer.WriteLine("} );");
            }
            else
            {
                writer.WriteLine("var command = {0};".FormatWith(getInlineSelectExpression(table, tableColumns, @"""*""", cacheQueryInDbExpression, commandTimeoutSeconds)));
                writer.WriteLine(getCommandConditionAddingStatement("command"));
                writer.WriteLine("var results = new List<Row>();");
                writer.WriteLine(
                    "command.Execute( " + DataAccessStatics.DataAccessStateCurrentDatabaseConnectionExpression +
                    ", r => { while( r.Read() ) results.Add( new Row( new BasicRow( r ) ) ); } );");
            }

            // Add all results to RowsByPk.
            writer.WriteLine("foreach( var i in results ) {");
            var pkTupleCreationArgs = tableColumns.KeyColumns.Select(i => "i." + Utility.GetCSharpIdentifier(i.PascalCasedNameExceptForOracle));
            var pkTuple             = "System.Tuple.Create( " + StringTools.ConcatenateWithDelimiter(", ", pkTupleCreationArgs.ToArray()) + " )";

            writer.WriteLine($"cache.RowsByPk[ {pkTuple} ] = i;");
            if (excludesPreviousRevisions)
            {
                writer.WriteLine($"cache.LatestRevisionRowsByPk[ {pkTuple} ] = i;");
            }
            writer.WriteLine("}");

            writer.WriteLine("return results;");
        }
Exemplo n.º 36
0
        public void perform()
        {
            using (WorkingDir wd = new WorkingDir())
            {
                string rExt = Path.GetExtension(Gnd.i.rFile);

                if (Gnd.i.audioVideoExtensions.contains(rExt) == false)
                {
                    throw new Exception("再生可能なファイルではありません。(不明な拡張子)");
                }

                string midRFile = wd.makePath() + rExt;

                try
                {
                    File.Copy(Gnd.i.rFile, midRFile);

                    if (File.Exists(midRFile) == false)
                    {
                        throw null;
                    }
                }
                catch
                {
                    throw new Exception("ファイルにアクセス出来ません。");
                }

                string redirFile = wd.makePath();

                ProcessTools.runOnBatch("ffprobe.exe " + midRFile + " 2> " + redirFile, Gnd.i.ffmpegBinDir);

                foreach (string line in FileTools.readAllLines(redirFile, Encoding.ASCII))
                {
                    if (line.Contains("Duration:"))
                    {
                        _duration = new Duration();

                        List <string> tokens = StringTools.tokenize(line, " :.,", false, true);

                        if (tokens[1] == "N/A")
                        {
                            throw new Exception("再生可能なファイルではありません。(Duration)");
                        }

                        int h = int.Parse(tokens[1]);
                        int m = int.Parse(tokens[2]);
                        int s = int.Parse(tokens[3]);

                        int sec = h * 3600 + m * 60 + s;

                        if (sec < 1)
                        {
                            throw new Exception("映像又は曲の長さが短すぎます。");
                        }

                        if (IntTools.IMAX < sec)
                        {
                            throw new Exception("映像又は曲の長さが長すぎます。");
                        }

                        _duration.secLength = sec;
                    }
                    else if (_audioStream == null && line.Contains("Stream") && line.Contains("Audio:"))
                    {
                        _audioStream = new AudioStream();

                        List <string> tokens = StringTools.tokenize(line, StringTools.DIGIT, true, true);

                        _audioStream.mapIndex = int.Parse(tokens[1]);
                    }
                    else if (_videoStream == null && line.Contains("Stream") && line.Contains("Video:"))
                    {
                        _videoStream = new VideoStream();

                        {
                            List <string> tokens = StringTools.tokenize(line, StringTools.DIGIT, true, true);

                            _videoStream.mapIndex = int.Parse(tokens[1]);
                        }

                        {
                            List <string> tokens = StringTools.tokenize(line, " ,");

                            foreach (string token in tokens)
                            {
                                if (StringTools.toDigitFormat(token, true) == "9x9")
                                {
                                    List <string> whTokens = StringTools.tokenize(token, "x");

                                    _videoStream.w = int.Parse(whTokens[0]);
                                    _videoStream.h = int.Parse(whTokens[1]);
                                }
                            }
                        }

                        if (_videoStream.w < Consts.VIDEO_W_MIN)
                        {
                            throw new Exception("映像の幅が小さすぎます。");
                        }

                        if (_videoStream.h < Consts.VIDEO_H_MIN)
                        {
                            throw new Exception("映像の高さが小さすぎます。");
                        }

                        if (IntTools.IMAX < _videoStream.w)
                        {
                            throw new Exception("映像の幅が大きすぎます。");
                        }

                        if (IntTools.IMAX < _videoStream.h)
                        {
                            throw new Exception("映像の高さが大きすぎます。");
                        }
                    }
                }
                if (_duration == null)
                {
                    throw null;
                }

                if (_audioStream == null)
                {
                    throw new Exception("再生可能なファイルではありません。(音声ストリームがありません)");
                }

                if (_videoStream == null)
                {
                    _type = Consts.MediaType_e.AUDIO;
                }
                else
                {
                    _type = Consts.MediaType_e.MOVIE;
                }

                string wFile = Utils.getFile(Gnd.i.wFileNoExt, _type);

                if (Utils.equalsExt(midRFile, wFile))
                {
                    try
                    {
                        File.Copy(midRFile, wFile, true);

                        if (File.Exists(wFile) == false)
                        {
                            throw null;
                        }
                    }
                    catch
                    {
                        throw new Exception("ファイルの出力に失敗しました。(単にコピー)");
                    }
                }
                else
                {
                    string midWFile = wd.makePath() + Utils.getExt(_type);

                    if (Gnd.i.convWavMastering)
                    {
                        string wavFile = wd.makePath() + ".wav";

                        ProcessTools.runOnBatch(
                            "ffmpeg.exe -i " + midRFile + " -map 0:" + _audioStream.mapIndex + " -ac 2 " + wavFile,
                            Gnd.i.ffmpegBinDir
                            );

                        if (File.Exists(wavFile) == false)
                        {
                            throw new Exception("音声ストリームの抽出に失敗しました。");
                        }

                        string wavFileNew = wd.makePath() + ".wav";

                        ProcessTools.runOnBatch(
                            "Master.exe " + wavFile + " " + wavFileNew + " " + wd.makePath() + "_DMY_REP.tmp > " + redirFile,
                            Gnd.i.wavMasterBinDir
                            );

                        Utils.textFileToLog(redirFile, StringTools.ENCODING_SJIS);

                        if (File.Exists(wavFileNew) == false)
                        {
                            throw new Exception("wavFileNew does not exist");
                        }

                        if (_type == Consts.MediaType_e.AUDIO)
                        {
                            ProcessTools.runOnBatch(
                                "ffmpeg.exe -i " + wavFileNew + " -map 0:0 " + Gnd.i.ffmpegOptAudio + " " + midWFile + " 2> " + redirFile,
                                Gnd.i.ffmpegBinDir
                                );
                        }
                        else
                        {
                            ProcessTools.runOnBatch(
                                "ffmpeg.exe -i " + midRFile + " -i " + wavFileNew + " -map 0:" + _videoStream.mapIndex + " -map 1:0 " + Gnd.i.ffmpegOptVideo + " " + Gnd.i.ffmpegOptAudio + " " + midWFile + " 2> " + redirFile,
                                Gnd.i.ffmpegBinDir
                                );
                        }
                    }
                    else
                    {
                        if (_type == Consts.MediaType_e.AUDIO)
                        {
                            ProcessTools.runOnBatch(
                                "ffmpeg.exe -i " + midRFile + " -map 0:" + _audioStream.mapIndex + " " + Gnd.i.ffmpegOptAudio + " " + midWFile + " 2> " + redirFile,
                                Gnd.i.ffmpegBinDir
                                );
                        }
                        else
                        {
                            ProcessTools.runOnBatch(
                                "ffmpeg.exe -i " + midRFile + " -map 0:" + _videoStream.mapIndex + " -map 0:" + _audioStream.mapIndex + " " + Gnd.i.ffmpegOptVideo + " " + Gnd.i.ffmpegOptAudio + " " + midWFile + " 2> " + redirFile,
                                Gnd.i.ffmpegBinDir
                                );
                        }
                    }
                    Utils.textFileToLog(redirFile, Encoding.ASCII);

                    if (File.Exists(midWFile) == false)
                    {
                        throw new Exception("midWFile does not exist");
                    }

                    try
                    {
                        File.Copy(midWFile, wFile, true);

                        if (File.Exists(wFile) == false)
                        {
                            throw null;
                        }
                    }
                    catch
                    {
                        throw new Exception("ファイルの出力に失敗しました。(変換した)");
                    }
                }
                Gnd.i.convReturn.wFile = wFile;
            }
            if (_videoStream != null)
            {
                Gnd.i.convReturn.w = _videoStream.w;
                Gnd.i.convReturn.h = _videoStream.h;
            }
        }
Exemplo n.º 37
0
        public static ExpeditionDataSource BuildExpeditionDataSource(Library library, int num_topics, bool add_autotags, bool add_tags, ExpeditionBuilderProgressUpdateDelegate progress_update_delegate)
        {
            bool not_aborted_by_user = true;

            // Check that we have a progres update delegate
            if (null == progress_update_delegate)
            {
                progress_update_delegate = DefaultExpeditionBuilderProgressUpdate;
            }

            // What are the sources of data?
            progress_update_delegate("Assembling tags", 0);
            HashSet <string>   tags          = BuildLibraryTagList(library, add_autotags, add_tags);
            List <PDFDocument> pdf_documents = library.PDFDocumentsWithLocalFilePresent;

            // Initialise the datasource
            progress_update_delegate("Initialising datasource", 0);
            ExpeditionDataSource data_source = new ExpeditionDataSource();

            data_source.date_created = DateTime.UtcNow;

            progress_update_delegate("Adding tags", 0);
            data_source.words = new List <string>();
            foreach (string tag in tags)
            {
                data_source.words.Add(tag);
            }

            progress_update_delegate("Adding docs", 0);
            data_source.docs = new List <string>();
            foreach (PDFDocument pdf_document in pdf_documents)
            {
                data_source.docs.Add(pdf_document.Fingerprint);
            }

            progress_update_delegate("Rebuilding indices", 0);
            data_source.RebuildIndices();

            // Now go through each doc and find the tags that match
            data_source.words_in_docs = new int[data_source.docs.Count][];

            int total_processed = 0;

            Parallel.For(0, data_source.docs.Count, d =>
                         //for (int d = 0; d < data_source.docs.Count; ++d)
            {
                int total_processed_local = Interlocked.Increment(ref total_processed);
                if (0 == total_processed_local % 10)
                {
                    not_aborted_by_user = not_aborted_by_user && progress_update_delegate("Scanning documents", total_processed_local / (double)data_source.docs.Count);
                }

                List <int> tags_in_document = new List <int>();

                if (not_aborted_by_user)
                {
                    PDFDocument pdf_document = pdf_documents[d];
                    string full_text         = " " + pdf_document.PDFRenderer.GetFullOCRText() + " ";
                    string full_text_lower   = full_text.ToLower();

                    for (int t = 0; t < data_source.words.Count; ++t)
                    {
                        string tag = ' ' + data_source.words[t] + ' ';

                        string full_text_to_search = full_text;
                        if (StringTools.HasSomeLowerCase(tag))
                        {
                            full_text_to_search = full_text_lower;
                            tag = tag.ToLower();
                        }

                        int num_appearances = StringTools.CountStringOccurence(full_text_to_search, tag);
                        for (int i = 0; i < num_appearances; ++i)
                        {
                            tags_in_document.Add(t);
                        }
                    }
                }

                data_source.words_in_docs[d] = tags_in_document.ToArray();
            }
                         );

            // Initialise the LDA
            not_aborted_by_user = not_aborted_by_user && progress_update_delegate("Building themes sampler", 0);
            int    num_threads = Environment.ProcessorCount;
            double alpha       = 2.0 / num_topics;
            double beta        = 0.01;

            data_source.lda_sampler = new LDASampler(alpha, beta, num_topics, data_source.words.Count, data_source.docs.Count, data_source.words_in_docs);

            LDASamplerMCSerial lda_sampler_mc = new LDASamplerMCSerial(data_source.lda_sampler, num_threads);

            for (int i = 0; i < MAX_TOPIC_ITERATIONS; ++i)
            {
                if (!not_aborted_by_user)
                {
                    break;
                }
                not_aborted_by_user = not_aborted_by_user && progress_update_delegate("Building themes", i / (double)MAX_TOPIC_ITERATIONS);
                lda_sampler_mc.MC(10);
            }

            // Results
            if (not_aborted_by_user)
            {
                progress_update_delegate("Built Expedition", 1);
            }
            else
            {
                progress_update_delegate("Cancelled Expedition", 1);
            }

            return(data_source);
        }
Exemplo n.º 38
0
 public string SoHieuXe()
 {
     return(StringTools.TrimSpace(txtSoHieuXe.Text));
 }
Exemplo n.º 39
0
        public void DrawNode()
        {
            if (nodeStyle == null)
            {
                GUISkin skin = EditorGUIUtility.Load("MemoryProfiler_EditorResources/MemoryProfiler_NodeGUISkin.guiskin") as GUISkin;
                nodeStyle = new GUIStyle(skin.window);
            }
            int size = 18 * (myInfo.memObject.references.Length + myInfo.memObject.referencedBy.Length + 9 + 128);

            if (bIsSelected)
            {
                scrollViewVector = GUI.BeginScrollView(new Rect(6, 31, 348, 323), scrollViewVector, new Rect(0, 18, 360, size));
            }
            else
            {
                scrollViewVector = GUI.BeginScrollView(new Rect(6, 31, 348, 323), scrollViewVector, new Rect(0, 18, 360, size), false, false, GUIStyle.none, GUIStyle.none);
                GUILayout.Space(10);
            }
            var nativeObject = myInfo.memObject as NativeUnityEngineObject;

            if (nativeObject != null)
            {
                GUILayout.Label("NativeUnityEngineObject", EditorStyles.boldLabel);
                EditorGUILayout.LabelField("Name", nativeObject.name);
                EditorGUILayout.LabelField("ClassName", nativeObject.className);
                EditorGUILayout.LabelField("ClassID", nativeObject.classID.ToString());
                EditorGUILayout.LabelField("instanceID", nativeObject.instanceID.ToString());
                EditorGUILayout.LabelField("isDontDestroyOnLoad", nativeObject.isDontDestroyOnLoad.ToString());
                EditorGUILayout.LabelField("isPersistent", nativeObject.isPersistent.ToString());
                EditorGUILayout.LabelField("isManager", nativeObject.isManager.ToString());
                EditorGUILayout.LabelField("hideFlags", nativeObject.hideFlags.ToString());
                EditorGUILayout.LabelField("Size", nativeObject.size.ToString());
                instanceID = nativeObject.instanceID;
                DrawSpecificTexture2D(nativeObject);
            }

            var managedObject = myInfo.memObject as ManagedObject;

            if (managedObject != null)
            {
                GUILayout.Label("ManagedObject");
                EditorGUILayout.LabelField("Type", managedObject.typeDescription.name);
                EditorGUILayout.LabelField("Address", managedObject.address.ToString("X"));
                EditorGUILayout.LabelField("size", managedObject.size.ToString());

                if (managedObject.typeDescription.name == "System.String")
                {
                    EditorGUILayout.LabelField("value", StringTools.ReadString(_unpackedCrawl.managedHeap.Find(managedObject.address, _unpackedCrawl.virtualMachineInformation), _unpackedCrawl.virtualMachineInformation));
                }
                DrawFields(managedObject);

                if (managedObject.typeDescription.isArray)
                {
                    DrawArray(managedObject);
                }
                if (nodeStyle == null)
                {
                    nodeStyle = new GUIStyle("flow node 1");
                }
            }

            if (myInfo.memObject is GCHandle)
            {
                GUILayout.Label("GCHandle");
                EditorGUILayout.LabelField("size", myInfo.memObject.size.ToString());
            }

            var staticFields = myInfo.memObject as StaticFields;

            if (staticFields != null)
            {
                GUILayout.Label("Static Fields");
                GUILayout.Label("Of type: " + staticFields.typeDescription.name);
                GUILayout.Label("size: " + staticFields.size);

                DrawFields(staticFields.typeDescription, new BytesAndOffset()
                {
                    bytes = staticFields.typeDescription.staticFieldBytes, offset = 0, pointerSize = _unpackedCrawl.virtualMachineInformation.pointerSize
                }, true);
            }

            if (managedObject == null)
            {
                GUILayout.Space(10);
                GUILayout.BeginHorizontal();
                GUILayout.Label("References:", labelWidth);
                GUILayout.BeginVertical();
                DrawLinks(myInfo.memObject.references, 1);
                GUILayout.EndVertical();
                GUILayout.EndHorizontal();
            }

            GUILayout.Space(10);
            GUILayout.Label("Referenced by:");
            DrawLinks(myInfo.memObject.referencedBy, 2);


            GUILayout.Space(10);
            if (_shortestPath != null)
            {
                if (_shortestPath.Length > 1)
                {
                    GUILayout.Label("ShortestPathToRoot");
                    DrawLinks(_shortestPath, 0);
                }
                string reason;
                _shortestPathToRootFinder.IsRoot(_shortestPath.Last(), out reason);
                GUILayout.Label("This is a root because:");
                GUILayout.TextArea(reason);
            }
            else
            {
                GUILayout.TextArea("No root is keeping this object alive. It will be collected next UnloadUnusedAssets() or scene load");
            }

            GUI.EndScrollView();
        }
Exemplo n.º 40
0
        /// <summary>
        /// Возвращает одно ближайшее целое положительное число, извлечённое из начала или конца входной строки. 
        /// В зависимости от параметра RaiseException, если входная строка некорректная или в ней не найдено ни одной цифры, метод выбрасывает исключение или возвращает NULL.
        /// </summary>
        /// <param name="Input">Входная строка</param>
        /// <param name="Dir">Направление, по которому ищется число: с начала входной строки или с конца</param>
        /// <param name="RaiseException">Если true - при некорректной строке или ненахождении числа выбрасывается исключение; если false - возвращается NULL</param>
        /// <returns>Целое положительное число или NULL (если RaiseException = false)</returns>
        /// <exception cref="ArgumentException">Параметр RaiseException выставлен в true и входня строка пуста или не содержит ни одной цифры</exception>
        /// <exception cref="InvalidEnumArgumentException">Значение перечисления направления находится некорректно</exception>
        public static Nullable<UInt32> GetNearestUnsignedIntegerFromString(String Input, StringTools.Direction Dir, Boolean RaiseException)
        {
            if (Input.HasVisibleChars() == false)
            {
                if (RaiseException == true)
                { throw new ArgumentException("Входная строка не может быть NULL, пустой или не содержать ни одного видимого символа", "Input"); }
                else
                { return null; }
            }
            Char[] input_array = Input.ToCharArray();

            Boolean found = false;
            String number = String.Empty;
            switch (Dir)
            {
                case StringTools.Direction.FromStartToEnd:
                    foreach (Char symbol in input_array)
                    {
                        if (Char.IsDigit(symbol) == true)
                        {
                            number = number + symbol.ToString();
                            found = true;
                        }
                        else if (Char.IsDigit(symbol) == false && found == true)
                        {
                            break;
                        }
                    }
                    {
                        UInt32 result;
                        if (UInt32.TryParse(number, out result) == true)
                        { return result; }
                        else
                        {
                            if (RaiseException == true)
                            { throw new ArgumentException("Входная строка не содержит ни одной цифры", "Input"); }
                            else
                            { return null; }
                        }
                    }

                case StringTools.Direction.FromEndToStart:
                    for (Int32 i = input_array.Length - 1; i >= 0; i--)
                    {
                        if (Char.IsDigit(input_array[i]) == true)
                        {
                            number = input_array[i] + number;
                            found = true;
                        }
                        else if (Char.IsDigit(input_array[i]) == false && found == true)
                        {
                            break;
                        }
                    }
                    {
                        UInt32 result;
                        if (UInt32.TryParse(number, out result) == true)
                        { return result; }
                        else
                        {
                            if (RaiseException == true)
                            { throw new ArgumentException("Входная строка не содержит ни одной цифры", "Input"); }
                            else
                            { return null; }
                        }
                    }
                default:
                    throw new InvalidEnumArgumentException("Dir", (Int32)Dir, Dir.GetType());
            }
        }