Beispiel #1
0
        public static string[] Splitt(this string MyString, params char[] Separator)
        {
            if (MyString == null)
            {
                return(null);
            }
            else
            {
                string[] Result        = new string[0];
                int      LastWordIndex = 0;


                for (int i = 0; i < MyString.Length; i++)
                {
                    if (Separator.Contains(MyString[i]))
                    {
                        char[] temp = new char[i - LastWordIndex];
                        for (int j = LastWordIndex, k = 0; j < i; k++, j++)
                        {
                            temp[k] = MyString[j];
                        }
                        Array.Resize(ref Result, Result.Length + 1);
                        Result[Result.Length - 1] = new string(temp);
                        LastWordIndex             = i;
                    }
                }
                return(Result);
            }
        }
        public override void Validate(object state)
        {
            if (state == null)
            {
                base.Validate(state);

                if (Separator.IsNullOrWhiteSpace())
                {
                    throw new ChoRecordConfigurationException("Separator can't be null or whitespace.");
                }
                if (Separator == EOLDelimiter)
                {
                    throw new ChoRecordConfigurationException("Separator [{0}] can't be same as EODDelimiter [{1}]".FormatString(Separator, EOLDelimiter));
                }
                if (Separator.Contains(QuoteChar))
                {
                    throw new ChoRecordConfigurationException("QuoteChar [{0}] can't be one of Delimiter characters [{1}]".FormatString(QuoteChar, Separator));
                }
                if (Comments != null && Comments.Contains(Separator))
                {
                    throw new ChoRecordConfigurationException("One of the Comments contains Delimiter. Not allowed.");
                }
                if (RecordStart.IsNullOrWhiteSpace() && RecordEnd.IsNullOrWhiteSpace())
                {
                }
                else
                {
                    if (RecordStart.IsNullOrWhiteSpace())
                    {
                        throw new ChoRecordConfigurationException("RecordStart is missing.");
                    }
                    //else if (RecordEnd.IsNullOrWhiteSpace())
                    //    RecordEnd = RecordStart;
                    //throw new ChoRecordConfigurationException("RecordEnd is missing.");

                    if (RecordStart.Contains("*") || RecordStart.Contains("?"))
                    {
                        _isWildcardComparisionOnRecordStart = true;
                        _recordStartWildCard = new ChoWildcard(RecordStart);
                    }
                    if (!RecordEnd.IsNullOrWhiteSpace() && (RecordEnd.EndsWith("*") || RecordStart.Contains("?")))
                    {
                        _isWildcardComparisionOnRecordEnd = true;
                        _recordEndWildCard = new ChoWildcard(RecordEnd);
                    }
                }

                //Validate Header
                if (FileHeaderConfiguration != null)
                {
                    if (FileHeaderConfiguration.FillChar != null)
                    {
                        if (FileHeaderConfiguration.FillChar.Value == ChoCharEx.NUL)
                        {
                            throw new ChoRecordConfigurationException("Invalid '{0}' FillChar specified.".FormatString(FileHeaderConfiguration.FillChar));
                        }
                        if (Separator.Contains(FileHeaderConfiguration.FillChar.Value))
                        {
                            throw new ChoRecordConfigurationException("FillChar [{0}] can't be one of Delimiter characters [{1}]".FormatString(FileHeaderConfiguration.FillChar, Separator));
                        }
                        if (EOLDelimiter.Contains(FileHeaderConfiguration.FillChar.Value))
                        {
                            throw new ChoRecordConfigurationException("FillChar [{0}] can't be one of EOLDelimiter characters [{1}]".FormatString(FileHeaderConfiguration.FillChar.Value, EOLDelimiter));
                        }
                        if ((from comm in Comments
                             where comm.Contains(FileHeaderConfiguration.FillChar.Value.ToString())
                             select comm).Any())
                        {
                            throw new ChoRecordConfigurationException("One of the Comments contains FillChar. Not allowed.");
                        }
                    }
                }
            }
            else
            {
                string[] headers = state as string[];
                if (AutoDiscoverColumns &&
                    KVPRecordFieldConfigurations.Count == 0)
                {
                    AutoDiscoveredColumns = true;
                    if (headers != null && IsDynamicObject)
                    {
                        KVPRecordFieldConfigurations = (from header in headers
                                                        select new ChoKVPRecordFieldConfiguration(header)).ToList();
                    }
                    else
                    {
                        MapRecordFields(RecordType);
                    }
                }

                if (KVPRecordFieldConfigurations.Count <= 0)
                {
                    throw new ChoRecordConfigurationException("No record fields specified.");
                }

                //Validate each record field
                foreach (var fieldConfig in KVPRecordFieldConfigurations)
                {
                    fieldConfig.Validate(this);
                }

                //Check if any field has empty names
                if (KVPRecordFieldConfigurations.Where(i => i.FieldName.IsNullOrWhiteSpace()).Count() > 0)
                {
                    throw new ChoRecordConfigurationException("Some fields has empty field name specified.");
                }

                //Check field names for duplicate
                string[] dupFields = KVPRecordFieldConfigurations.GroupBy(i => i.FieldName, FileHeaderConfiguration.StringComparer)
                                     .Where(g => g.Count() > 1)
                                     .Select(g => g.Key).ToArray();

                if (dupFields.Length > 0 /* && !IgnoreDuplicateFields */)
                {
                    throw new ChoRecordConfigurationException("Duplicate field name(s) [Name: {0}] found.".FormatString(String.Join(",", dupFields)));
                }

                PIDict = new Dictionary <string, System.Reflection.PropertyInfo>();
                PDDict = new Dictionary <string, PropertyDescriptor>();
                foreach (var fc in KVPRecordFieldConfigurations)
                {
                    if (fc.PropertyDescriptor == null)
                    {
                        fc.PropertyDescriptor = ChoTypeDescriptor.GetProperties(RecordType).Where(pd => pd.Name == fc.Name).FirstOrDefault();
                    }
                    if (fc.PropertyDescriptor == null)
                    {
                        continue;
                    }

                    PIDict.Add(fc.PropertyDescriptor.Name, fc.PropertyDescriptor.ComponentType.GetProperty(fc.PropertyDescriptor.Name));
                    PDDict.Add(fc.PropertyDescriptor.Name, fc.PropertyDescriptor);
                }


                RecordFieldConfigurationsDict  = KVPRecordFieldConfigurations.Where(i => !i.Name.IsNullOrWhiteSpace()).GroupBy(i => i.Name).Select(g => g.First()).ToDictionary(i => i.Name, FileHeaderConfiguration.StringComparer);
                RecordFieldConfigurationsDict2 = KVPRecordFieldConfigurations.Where(i => !i.FieldName.IsNullOrWhiteSpace()).GroupBy(i => i.Name).Select(g => g.First()).ToDictionary(i => i.FieldName, FileHeaderConfiguration.StringComparer);
                AlternativeKeys = RecordFieldConfigurationsDict2.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Name, FileHeaderConfiguration.StringComparer);
                FCArray         = RecordFieldConfigurationsDict.ToArray();

                LoadNCacheMembers(KVPRecordFieldConfigurations);
            }
        }
Beispiel #3
0
        protected override void OnLoad(EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                var objCtrl = new NBrightDataController();


                // public attributes
                var strSeparator = "";
                if (!String.IsNullOrEmpty(Separator))
                {
                    if (Separator.Contains("src="))
                    {
                        Separator = Separator.Replace("src=\"", "src=\"" + PortalSettings.ActiveTab.SkinPath);
                    }
                    strSeparator = Separator;
                }
                else
                {
                    if (!HtmlList)
                    {
                        strSeparator = "&nbsp;<img alt=\"*\" src=\"" + Globals.ApplicationPath + "/images/breadcrumb.gif\">&nbsp;";
                    }
                }

                var strCssClass = "";
                if (!string.IsNullOrEmpty(CssClass))
                {
                    strCssClass = CssClass;
                }

                int intRootLevel = 0;
                if (Utils.IsNumeric(RootLevel))
                {
                    intRootLevel = int.Parse(RootLevel);
                }

                var strBreadCrumbs = "";

                // process bread crumbs
                int intTab = 0;

                if (!(HideWithNoBreadCrumb && (PortalSettings.ActiveTab.BreadCrumbs.Count == 1)))
                {
                    for (intTab = intRootLevel; intTab <= PortalSettings.ActiveTab.BreadCrumbs.Count - 1; intTab++)
                    {
                        if (intTab != intRootLevel)
                        {
                            strBreadCrumbs += strSeparator;
                        }

                        var objTab     = (TabInfo)PortalSettings.ActiveTab.BreadCrumbs[intTab];
                        var dataRecord = objCtrl.GetByGuidKey(PortalSettings.Current.PortalId, -1, "PL", objTab.TabID.ToString(""));
                        var pagename   = "";
                        if (dataRecord != null)
                        {
                            var dataRecordLang = objCtrl.GetDataLang(dataRecord.ItemID, Utils.GetCurrentCulture());
                            if (dataRecordLang != null)
                            {
                                pagename = dataRecordLang.GetXmlProperty("genxml/textbox/pagename");
                            }
                        }
                        else
                        {
                            // no PL data, so use normal tab data
                            pagename = objTab.TabName;
                        }

                        if (HtmlList)
                        {
                            strBreadCrumbs += "<ul class=\"" + strCssClass + "\">";
                            if (objTab.DisableLink)
                            {
                                strBreadCrumbs += "<li>" + pagename + "</li>";
                            }
                            else
                            {
                                strBreadCrumbs += "<li>" + "<a href=\"" + objTab.FullUrl + "\">" + pagename + "</a>" + "</li>";
                            }
                            strBreadCrumbs += "</ul>";
                        }
                        else
                        {
                            if (objTab.DisableLink)
                            {
                                strBreadCrumbs += "<span class=\"" + strCssClass + "\">" + pagename + "</span>";
                            }
                            else
                            {
                                strBreadCrumbs += "<a href=\"" + objTab.FullUrl + "\" class=\"" + strCssClass + "\">" + pagename + "</a>";
                            }
                        }
                    }
                }
                lBreadCrumb      = new Literal();
                lBreadCrumb.Text = strBreadCrumbs;
                NBrightPLBreadCrumb.Controls.Add(lBreadCrumb);
            }
        }