/* * * * Copyright 1990-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ package com.sun.j2me.global; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import javax.microedition.global.ResourceException; /** * <code>DateFormatSymbols</code> is class for encapsulating localizable * date/time formatting data, such as the names of the months, the names of the * days of the week, and the time zone data. <code>DateTimeFormat</code> uses * <code>DateFormatSymbols</code> to encapsulate this information. <p> * * DateFormatSymbols is typicaly obtained from <code> * javax.microedition.ResourceManager</code> * respectively from <code>DevResourceManager.getDateFormatSymbols()</code> * from resource file for given locale. <p> * * Typically you shouldn't use <code>DateFormatSymbols</code> directly. Rather, * you are encouraged to create a date/time formatter with the * <code>DateTimeFormat</code> class's factory methods: * <code>getInstance(int style, String locale)</code> * These methods automatically create a <code>DateFormatSymbols</code> for the * formatter so that you don't have to. All fields are public intentionaly. * */ public class DateFormatSymbols implements SerializableResource { /** * Create new DateFormatSymbol uninitialized. */ public DateFormatSymbols() { } /** * The method clones the resource. * * @return copy of the resource or <code>null<code> * if clonning wasn't possible */ public java.lang.Object clone() { DateFormatSymbols newDfs = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); write(baos); baos.close(); byte[] buffer = baos.toByteArray(); ByteArrayInputStream bais = new ByteArrayInputStream(buffer); newDfs = new DateFormatSymbols(); newDfs.read(bais); } catch (IOException ioe) { // cannot clone resource } return newDfs; } /** * eras. */ public String[] eras = new String[2]; /** * month names. */ public String[] months = new String[13]; /** * short month names. */ public String[] shortMonths = new String[13]; /** * day in week names. */ public String[] weekDays = new String[7]; /** * short day in week names. */ public String[] shortWeekDays = new String[7]; /** * ampms. */ public String[] ampms = new String[2]; /** * localized patterns 6 possible styles as they are defined in {@link * DateTimeFormat}. */ public String[] patterns = new String[6]; /** * locale of this symbols. */ public String locale = new String(); /** * Read DateFormatSymbols object from input stream. * * @param in input stream * @throws java.io.IOException error reading resource * @throws javax.microedition.global.ResourceException error creating * resource */ public void read(java.io.InputStream in) throws IOException, ResourceException { DataInputStream dis = new DataInputStream(in); readStrings(eras, dis); readStrings(months, dis); readStrings(shortMonths, dis); readStrings(weekDays, dis); readStrings(shortWeekDays, dis); readStrings(ampms, dis); readStrings(patterns, dis); locale = dis.readUTF(); } /** * Serialize DateFormatSymbols object into output stream. * * @param out output stream * @throws java.io.IOException is thrown if write fails * @throws javax.microedition.global.ResourceException if resource * can't be written */ public void write(java.io.OutputStream out) throws IOException, ResourceException { DataOutputStream dous = new DataOutputStream(out); writeStrings(eras, dous); writeStrings(months, dous); writeStrings(shortMonths, dous); writeStrings(weekDays, dous); writeStrings(shortWeekDays, dous); writeStrings(ampms, dous); writeStrings(patterns, dous); dous.writeUTF(locale); dous.flush(); } /** * Write array helper. Writes string array. * * @param array strings to write * @param dous output stream * @throws IOException exception when write failed */ protected void writeStrings(String[] array, DataOutputStream dous) throws IOException { for (int i = 0; i < array.length; i++) { dous.writeUTF(array[i]); } } /** * Read strings helper. Reads string array. * * @param array string array to read to * @param dis input stream * @throws IOException exception when read failed */ protected void readStrings(String[] array, DataInputStream dis) throws IOException { for (int i = 0; i < array.length; i++) { array[i] = dis.readUTF(); } } }