/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 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 Lesser General Public License for more details.
*
* Copyright (c) 2008 - 2009 Pentaho Corporation and Contributors. All rights reserved.
*/
package generator;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
import java.util.Properties;
import java.io.Writer;
import java.io.PrintWriter;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class DumpPatterns
{
public static void main(String[] args) throws IOException
{
final Locale[] availableLocales = Locale.getAvailableLocales();
for (int i = 0; i < availableLocales.length; i++)
{
final Locale locale = availableLocales[i];
final Properties writer = new Properties();
printDate (writer, DateFormat.SHORT, locale);
printDate (writer, DateFormat.MEDIUM, locale);
printDate (writer, DateFormat.LONG, locale);
printDate (writer, DateFormat.FULL, locale);
printTime (writer, DateFormat.SHORT, locale);
printTime (writer, DateFormat.MEDIUM, locale);
printTime (writer, DateFormat.LONG, locale);
printTime (writer, DateFormat.FULL, locale);
printCurrency(writer, locale);
printInteger(writer, locale);
printPercentage(writer, locale);
printNumber(writer, locale);
final FileOutputStream fout = new FileOutputStream
("/tmp/format-patterns" + createSuffix(locale) + ".properties");
try
{
writer.store(fout, "");
}
finally {
fout.close();
}
}
}
private static String createSuffix(final Locale locale)
{
final String cntry = locale.getCountry();
final String lang = locale.getLanguage();
if (cntry.length() == 0)
{
return "_" + lang.toLowerCase();
}
return "_" + lang.toLowerCase() + "_" + cntry.toUpperCase();
}
private static String typeToString(int type)
{
switch (type)
{
case DateFormat.SHORT: return "short";
case DateFormat.MEDIUM: return "medium";
case DateFormat.LONG: return "long";
case DateFormat.FULL: return "full";
default:
throw new NullPointerException();
}
}
private static void printCurrency(final Properties writer, Locale locale)
{
DecimalFormat sdf = (DecimalFormat) NumberFormat.getCurrencyInstance(locale);
writer.put ("format.currency" , sdf.toPattern());
}
private static void printInteger(final Properties writer, Locale locale)
{
DecimalFormat sdf = (DecimalFormat) NumberFormat.getIntegerInstance(locale);
writer.put ("format.integer" , sdf.toPattern());
}
private static void printPercentage(final Properties writer, Locale locale)
{
DecimalFormat sdf = (DecimalFormat) NumberFormat.getPercentInstance(locale);
writer.put ("format.percentage", sdf.toPattern());
}
private static void printNumber(final Properties writer, Locale locale)
{
DecimalFormat sdf = (DecimalFormat) NumberFormat.getInstance(locale);
writer.put ("format.number", sdf.toPattern());
}
private static void printDate(final Properties writer, int type, Locale locale)
{
SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance(type, locale);
writer.put ("format.date." + typeToString(type) ,sdf.toPattern());
}
private static void printTime(final Properties writer, int type, Locale locale)
{
SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getTimeInstance(type, locale);
writer.put ("format.time." + typeToString(type) , sdf.toPattern());
}
}