Example #1
0
        private void ParseSingleFile(String filename)
        {
            if (!_anythingCached)
            {
                if (!IsCached(filename))
                {
                    Download(filename);
                }
                else
                {
                    _anythingCached = true;
                }
            }
            var lReader = new System.IO.StreamReader(HtmlCacheFileName(filename), TambonHelper.ThaiEncoding);

            String lCurrentLine = String.Empty;
            PopulationDataEntry lCurrentEntry = null;
            int lDataState = 0;

            while ((lCurrentLine = lReader.ReadLine()) != null)
            {
                #region parse name
                if (lCurrentLine.StartsWith(_tableEntryStart))
                {
                    String lValue = StripTableHtmlFromLine(lCurrentLine);
                    lCurrentEntry = new PopulationDataEntry();
                    lCurrentEntry.ParseName(lValue);
                    if (_changwat == null)
                    {
                        _changwat = lCurrentEntry;
                    }
                    else if ((_currentSubEntry == null) | (EntityTypeHelper.SecondLevelEntity.Contains(lCurrentEntry.Type)))
                    {
                        _changwat.SubEntities.Add(lCurrentEntry);
                        _currentSubEntry = lCurrentEntry;
                    }
                    else
                    {
                        _currentSubEntry.SubEntities.Add(lCurrentEntry);
                    }
                    lDataState = 0;
                }
                #endregion
                #region parse population data
                if (lCurrentLine.StartsWith(_tableDataStart))
                {
                    if (lCurrentEntry == null)
                    {
                        throw new ArgumentOutOfRangeException();
                    }
                    String lValue = StripTableHtmlFromLine(lCurrentLine);
                    if (!String.IsNullOrEmpty(lValue))
                    {
                        switch (lDataState)
                        {
                        case 0:
                            lCurrentEntry.Male = Int32.Parse(lValue);
                            break;

                        case 1:
                            lCurrentEntry.Female = Int32.Parse(lValue);
                            break;

                        case 2:
                            lCurrentEntry.Total = Int32.Parse(lValue);
                            break;

                        case 3:
                            lCurrentEntry.Households = Int32.Parse(lValue);
                            break;

                        default:
                            throw new ArgumentOutOfRangeException();
                        }
                    }
                    lDataState++;
                }
                #endregion
            }
        }