Ejemplo n.º 1
0
 /// <summary>
 /// Serialization method resolve instances to the constant
 /// DateFormat.Field values
 /// </summary>
 ///
 protected internal override Object ReadResolve()
 {
     if (calendarField != -1)
     {
         try
         {
             DateFormat.Field result = OfCalendarField(calendarField);
             if (result != null && this.Equals(result))
             {
                 return(result);
             }
         }
         catch (ArgumentException e)
         {
             // text.02=Unknown attribute
             throw new IOException("text.02"); //$NON-NLS-1$
         }
     }
     else
     {
         if (this.Equals(TIME_ZONE))
         {
             return(TIME_ZONE);
         }
         if (this.Equals(HOUR1))
         {
             return(HOUR1);
         }
         if (this.Equals(HOUR_OF_DAY1))
         {
             return(HOUR_OF_DAY1);
         }
     }
     // text.02=Unknown attribute
     throw new IOException("text.02"); //$NON-NLS-1$
 }
Ejemplo n.º 2
0
        private void Append(StringBuilder buffer, FieldPosition position,
                            List <FieldPosition> fields, char format, int count)
        {
            int field = -1;
            int index = patternChars.IndexOf(format);

            if (index == -1)
            {
                // text.03=Unknown pattern character - '{0}'
                throw new ArgumentException("text.03" + format);                 //$NON-NLS-1$
            }

            int beginPosition = buffer.Length;

            DateFormat.Field dateFormatField = null;
            System.Console.Out.WriteLine("index:" + index);
            switch (index)
            {
            case DateFormat.ERA_FIELD:
                dateFormatField = DateFormat.Field.ERA;
                buffer.Append(formatData.eras[calendar.Get(ILOG.J2CsMapping.Util.Calendar.ERA)]);
                break;

            case DateFormat.YEAR_FIELD:
                dateFormatField = DateFormat.Field.YEAR;
                int year = calendar.Get(ILOG.J2CsMapping.Util.Calendar.YEAR);
                if (count < 4)
                {
                    AppendNumber(buffer, 2, year %= 100);
                }
                else
                {
                    AppendNumber(buffer, count, year);
                }
                break;

            case DateFormat.MONTH_FIELD:
                dateFormatField = DateFormat.Field.MONTH;
                int month = calendar.Get(ILOG.J2CsMapping.Util.Calendar.MONTH);
                if (count <= 2)
                {
                    AppendNumber(buffer, count, month + 1);
                }
                else if (count == 3)
                {
                    buffer.Append(formatData.shortMonths[month]);
                }
                else
                {
                    buffer.Append(formatData.months[month]);
                }
                break;

            case DateFormat.DATE_FIELD:
                dateFormatField = DateFormat.Field.DAY_OF_MONTH;
                field           = ILOG.J2CsMapping.Util.Calendar.DATE;
                break;

            case DateFormat.HOUR_OF_DAY1_FIELD:             // k
                dateFormatField = DateFormat.Field.HOUR_OF_DAY1;
                int hour = calendar.Get(ILOG.J2CsMapping.Util.Calendar.HOUR_OF_DAY);
                AppendNumber(buffer, count, (hour == 0) ? 24 : hour);
                break;

            case DateFormat.HOUR_OF_DAY0_FIELD:             // H
                dateFormatField = DateFormat.Field.HOUR_OF_DAY0;
                field           = ILOG.J2CsMapping.Util.Calendar.HOUR_OF_DAY;
                break;

            case DateFormat.MINUTE_FIELD:
                dateFormatField = DateFormat.Field.MINUTE;
                field           = ILOG.J2CsMapping.Util.Calendar.MINUTE;
                break;

            case DateFormat.SECOND_FIELD:
                dateFormatField = DateFormat.Field.SECOND;
                field           = ILOG.J2CsMapping.Util.Calendar.SECOND;
                break;

            case DateFormat.MILLISECOND_FIELD:
                dateFormatField = DateFormat.Field.MILLISECOND;
                int value_ren = calendar.Get(ILOG.J2CsMapping.Util.Calendar.MILLISECOND);
                AppendNumber(buffer, count, value_ren);
                break;

            case DateFormat.DAY_OF_WEEK_FIELD:
                dateFormatField = DateFormat.Field.DAY_OF_WEEK;
                int day = calendar.Get(ILOG.J2CsMapping.Util.Calendar.DAY_OF_WEEK);
                if (count < 4)
                {
                    buffer.Append(formatData.shortWeekdays[day]);
                }
                else
                {
                    buffer.Append(formatData.weekdays[day]);
                }
                break;

            case DateFormat.DAY_OF_YEAR_FIELD:
                dateFormatField = DateFormat.Field.DAY_OF_YEAR;
                field           = ILOG.J2CsMapping.Util.Calendar.DAY_OF_YEAR;
                break;

            case DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD:
                dateFormatField = DateFormat.Field.DAY_OF_WEEK_IN_MONTH;
                field           = ILOG.J2CsMapping.Util.Calendar.DAY_OF_WEEK_IN_MONTH;
                break;

            case DateFormat.WEEK_OF_YEAR_FIELD:
                dateFormatField = DateFormat.Field.WEEK_OF_YEAR;
                field           = ILOG.J2CsMapping.Util.Calendar.WEEK_OF_YEAR;
                break;

            case DateFormat.WEEK_OF_MONTH_FIELD:
                dateFormatField = DateFormat.Field.WEEK_OF_MONTH;
                field           = ILOG.J2CsMapping.Util.Calendar.WEEK_OF_MONTH;
                break;

            case DateFormat.AM_PM_FIELD:
                dateFormatField = DateFormat.Field.AM_PM;
                buffer.Append(formatData.ampms[calendar.Get(ILOG.J2CsMapping.Util.Calendar.AM_PM)]);
                break;

            case DateFormat.HOUR1_FIELD:             // h
                dateFormatField = DateFormat.Field.HOUR1;
                hour            = calendar.Get(ILOG.J2CsMapping.Util.Calendar.HOUR);
                AppendNumber(buffer, count, (hour == 0) ? 12 : hour);
                break;

            case DateFormat.HOUR0_FIELD:             // K
                dateFormatField = DateFormat.Field.HOUR0;
                field           = ILOG.J2CsMapping.Util.Calendar.HOUR;
                break;

            case DateFormat.TIMEZONE_FIELD:             // z
                dateFormatField = DateFormat.Field.TIME_ZONE;
                AppendTimeZone(buffer, count, true);
                break;

            case IBM.ICU.Text.DateFormat.TIMEZONE_RFC_FIELD:             // Z
                dateFormatField = DateFormat.Field.TIME_ZONE;
                AppendTimeZone(buffer, count, false);
                break;
            }
            if (field != -1)
            {
                AppendNumber(buffer, count, calendar.Get(field));
            }

            if (fields != null)
            {
                position = new FieldPosition(dateFormatField);
                position.SetBeginIndex(beginPosition);
                position.SetEndIndex(buffer.Length);
                fields.Add(position);
            }
            else
            {
                // Set to the first occurrence
                if (((Object)position.GetFieldAttribute() == (Object)dateFormatField || (position
                                                                                         .GetFieldAttribute() == null && position.GetField() == index)) &&
                    position.GetEndIndex() == 0)
                {
                    position.SetBeginIndex(beginPosition);
                    position.SetEndIndex(buffer.Length);
                }
            }
        }