Example #1
0
        public static DataRecord Read(String ln, RecordReader ins0)
        {
            if (ins0.Open("DataRecord"))
            {
                DataRecord record = new DataRecord();
                record.pl             = ins0.NamedIndex("pl", IBM.ICU.Impl.Duration.Impl.DataRecord.EPluralization.names);
                record.pluralNames    = ins0.StringTable("pluralName");
                record.genders        = ins0.NamedIndexArray("gender", IBM.ICU.Impl.Duration.Impl.DataRecord.EGender.names);
                record.singularNames  = ins0.StringArray("singularName");
                record.halfNames      = ins0.StringArray("halfName");
                record.numberNames    = ins0.StringArray("numberName");
                record.mediumNames    = ins0.StringArray("mediumName");
                record.shortNames     = ins0.StringArray("shortName");
                record.measures       = ins0.StringArray("measure");
                record.rqdSuffixes    = ins0.StringArray("rqdSuffix");
                record.optSuffixes    = ins0.StringArray("optSuffix");
                record.halves         = ins0.StringArray("halves");
                record.halfPlacements = ins0.NamedIndexArray("halfPlacement",
                                                             IBM.ICU.Impl.Duration.Impl.DataRecord.EHalfPlacement.names);
                record.halfSupport = ins0.NamedIndexArray("halfSupport",
                                                          IBM.ICU.Impl.Duration.Impl.DataRecord.EHalfSupport.names);
                record.fifteenMinutes         = ins0.String("fifteenMinutes");
                record.fiveMinutes            = ins0.String("fiveMinutes");
                record.requiresDigitSeparator = ins0.Bool("requiresDigitSeparator");
                record.digitPrefix            = ins0.String("digitPrefix");
                record.countSep           = ins0.String("countSep");
                record.shortUnitSep       = ins0.String("shortUnitSep");
                record.unitSep            = ins0.StringArray("unitSep");
                record.unitSepRequiresDP  = ins0.BoolArray("unitSepRequiresDP");
                record.requiresSkipMarker = ins0.BoolArray("requiresSkipMarker");
                record.numberSystem       = ins0.NamedIndex("numberSystem",
                                                            IBM.ICU.Impl.Duration.Impl.DataRecord.ENumberSystem.names);
                record.zero              = ins0.Character("zero");
                record.decimalSep        = ins0.Character("decimalSep");
                record.omitSingularCount = ins0.Bool("omitSingularCount");
                record.omitDualCount     = ins0.Bool("omitDualCount");
                record.zeroHandling      = ins0.NamedIndex("zeroHandling",
                                                           IBM.ICU.Impl.Duration.Impl.DataRecord.EZeroHandling.names);
                record.decimalHandling = ins0.NamedIndex("decimalHandling",
                                                         IBM.ICU.Impl.Duration.Impl.DataRecord.EDecimalHandling.names);
                record.fractionHandling = ins0.NamedIndex("fractionHandling",
                                                          IBM.ICU.Impl.Duration.Impl.DataRecord.EFractionHandling.names);
                record.skippedUnitMarker = ins0.String("skippedUnitMarker");
                record.allowZero         = ins0.Bool("allowZero");
                record.weeksAloneOnly    = ins0.Bool("weeksAloneOnly");
                record.useMilliseconds   = ins0.NamedIndex("useMilliseconds",
                                                           IBM.ICU.Impl.Duration.Impl.DataRecord.EMilliSupport.names);
                if (ins0.Open("ScopeDataList"))
                {
                    IList list = new ArrayList();     // of ScopeData
                    DataRecord.ScopeData data;
                    while (null != (data = IBM.ICU.Impl.Duration.Impl.DataRecord.ScopeData.Read(ins0)))
                    {
                        ILOG.J2CsMapping.Collections.Generics.Collections.Add(list, data);
                    }
                    if (ins0.Close())
                    {
                        record.scopeData = (DataRecord.ScopeData [])ILOG.J2CsMapping.Collections.Collections.ToArray(list, new DataRecord.ScopeData [list.Count]);
                    }
                }

                if (ins0.Close())
                {
                    return(record);
                }
            }
            else
            {
                throw new Exception("did not find DataRecord while reading "
                                    + ln);
            }
            throw new Exception("null data read while reading " + ln);
            // Thread.dumpStack();
            // return null;
        }
        public override PeriodFormatterData Get(String localeName)
        {
            lock (this) {
                if (lastLocale != null && lastLocale.Equals(localeName))
                {
                    return(lastData);
                }

                PeriodFormatterData ld = (PeriodFormatterData)ILOG.J2CsMapping.Collections.Collections.Get(cache, localeName);
                if (ld == null)
                {
                    String ln = localeName;
                    while (!ILOG.J2CsMapping.Collections.Collections.Contains(ln, availableLocales))
                    {
                        int ix = ln.LastIndexOf("_");
                        if (ix > -1)
                        {
                            ln = ln.Substring(0, (ix) - (0));
                        }
                        else if (!"test".Equals(ln))
                        {
                            ln = "test";
                        }
                        else
                        {
                            ln = null;
                            break;
                        }
                    }
                    if (ln != null)
                    {
                        String name = PATH + "pfd_" + ln + ".xml";
                        try {
                            Stream mask0 = IBM.ICU.Impl.ICUData.GetStream(GetType(), name);
                            if (mask0 == null)
                            {
                                throw new MissingManifestResourceException("no resource named " + name);
                            }
                            else
                            {
                                DataRecord dr = IBM.ICU.Impl.Duration.Impl.DataRecord.Read(ln,
                                                                                           new XMLRecordReader(new StreamReader(mask0, System.Text.Encoding.GetEncoding("UTF-8"))));
                                if (dr != null)
                                {
                                    // debug
                                    // if (false && ln.equals("ar_EG")) {
                                    // OutputStreamWriter osw = new
                                    // OutputStreamWriter(System.out, "UTF-8");
                                    // XMLRecordWriter xrw = new
                                    // XMLRecordWriter(osw);
                                    // dr.write(xrw);
                                    // osw.flush();
                                    // }
                                    ld = new PeriodFormatterData(localeName, dr);
                                }
                            }
                        } catch (IOException e) {
                            throw new MissingManifestResourceException("Unhandled Encoding for resource " + name);
                        }
                    }
                    else
                    {
                        throw new MissingManifestResourceException("Duration data not found for  " + localeName);
                    }

                    // if (ld == null) {
                    // ld = getFallbackFormatterData();
                    // }
                    ILOG.J2CsMapping.Collections.Collections.Put(cache, localeName, ld);
                }
                lastData   = ld;
                lastLocale = localeName;

                return(ld);
            }
        }