moved the language and country lists OUT of the database and into properties

files as they are likely to change VERY infrequently; this simplifies a lot
of bits of code that would otherwise have to call through VeniceEngine, etc.
Also folded the LocaleFactory class method into the new International object
used for managing the lists.
This commit is contained in:
Eric J. Bowersox 2001-11-16 22:12:14 +00:00
parent 33eecf87fc
commit 313a46818f
30 changed files with 1001 additions and 985 deletions

View File

@ -149,13 +149,6 @@ CREATE TABLE contacts (
lastupdate DATETIME
);
# An auxiliary table mapping country codes to country names.
CREATE TABLE refcountry (
code CHAR(2) NOT NULL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
INDEX name_x (name)
);
# A table listing email addresses which are barred from registering.
CREATE TABLE emailban (
address VARCHAR(255) NOT NULL PRIMARY KEY,
@ -194,13 +187,6 @@ CREATE TABLE sigs (
INDEX list_alpha (catid, signame)
);
# An auxiliary table mapping language codes to names.
CREATE TABLE reflanguage (
code VARCHAR(20) NOT NULL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
INDEX name_x (name)
);
# The table mapping category IDs to category names.
CREATE TABLE refcategory (
catid INT NOT NULL PRIMARY KEY,
@ -515,480 +501,6 @@ INSERT INTO refaudit (type, descr) VALUES
(315, 'Delete Conference'),
(9999999, 'DUMMY');
# The ISO 3166 two-letter country codes. Source is
# <http://www.din.de/gremien/nas/nabd/iso3166ma/>.
INSERT INTO refcountry (code, name) VALUES
('AF', 'Afghanistan'),
('AL', 'Albania'),
('DZ', 'Algeria'),
('AS', 'American Samoa'),
('AD', 'Andorra'),
('AO', 'Angola'),
('AI', 'Anguilla'),
('AQ', 'Antarctica'),
('AG', 'Antigua and Barbuda'),
('AR', 'Argentina'),
('AM', 'Armenia'),
('AW', 'Aruba'),
('AU', 'Australia'),
('AT', 'Austria'),
('AZ', 'Azerbaijan'),
('BS', 'Bahamas'),
('BH', 'Bahrain'),
('BD', 'Bangladesh'),
('BB', 'Barbados'),
('BY', 'Belarus'),
('BE', 'Belgium'),
('BZ', 'Belize'),
('BJ', 'Benin'),
('BM', 'Bermuda'),
('BT', 'Bhutan'),
('BO', 'Bolivia'),
('BA', 'Bosnia and Herzegovina'),
('BW', 'Botswana'),
('BV', 'Bouvet Island'),
('BR', 'Brazil'),
('IO', 'British Indian Ocean Territory'),
('BN', 'Brunei Darussalam'),
('BG', 'Bulgaria'),
('BF', 'Burkina Faso'),
('BI', 'Burundi'),
('KH', 'Cambodia'),
('CM', 'Cameroon'),
('CA', 'Canada'),
('CV', 'Cape Verde'),
('KY', 'Cayman Islands'),
('CF', 'Central African Republic'),
('TD', 'Chad'),
('CL', 'Chile'),
('CN', 'China'),
('CX', 'Chrismas Island'),
('CC', 'Cocos (Keeling) Islands'),
('CO', 'Colombia'),
('KM', 'Comoros'),
('CG', 'Congo'),
('CD', 'Congo (Democratic Republic of)'),
('CK', 'Cook Islands'),
('CR', 'Costa Rica'),
('CI', 'Cote D''Ivoire'),
('HR', 'Croatia'),
('CU', 'Cuba'),
('CY', 'Cyprus'),
('CZ', 'Czech Republic'),
('DK', 'Denmark'),
('DJ', 'Djibouti'),
('DM', 'Dominica'),
('DO', 'Dominican Republic'),
('TP', 'East Timor'),
('EC', 'Ecuador'),
('EG', 'Egypt'),
('SV', 'El Salvador'),
('GQ', 'Equatorial Guinea'),
('ER', 'Eritrea'),
('EE', 'Estonia'),
('ET', 'Ethiopia'),
('FK', 'Falkland Islands (Malvinas)'),
('FO', 'Faroe Islands'),
('FJ', 'Fiji'),
('FI', 'Finland'),
('FR', 'France'),
('GF', 'French Guiana'),
('PF', 'French Polynesia'),
('TF', 'French Southern Territories'),
('GA', 'Gabon'),
('GM', 'Gambia'),
('GE', 'Georgia'),
('DE', 'Germany'),
('GH', 'Ghana'),
('GI', 'Gibraltar'),
('GR', 'Greece'),
('GL', 'Greenland'),
('GD', 'Grenada'),
('GP', 'Guadeloupe'),
('GU', 'Guam'),
('GT', 'Guatemala'),
('GN', 'Guinea'),
('GW', 'Guinea-Bissau'),
('GY', 'Guyana'),
('HT', 'Haiti'),
('HM', 'Heard Island and McDonald Islands'),
('VA', 'Holy See (Vatican City State)'),
('HN', 'Honduras'),
('HK', 'Hong Kong'),
('HU', 'Hungary'),
('IS', 'Iceland'),
('IN', 'India'),
('ID', 'Indonesia'),
('IR', 'Iran (Islamic Republic of)'),
('IQ', 'Iraq'),
('IE', 'Ireland'),
('IL', 'Israel'),
('IT', 'Italy'),
('JM', 'Jamaica'),
('JP', 'Japan'),
('JO', 'Jordan'),
('KZ', 'Kazakhstan'),
('KE', 'Kenya'),
('KI', 'Kiribati'),
('KP', 'Korea (Democratic People''s Republic of)'),
('KO', 'Korea (Republic of)'),
('KW', 'Kuwait'),
('KG', 'Kyrgyzstan'),
('LA', 'Lao People''s Democratic Republic'),
('LV', 'Latvia'),
('LB', 'Lebanon'),
('LS', 'Lesotho'),
('LR', 'Liberia'),
('LY', 'Libyan Arab Jamahirya'),
('LI', 'Liechtenstein'),
('LT', 'Lithuania'),
('LU', 'Luxembourg'),
('MO', 'Macau'),
('MK', 'Macedonia (Former Yugoslav Republic of)'),
('MG', 'Madagascar'),
('MW', 'Malawi'),
('MY', 'Malaysia'),
('MV', 'Maldives'),
('ML', 'Mali'),
('MT', 'Malta'),
('MH', 'Marshall Islands'),
('MQ', 'Martinique'),
('MR', 'Mauritania'),
('MU', 'Mauritius'),
('YT', 'Mayotte'),
('MX', 'Mexico'),
('FM', 'Micronesia (Federated States of)'),
('MD', 'Moldova, Republic of'),
('MC', 'Monaco'),
('MN', 'Mongolia'),
('MS', 'Montserrat'),
('MA', 'Morocco'),
('MZ', 'Mozambique'),
('MM', 'Myanmar'),
('NA', 'Namibia'),
('NR', 'Nauru'),
('NP', 'Nepal'),
('NL', 'Netherlands'),
('AN', 'Netherlands Antillies'),
('NC', 'New Caledonia'),
('NZ', 'New Zealand'),
('NI', 'Nicaragua'),
('NE', 'Niger'),
('NG', 'Nigeria'),
('NU', 'Niue'),
('NF', 'Norfolk Island'),
('MP', 'Northern Mariana Islands'),
('NO', 'Norway'),
('OM', 'Oman'),
('PK', 'Pakistan'),
('PW', 'Palau'),
('PS', 'Palestinian Territory, Occupied'),
('PA', 'Panama'),
('PG', 'Papua New Guinea'),
('PY', 'Paraguay'),
('PE', 'Peru'),
('PH', 'Phillipines'),
('PN', 'Pitcairn'),
('PL', 'Poland'),
('PT', 'Portugal'),
('PR', 'Puerto Rico'),
('QA', 'Qatar'),
('RE', 'Reunion'),
('RO', 'Romania'),
('RU', 'Russian Federation'),
('RW', 'Rwanda'),
('SH', 'Saint Helena'),
('KN', 'Saint Kitts and Nevis'),
('LC', 'Saint Lucia'),
('PM', 'Saint Pierre and Miquelon'),
('VC', 'Saint Vincent and The Grenadines'),
('WS', 'Samoa'),
('SM', 'San Marino'),
('ST', 'Sao Tome and Principe'),
('SA', 'Saudi Arabia'),
('SN', 'Senegal'),
('SC', 'Seychelles'),
('SL', 'Sierra Leone'),
('SG', 'Singapore'),
('SK', 'Slovakia'),
('SI', 'Slovenia'),
('SB', 'Solomon Islands'),
('SO', 'Somalia'),
('ZA', 'South Africa'),
('GS', 'South Georgia and the South Sandwich Islands'),
('ES', 'Spain'),
('LK', 'Sri Lanka'),
('SD', 'Sudan'),
('SR', 'Suriname'),
('SJ', 'Svalbard and Jan Mayen'),
('SZ', 'Swaziland'),
('SE', 'Sweden'),
('CH', 'Switzerland'),
('SY', 'Syrian Arab Republic'),
('TW', 'Taiwan (Province of China)'),
('TJ', 'Tajikistan'),
('TZ', 'Tanzania, United Republic of'),
('TH', 'Thailand'),
('TG', 'Togo'),
('TK', 'Tokelau'),
('TO', 'Tonga'),
('TT', 'Trinidad and Tobago'),
('TN', 'Tunisia'),
('TR', 'Turkey'),
('TM', 'Turkmenistan'),
('TC', 'Turks and Caicos Islands'),
('TV', 'Tuvalu'),
('UG', 'Uganda'),
('UA', 'Ukraine'),
('AE', 'United Arab Emirates'),
('GB', 'United Kingdom'),
('US', 'United States'),
('UM', 'United States Minor Outlying Islands'),
('UY', 'Uruguay'),
('UZ', 'Uzbekistan'),
('VU', 'Vanatu'),
('VE', 'Venezuela'),
('VN', 'Viet Nam'),
('VG', 'Virgin Islands (British)'),
('VI', 'Virgin Islands (U.S.)'),
('WF', 'Wallis and Futuna'),
('EH', 'Western Sahara'),
('YE', 'Yemen'),
('YU', 'Yugoslavia'),
('ZM', 'Zambia'),
('ZW', 'Zimbabwe'),
('XX', '(unknown)');
# The RFC1766 language codes, based on ISO 639 and 3166. Sources:
# ISO 639 from <http://www.w3.org/WAI/ER/IG/ert/iso639.htm>, 3166 as above,
# language variants by country from Windows WINNT.H header file; additional
# language codes (expanded zh- and i- names) from IANA,
# <ftp://ftp.isi.edu/in-notes/iana/assignments/languages/>; changes to Indonesian,
# Hebrew, and Yiddish noted from Java 2 SDK documentation
INSERT INTO reflanguage (code, name) VALUES
('aa', 'Afar'),
('ab', 'Abkhazian'),
('af', 'Afrikaans'),
('am', 'Amharic'),
('ar', 'Arabic'),
('ar-SA', 'Arabic (Saudi Arabia)'),
('ar-IQ', 'Arabic (Iraq)'),
('ar-EG', 'Arabic (Egypt)'),
('ar-LY', 'Arabic (Libya)'),
('ar-DZ', 'Arabic (Algeria)'),
('ar-MA', 'Arabic (Morocco)'),
('ar-TN', 'Arabic (Tunisia)'),
('ar-OM', 'Arabic (Oman)'),
('ar-YE', 'Arabic (Yemen)'),
('ar-SY', 'Arabic (Syria)'),
('ar-JO', 'Arabic (Jordan)'),
('ar-LB', 'Arabic (Lebanon)'),
('ar-KW', 'Arabic (Kuwait)'),
('ar-AE', 'Arabic (U.A.E.)'),
('ar-BH', 'Arabic (Bahrain)'),
('ar-QA', 'Arabic (Qatar)'),
('as', 'Assamese'),
('ay', 'Aymara'),
('az', 'Azerbaijani'),
('ba', 'Bashkir'),
('be', 'Byelorussian'),
('bg', 'Bulgarian'),
('bh', 'Bihari'),
('bi', 'Bislama'),
('bn', 'Bengali'),
('bo', 'Tibetan'),
('br', 'Breton'),
('ca', 'Catalan'),
('co', 'Corsican'),
('cs', 'Czech'),
('cy', 'Welsh'),
('da', 'Danish'),
('de', 'German'),
('de-CH', 'German (Swiss)'),
('de-AT', 'German (Austria)'),
('de-LU', 'German (Luxembourg)'),
('de-LI', 'German (Liechtenstein)'),
('dz', 'Bhutani'),
('el', 'Greek'),
('en', 'English'),
('en-US', 'English (United States)'),
('en-GB', 'English (United Kingdom)'),
('en-AU', 'English (Australian)'),
('en-CA', 'English (Canadian)'),
('en-NZ', 'English (New Zealand)'),
('en-IE', 'English (Irish)'),
('en-ZA', 'English (South Africa)'),
('en-JM', 'English (Jamaica)'),
('en-caribbean', 'English (Caribbean)'),
('en-BZ', 'English (Belize)'),
('en-TT', 'English (Trinidad)'),
('en-scouse', 'English (Scouse)'),
('eo', 'Esperanto'),
('es', 'Spanish (Modern)'),
('es-ES', 'Spanish (Castilian)'),
('es-MX', 'Spanish (Mexican)'),
('es-GT', 'Spanish (Guatemala)'),
('es-CR', 'Spanish (Costa Rica)'),
('es-PA', 'Spanish (Panama)'),
('es-DO', 'Spanish (Dominican Republic)'),
('es-VE', 'Spanish (Venezuela)'),
('es-CO', 'Spanish (Colombia)'),
('es-PE', 'Spanish (Peru)'),
('es-AR', 'Spanish (Argentina)'),
('es-EC', 'Spanish (Ecuador)'),
('es-CL', 'Spanish (Chile)'),
('es-UY', 'Spanish (Uruguay)'),
('es-PY', 'Spanish (Paraguay)'),
('es-BO', 'Spanish (Bolivia)'),
('es-SV', 'Spanish (El Salvador)'),
('es-HN', 'Spanish (Honduras)'),
('es-NI', 'Spanish (Nicaragua)'),
('es-PR', 'Spanish (Puerto Rico)'),
('et', 'Estonian'),
('eu', 'Basque'),
('fa', 'Persian'),
('fi', 'Finnish'),
('fj', 'Fiji'),
('fo', 'Faeroese'),
('fr', 'French'),
('fr-BE', 'French (Belgian)'),
('fr-CA', 'French (Canadian)'),
('fr-CH', 'French (Swiss)'),
('fr-LU', 'French (Luxembourg)'),
('fy', 'Frisian'),
('ga', 'Irish'),
('gd', 'Scots Gaelic'),
('gl', 'Galician'),
('gn', 'Guarani'),
('gu', 'Gujarati'),
('ha', 'Hausa'),
('hi', 'Hindi'),
('hr', 'Croatian'),
('hu', 'Hungarian'),
('hy', 'Armenian'),
('ia', 'Interlingua'),
('ie', 'Interlingue'),
('ik', 'Inupiak'),
('id', 'Indonesian'),
('is', 'Icelandic'),
('it', 'Italian'),
('it-CH', 'Italian (Swiss)'),
('he', 'Hebrew'),
('ja', 'Japanese'),
('yi', 'Yiddish'),
('jw', 'Javanese'),
('ka', 'Georgian'),
('kk', 'Kazakh'),
('kl', 'Greenlandic'),
('km', 'Cambodian'),
('kn', 'Kannada'),
('ko', 'Korean'),
('ko-johab', 'Korean (Johab)'),
('ks', 'Kashmiri'),
('ku', 'Kurdish'),
('ky', 'Kirghiz'),
('la', 'Latin'),
('ln', 'Lingala'),
('lo', 'Laothian'),
('lt', 'Lithuanian'),
('lv', 'Latvian'),
('mg', 'Malagasi'),
('mi', 'Maori'),
('mk', 'Macedonian'),
('ml', 'Malayalam'),
('mn', 'Mongolian'),
('mo', 'Moldavian'),
('mr', 'Marathi'),
('ms', 'Malay'),
('mt', 'Maltese'),
('my', 'Burmese'),
('na', 'Nauru'),
('ne', 'Nepali'),
('nl', 'Dutch'),
('nl-BE', 'Dutch (Belgian)'),
('no', 'Norwegian'),
('no-bok', 'Norwegian (Bokmal)'),
('no-nyn', 'Norwegian (Nynorsk)'),
('oc', 'Occitan'),
('om', 'Oromo'),
('or', 'Oriya'),
('pa', 'Punjabi'),
('pl', 'Polish'),
('ps', 'Pashto'),
('pt', 'Portuguese'),
('pt-BR', 'Portuguese (Brazilian)'),
('qu', 'Quechua'),
('rm', 'Rhaeto-Romance'),
('rn', 'Kirundi'),
('ro', 'Romanian'),
('ru', 'Russian'),
('rw', 'Kinyarwanda'),
('sa', 'Sanskrit'),
('sd', 'Sindhi'),
('sg', 'Sangro'),
('sh', 'Serbo-Croatian'),
('si', 'Singhalese'),
('sk', 'Slovak'),
('sl', 'Slovenian'),
('sm', 'Samoan'),
('sn', 'Shona'),
('so', 'Somali'),
('sq', 'Albanian'),
('sr', 'Serbian (Latin)'),
('sr-cyrillic', 'Serbian (Cyrillic)'),
('ss', 'Siswati'),
('st', 'Sesotho'),
('su', 'Sudanese'),
('sv', 'Swedish'),
('sv-FI', 'Swedish (Finland)'),
('sw', 'Swahili'),
('ta', 'Tamil'),
('te', 'Tegulu'),
('tg', 'Tajik'),
('th', 'Thai'),
('ti', 'Tigrinya'),
('tk', 'Turkmen'),
('tl', 'Tagalog'),
('tn', 'Setswana'),
('to', 'Tonga'),
('tr', 'Turkish'),
('ts', 'Tsonga'),
('tt', 'Tatar'),
('tw', 'Twi'),
('uk', 'Ukrainian'),
('ur', 'Urdu'),
('uz', 'Uzbek'),
('vi', 'Vietnamese'),
('vo', 'Volapuk'),
('wo', 'Wolof'),
('xh', 'Xhosa'),
('yo', 'Yoruba'),
('zh', 'Chinese'),
('zh-TW', 'Chinese (Traditional)'),
('zh-CN', 'Chinese (Simplified)'),
('zh-HK', 'Chinese (Hong Kong)'),
('zh-SG', 'Chinese (Singapore)'),
('zh-gan', 'Chinese (Gan)'),
('zh-guoyu', 'Chinese (Mandarin)'),
('zh-hakka', 'Chinese (Hakka)'),
('zh-min', 'Chinese (Taiwanese)'),
('zh-wuu', 'Chinese (Shanghai)'),
('zh-xiang', 'Chinese (Hunan)'),
('zh-yue', 'Chinese (Cantonese)'),
('zu', 'Zulu'),
('i-ami', 'Amis'),
('i-bnn', 'Bunun'),
('i-hak', 'Hakka'),
('i-klingon', 'Klingon'),
('i-lux', 'Luxembourgish'),
('i-mingo', 'Mingo'),
('i-navajo', 'Navajo'),
('i-pwn', 'Paiwan'),
('i-tao', 'Tao'),
('i-tay', 'Tayal'),
('i-tsu', 'Tsou'),
('i-default', '(unknown)');
# Populate the Category table.
# Source: Mozilla Open Directory Project categorization system <http://dmoz.org>;
# additional categorization from WebbMe categories

View File

@ -0,0 +1,82 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.util;
/**
* A utility class used by <CODE>International</CODE> that stores a country code and name pair.
*
* @author Eric J. Bowersox &lt;erbo@silcom.com&gt;
* @version X
* @see International
*/
public final class Country
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private String code; // the country code
private String name; // the country name
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
/**
* Constructs a new <CODE>Country</CODE> object.
*
* @param code The country code.
* @param name The country name.
*/
Country(String code, String name)
{
this.code = code.trim().toUpperCase();
this.name = name.trim();
} // end constructor
/*--------------------------------------------------------------------------------
* External getters
*--------------------------------------------------------------------------------
*/
/**
* Returns the 2-letter country code for this country.
*
* @return The 2-letter country code for this country.
*/
public final String getCode()
{
return code;
} // end code
/**
* Returns the name of this country.
*
* @return The name of this country.
*/
public final String getName()
{
return name;
} // end name
} // end class Country

View File

@ -0,0 +1,269 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.util;
import java.io.*;
import java.util.*;
/**
* A class which centralizes a number of "international" resources, such as locales,
* country lists, and language lists.
*
* @author Eric J. Bowersox &lt;erbo@silcom.com&gt;
* @version X
*/
public class International
{
/*--------------------------------------------------------------------------------
* Static data members
*--------------------------------------------------------------------------------
*/
private static International self = new International(); // me
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private List country_list = null; // list of Country objects
private Map country_map = null; // mapping from codes to Country objects
private List language_list = null; // list of Language objects
private Map language_map = null; // mapping from codes to Language objects
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
/**
* Constructs a new instance of the <CODE>International</CODE> object. Only one instance
* of this object is ever created.
*/
private International()
{ // do nothing
} // end constructor
/*--------------------------------------------------------------------------------
* Internal operations
*--------------------------------------------------------------------------------
*/
/**
* Loads the internal list of countries from a resource file.
*
* @exception RuntimeException If an I/O error occurred while loading the country list.
*/
private synchronized void loadCountryList()
{
if ((country_list!=null) || (country_map!=null))
return; // already loaded
// Create temporary list and map to hold read data.
ArrayList tmp_list = new ArrayList();
HashMap tmp_map = new HashMap();
try
{ // Load the country properties file.
BufferedReader data =
new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("countries.properties")));
String l; // temporary line
while ((l = data.readLine())!=null)
{ // read lines from the properties file
l = l.trim();
if ((l.length()==0) || (l.startsWith("#")))
continue; // blank line or comment line
int pos = l.indexOf('=');
if (pos<0)
continue; // no properties - just forget this line
Country c = new Country(l.substring(0,pos),l.substring(pos+1));
tmp_list.add(c);
tmp_map.put(c.getCode(),c);
} // end while
} // end try
catch (IOException e)
{ // IO error loading country properties...
throw new RuntimeException("Error loading country.properties: " + e.getMessage());
} // end catch
// Set up the lists, which are considered "unmodifiable."
tmp_list.trimToSize();
country_list = Collections.unmodifiableList(tmp_list);
country_map = Collections.unmodifiableMap(tmp_map);
} // end loadCountryList
/**
* Loads the internal list of languages from a resource file.
*
* @exception RuntimeException If an I/O error occurred while loading the language list.
*/
private synchronized void loadLanguageList()
{
if ((language_list!=null) || (language_map!=null))
return; // already loaded
// Create temporary list and map to hold read data.
ArrayList tmp_list = new ArrayList();
HashMap tmp_map = new HashMap();
try
{ // Load the language properties file.
BufferedReader data =
new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("languages.properties")));
String l; // temporary line
while ((l = data.readLine())!=null)
{ // read lines from the properties file
l = l.trim();
if ((l.length()==0) || (l.startsWith("#")))
continue; // blank line or comment line
int pos = l.indexOf('=');
if (pos<0)
continue; // no properties - just forget this line
Language lng = new Language(l.substring(0,pos),l.substring(pos+1));
tmp_list.add(lng);
tmp_map.put(lng.getCode(),lng);
} // end while
} // end try
catch (IOException e)
{ // IO error loading language properties...
throw new RuntimeException("Error loading language.properties: " + e.getMessage());
} // end catch
// Set up the lists, which are considered "unmodifiable."
tmp_list.trimToSize();
language_list = Collections.unmodifiableList(tmp_list);
language_map = Collections.unmodifiableMap(tmp_map);
} // end loadLanguageList
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
/**
* Returns the list of defined countries.
*
* @return The list of <CODE>Country</CODE> objects that are currently defined.
*/
public List getCountryList()
{
loadCountryList();
return country_list;
} // end getCountryList
/**
* Returns the <CODE>Country</CODE> object with the specified code.
*
* @param code The country code to match.
* @return The matching <CODE>Country</CODE> object, or <CODE>null</CODE> if no country matched.
*/
public Country getCountryForCode(String code)
{
if (code==null)
return null;
loadCountryList();
return (Country)(country_map.get(code.trim().toUpperCase()));
} // end getCountryForCode
/**
* Returns the list of defined languages.
*
* @return The list of <CODE>Language</CODE> objects that are currently defined.
*/
public List getLanguageList()
{
loadLanguageList();
return language_list;
} // end getLanguageList
/**
* Returns the <CODE>Language</CODE> object with the specified code.
*
* @param code The language code to match.
* @return The matching <CODE>Language</CODE> object, or <CODE>null</CODE> if no language matched.
*/
public Language getLanguageForCode(String code)
{
if (code==null)
return null;
loadLanguageList();
return (Language)(language_map.get(code.trim()));
} // end getLanguageForCode
/**
* Creates a <CODE>Locale</CODE> from a standard descriptor string.
*
* @param streq The string equivalent of the Locale to be created.
* @return The corresponding <CODE>Locale</CODE>, or the default <CODE>Locale</CODE> if the parameter is
* <CODE>null</CODE> or the empty string.
*/
public Locale createLocale(String streq)
{
if ((streq==null) || (streq.length()==0))
return Locale.getDefault(); // no locale
int p1 = streq.indexOf('_');
if (p1<0)
return new Locale(streq,""); // language but no country specified
String x_lang = streq.substring(0,p1);
int p2 = streq.indexOf('_',p1+1);
if (p2<0)
{ // there's only one underscore - figure out what part the last part is
String lastpart = streq.substring(p1+1);
if (lastpart.length()==2)
return new Locale(x_lang,lastpart); // language + country
else
return new Locale(x_lang,"",lastpart); // language + country(null) + variant
} // end if
// do all three variants
return new Locale(x_lang,streq.substring(p1+1,p2),streq.substring(p2+1));
} // end createLocale
/*--------------------------------------------------------------------------------
* External static operations
*--------------------------------------------------------------------------------
*/
/**
* Returns the singleton instance of the <CODE>International</CODE> object.
*
* @return The singleton instance of the <CODE>International</CODE> object.
*/
public static International get()
{
return self;
} // end get()
} // end class International

View File

@ -0,0 +1,82 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.util;
/**
* A utility class used by <CODE>International</CODE> that stores a language code and name pair.
*
* @author Eric J. Bowersox &lt;erbo@silcom.com&gt;
* @version X
* @see International
*/
public final class Language
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private String code; // the language code
private String name; // the language name
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
/**
* Constructs a new <CODE>Language</CODE> object.
*
* @param code The language code.
* @param name The language name.
*/
Language(String code, String name)
{
this.code = code.trim();
this.name = name.trim();
} // end constructor
/*--------------------------------------------------------------------------------
* External getters
*--------------------------------------------------------------------------------
*/
/**
* Returns the RFC 1766 language code for this language.
*
* @return The RFC 1766 language code for this language.
*/
public final String getCode()
{
return code;
} // end code
/**
* Returns the name of this language.
*
* @return The name of this language.
*/
public final String getName()
{
return name;
} // end name
} // end class Language

View File

@ -1,78 +0,0 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.util;
import java.util.*;
/**
* A utility class which creates <CODE>Locale</CODE> objects from standard descriptor strings.
* The descriptor strings are of the form returned by <CODE>Locale.toString()</CODE>.
*
* @author Eric J. Bowersox &lt;erbo@silcom.com&gt;
* @version X
* @see java.util.Locale
* @see java.util.Locale#toString()
*/
public class LocaleFactory
{
/*--------------------------------------------------------------------------------
* Constructor
*--------------------------------------------------------------------------------
*/
private LocaleFactory()
{ // this object cannot be instantiated
} // end constructor
/*--------------------------------------------------------------------------------
* External static operations
*--------------------------------------------------------------------------------
*/
/**
* Creates a <CODE>Locale</CODE> from a standard descriptor string.
*
* @param streq The string equivalent of the Locale to be created.
* @return The corresponding <CODE>Locale</CODE>, or the default <CODE>Locale</CODE> if the parameter is
* <CODE>null</CODE> or the empty string.
*/
public static Locale createLocale(String streq)
{
if ((streq==null) || (streq.length()==0))
return Locale.getDefault(); // no locale
int p1 = streq.indexOf('_');
if (p1<0)
return new Locale(streq,""); // language but no country specified
String x_lang = streq.substring(0,p1);
int p2 = streq.indexOf('_',p1+1);
if (p2<0)
{ // there's only one underscore - figure out what part the last part is
String lastpart = streq.substring(p1+1);
if (lastpart.length()==2)
return new Locale(x_lang,lastpart); // language + country
else
return new Locale(x_lang,"",lastpart); // language + country(null) + variant
} // end if
// do all three variants
return new Locale(x_lang,streq.substring(p1+1,p2),streq.substring(p2+1));
} // end createLocale
} // end class LocaleFactory

View File

@ -0,0 +1,261 @@
# The contents of this file are subject to the Mozilla Public License Version 1.1
# (the "License"); you may not use this file except in compliance with the License.
# You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
#
# Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
# WARRANTY OF ANY KIND, either express or implied. See the License for the specific
# language governing rights and limitations under the License.
#
# The Original Code is the Venice Web Communities System.
#
# The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
# for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
# Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
#
# Contributor(s):
# -------------------------------------------------------------------------------------
# This list of countries is taken from the ISO 3166 standard list of country names and
# 2-letter codes <http://www.din.de/gremien/nas/nabd/iso3166ma/>. When adding new
# entries to this file, make sure and add it in sorted order by country NAME! You can
# re-sort the country entries with "sort -t = -k 2 input > output", but then make sure
# the "XX=(unknown)" entry appears first!
XX=(unknown)
AF=Afghanistan
AL=Albania
DZ=Algeria
AS=American Samoa
AD=Andorra
AO=Angola
AI=Anguilla
AQ=Antarctica
AG=Antigua and Barbuda
AR=Argentina
AM=Armenia
AW=Aruba
AU=Australia
AT=Austria
AZ=Azerbaijan
BS=Bahamas
BH=Bahrain
BD=Bangladesh
BB=Barbados
BY=Belarus
BE=Belgium
BZ=Belize
BJ=Benin
BM=Bermuda
BT=Bhutan
BO=Bolivia
BA=Bosnia and Herzegovina
BW=Botswana
BV=Bouvet Island
BR=Brazil
IO=British Indian Ocean Territory
BN=Brunei Darussalam
BG=Bulgaria
BF=Burkina Faso
BI=Burundi
KH=Cambodia
CM=Cameroon
CA=Canada
CV=Cape Verde
KY=Cayman Islands
CF=Central African Republic
TD=Chad
CL=Chile
CN=China
CX=Chrismas Island
CC=Cocos (Keeling) Islands
CO=Colombia
KM=Comoros
CG=Congo
CD=Congo (Democratic Republic of)
CK=Cook Islands
CR=Costa Rica
CI=Cote D''Ivoire
HR=Croatia
CU=Cuba
CY=Cyprus
CZ=Czech Republic
DK=Denmark
DJ=Djibouti
DM=Dominica
DO=Dominican Republic
TP=East Timor
EC=Ecuador
EG=Egypt
SV=El Salvador
GQ=Equatorial Guinea
ER=Eritrea
EE=Estonia
ET=Ethiopia
FK=Falkland Islands (Malvinas)
FO=Faroe Islands
FJ=Fiji
FI=Finland
FR=France
GF=French Guiana
PF=French Polynesia
TF=French Southern Territories
GA=Gabon
GM=Gambia
GE=Georgia
DE=Germany
GH=Ghana
GI=Gibraltar
GR=Greece
GL=Greenland
GD=Grenada
GP=Guadeloupe
GU=Guam
GT=Guatemala
GN=Guinea
GW=Guinea-Bissau
GY=Guyana
HT=Haiti
HM=Heard Island and McDonald Islands
VA=Holy See (Vatican City State)
HN=Honduras
HK=Hong Kong
HU=Hungary
IS=Iceland
IN=India
ID=Indonesia
IR=Iran (Islamic Republic of)
IQ=Iraq
IE=Ireland
IL=Israel
IT=Italy
JM=Jamaica
JP=Japan
JO=Jordan
KZ=Kazakhstan
KE=Kenya
KI=Kiribati
KP=Korea (Democratic People's Republic of)
KO=Korea (Republic of)
KW=Kuwait
KG=Kyrgyzstan
LA=Lao People's Democratic Republic
LV=Latvia
LB=Lebanon
LS=Lesotho
LR=Liberia
LY=Libyan Arab Jamahirya
LI=Liechtenstein
LT=Lithuania
LU=Luxembourg
MO=Macau
MK=Macedonia (Former Yugoslav Republic of)
MG=Madagascar
MW=Malawi
MY=Malaysia
MV=Maldives
ML=Mali
MT=Malta
MH=Marshall Islands
MQ=Martinique
MR=Mauritania
MU=Mauritius
YT=Mayotte
MX=Mexico
FM=Micronesia (Federated States of)
MD=Moldova, Republic of
MC=Monaco
MN=Mongolia
MS=Montserrat
MA=Morocco
MZ=Mozambique
MM=Myanmar
NA=Namibia
NR=Nauru
NP=Nepal
NL=Netherlands
AN=Netherlands Antillies
NC=New Caledonia
NZ=New Zealand
NI=Nicaragua
NE=Niger
NG=Nigeria
NU=Niue
NF=Norfolk Island
MP=Northern Mariana Islands'),
NO=Norway
OM=Oman
PK=Pakistan
PW=Palau
PS=Palestinian Territory, Occupied
PA=Panama
PG=Papua New Guinea
PY=Paraguay
PE=Peru
PH=Phillipines
PN=Pitcairn
PL=Poland
PT=Portugal
PR=Puerto Rico
QA=Qatar
RE=Reunion
RO=Romania
RU=Russian Federation
RW=Rwanda
SH=Saint Helena
KN=Saint Kitts and Nevis
LC=Saint Lucia
PM=Saint Pierre and Miquelon
VC=Saint Vincent and The Grenadines
WS=Samoa
SM=San Marino
ST=Sao Tome and Principe
SA=Saudi Arabia
SN=Senegal
SC=Seychelles
SL=Sierra Leone
SG=Singapore
SK=Slovakia
SI=Slovenia
SB=Solomon Islands
SO=Somalia
ZA=South Africa
GS=South Georgia and the South Sandwich Islands
ES=Spain
LK=Sri Lanka
SD=Sudan
SR=Suriname
SJ=Svalbard and Jan Mayen
SZ=Swaziland
SE=Sweden
CH=Switzerland
SY=Syrian Arab Republic
TW=Taiwan (Province of China)
TJ=Tajikistan
TZ=Tanzania, United Republic of
TH=Thailand
TG=Togo
TK=Tokelau
TO=Tonga
TT=Trinidad and Tobago
TN=Tunisia
TR=Turkey
TM=Turkmenistan
TC=Turks and Caicos Islands
TV=Tuvalu
UG=Uganda
UA=Ukraine
AE=United Arab Emirates
GB=United Kingdom
US=United States
UM=United States Minor Outlying Islands
UY=Uruguay
UZ=Uzbekistan
VU=Vanatu
VE=Venezuela
VN=Viet Nam
VG=Virgin Islands (British)
VI=Virgin Islands (U.S.)
WF=Wallis and Futuna
EH=Western Sahara
YE=Yemen
YU=Yugoslavia
ZM=Zambia
ZW=Zimbabwe

View File

@ -0,0 +1,247 @@
# The contents of this file are subject to the Mozilla Public License Version 1.1
# (the "License"); you may not use this file except in compliance with the License.
# You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
#
# Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
# WARRANTY OF ANY KIND, either express or implied. See the License for the specific
# language governing rights and limitations under the License.
#
# The Original Code is the Venice Web Communities System.
#
# The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
# for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
# Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
#
# Contributor(s):
# -------------------------------------------------------------------------------------
# This list of languages is styled on RFC 1766, based on ISO 639 language code listings,
# from <http://www.w3.org/WAI/ER/IG/ert/iso639.htm>, and ISO 3166 country code listings,
# from <http://www.din.de/gremien/nas/nabd/iso3166ma/>. Language variants by country taken
# from WINNT.H header file, Microsoft Windows Platform SDK. Additional language codes
# (i- names and expanded zh- names) from IANA, <ftp://ftp.isi.edu/in-notes/iana/assignments/languages/>.
# Changes to Indonesian, Hebrew, and Yiddish noted from Java 2 SDK documentation.
# When adding new entries to this file, make sure and add it in sorted order by language NAME!
# You can re-sort the language entries with "sort -t = -k 2 input > output", but then make sure
# the "i-default=(unknown)" entry appears first!
i-default=(unknown)
ab=Abkhazian
aa=Afar
af=Afrikaans
sq=Albanian
am=Amharic
i-ami=Amis
ar=Arabic
ar-DZ=Arabic (Algeria)
ar-BH=Arabic (Bahrain)
ar-EG=Arabic (Egypt)
ar-IQ=Arabic (Iraq)
ar-JO=Arabic (Jordan)
ar-KW=Arabic (Kuwait)
ar-LB=Arabic (Lebanon)
ar-LY=Arabic (Libya)
ar-MA=Arabic (Morocco)
ar-OM=Arabic (Oman)
ar-QA=Arabic (Qatar)
ar-SA=Arabic (Saudi Arabia)
ar-SY=Arabic (Syria)
ar-TN=Arabic (Tunisia)
ar-AE=Arabic (U.A.E.)
ar-YE=Arabic (Yemen)
hy=Armenian
as=Assamese
ay=Aymara
az=Azerbaijani
ba=Bashkir
eu=Basque
bn=Bengali
dz=Bhutani
bh=Bihari
bi=Bislama
br=Breton
bg=Bulgarian
i-bnn=Bunun
my=Burmese
be=Byelorussian
km=Cambodian
ca=Catalan
zh=Chinese
zh-yue=Chinese (Cantonese)
zh-gan=Chinese (Gan)
zh-hakka=Chinese (Hakka)
zh-HK=Chinese (Hong Kong)
zh-xiang=Chinese (Hunan)
zh-guoyu=Chinese (Mandarin)
zh-wuu=Chinese (Shanghai)
zh-CN=Chinese (Simplified)
zh-SG=Chinese (Singapore)
zh-min=Chinese (Taiwanese)
zh-TW=Chinese (Traditional)
co=Corsican
hr=Croatian
cs=Czech
da=Danish
nl=Dutch
nl-BE=Dutch (Belgian)
en=English
en-AU=English (Australian)
en-BZ=English (Belize)
en-CA=English (Canadian)
en-caribbean=English (Caribbean)
en-IE=English (Irish)
en-JM=English (Jamaica)
en-NZ=English (New Zealand)
en-scouse=English (Scouse)
en-ZA=English (South Africa)
en-TT=English (Trinidad)
en-GB=English (United Kingdom)
en-US=English (United States)
eo=Esperanto
et=Estonian
fo=Faeroese
fj=Fiji
fi=Finnish
fr=French
fr-BE=French (Belgian)
fr-CA=French (Canadian)
fr-LU=French (Luxembourg)
fr-CH=French (Swiss)
fy=Frisian
gl=Galician
ka=Georgian
de=German
de-AT=German (Austria)
de-LI=German (Liechtenstein)
de-LU=German (Luxembourg)
de-CH=German (Swiss)
el=Greek
kl=Greenlandic
gn=Guarani
gu=Gujarati
i-hak=Hakka
ha=Hausa
he=Hebrew
hi=Hindi
hu=Hungarian
is=Icelandic
id=Indonesian
ia=Interlingua
ie=Interlingue
ik=Inupiak
ga=Irish
it=Italian
it-CH=Italian (Swiss)
ja=Japanese
jw=Javanese
kn=Kannada
ks=Kashmiri
kk=Kazakh
rw=Kinyarwanda
ky=Kirghiz
rn=Kirundi
i-klingon=Klingon
ko=Korean
ko-johab=Korean (Johab)
ku=Kurdish
lo=Laothian
la=Latin
lv=Latvian
ln=Lingala
lt=Lithuanian
i-lux=Luxembourgish
mk=Macedonian
mg=Malagasi
ms=Malay
ml=Malayalam
mt=Maltese
mi=Maori
mr=Marathi
i-mingo=Mingo
mo=Moldavian
mn=Mongolian
na=Nauru
i-navajo=Navajo
ne=Nepali
no=Norwegian
no-bok=Norwegian (Bokmal)
no-nyn=Norwegian (Nynorsk)
oc=Occitan
or=Oriya
om=Oromo
i-pwn=Paiwan
ps=Pashto
fa=Persian
pl=Polish
pt=Portuguese
pt-BR=Portuguese (Brazilian)
pa=Punjabi
qu=Quechua
rm=Rhaeto-Romance
ro=Romanian
ru=Russian
sm=Samoan
sg=Sangro
sa=Sanskrit
gd=Scots Gaelic
sr-cyrillic=Serbian (Cyrillic)
sr=Serbian (Latin)
sh=Serbo-Croatian
st=Sesotho
tn=Setswana
sn=Shona
sd=Sindhi
si=Singhalese
ss=Siswati
sk=Slovak
sl=Slovenian
so=Somali
es-AR=Spanish (Argentina)
es-BO=Spanish (Bolivia)
es-ES=Spanish (Castilian)
es-CL=Spanish (Chile)
es-CO=Spanish (Colombia)
es-CR=Spanish (Costa Rica)
es-DO=Spanish (Dominican Republic)
es-EC=Spanish (Ecuador)
es-SV=Spanish (El Salvador)
es-GT=Spanish (Guatemala)
es-HN=Spanish (Honduras)
es-MX=Spanish (Mexican)
es=Spanish (Modern)
es-NI=Spanish (Nicaragua)
es-PA=Spanish (Panama)
es-PY=Spanish (Paraguay)
es-PE=Spanish (Peru)
es-PR=Spanish (Puerto Rico)
es-UY=Spanish (Uruguay)
es-VE=Spanish (Venezuela)
su=Sudanese
sw=Swahili
sv=Swedish
sv-FI=Swedish (Finland)
tl=Tagalog
tg=Tajik
ta=Tamil
i-tao=Tao
tt=Tatar
i-tay=Tayal
te=Tegulu
th=Thai
bo=Tibetan
ti=Tigrinya
to=Tonga
ts=Tsonga
i-tsu=Tsou
tr=Turkish
tk=Turkmen
tw=Twi
uk=Ukrainian
ur=Urdu
uz=Uzbek
vi=Vietnamese
vo=Volapuk
cy=Welsh
wo=Wolof
xh=Xhosa
yi=Yiddish
yo=Yoruba
zu=Zulu

View File

@ -1,26 +0,0 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.core;
public interface Country
{
public abstract String getCode();
public abstract String getName();
} // end interface Country

View File

@ -1,26 +0,0 @@
/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at <http://www.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.core;
public interface Language
{
public abstract String getCode();
public abstract String getName();
} // end interface Language

View File

@ -31,12 +31,6 @@ public interface VeniceEngine extends SearchMode
public abstract BitSet getAllFeaturesMask();
public abstract List getCountryList() throws DataException;
public abstract List getLanguageList() throws DataException;
public abstract String getNameOfCountry(String code);
public abstract UserContext createUserContext(String remote_addr) throws DataException;
public abstract String getEmailAddressForUser(String username) throws DataException, AccessError;

View File

@ -20,7 +20,7 @@ package com.silverwrist.venice.core.impl;
import java.sql.*;
import java.util.*;
import org.apache.log4j.*;
import com.silverwrist.util.LocaleFactory;
import com.silverwrist.util.International;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.db.*;
import com.silverwrist.venice.security.PasswordHash;
@ -75,7 +75,7 @@ class AdminUserContextImpl implements AdminUserContext
this.created = SQLUtil.getFullDateTime(rs,"created");
this.last_access = SQLUtil.getFullDateTime(rs,"lastaccess");
this.description = rs.getString("description");
this.my_locale = LocaleFactory.createLocale(rs.getString("localeid"));
this.my_locale = International.get().createLocale(rs.getString("localeid"));
this.my_tz = TimeZone.getTimeZone(rs.getString("tzid"));
} // end constructor

View File

@ -20,7 +20,7 @@ package com.silverwrist.venice.core.impl;
import java.sql.*;
import java.util.*;
import org.apache.log4j.*;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.*;
import com.silverwrist.venice.db.*;
import com.silverwrist.venice.security.AuditRecord;
import com.silverwrist.venice.security.Capability;
@ -408,7 +408,11 @@ class CommunityUserContextImpl implements CommunityContext, CommunityBackend
{
String code = getLanguageCode();
if (code!=null)
return engine.getLanguageNameForCode(code);
{ // translate the language code to a name
Language l = International.get().getLanguageForCode(code);
return ((l==null) ? null : l.getName());
} // end if
else
return null;

View File

@ -53,10 +53,6 @@ public interface EngineBackend
public abstract int getNewConfirmationNumber();
public abstract String getCountryNameForCode(String code);
public abstract String getLanguageNameForCode(String code);
public abstract CommunityData getCommunityDataObject(int cid) throws DataException;
public abstract void detachCommunityDataObject(int cid);

View File

@ -20,9 +20,7 @@ package com.silverwrist.venice.core.impl;
import java.util.*;
import java.sql.*;
import org.apache.log4j.*;
import com.silverwrist.util.LocaleFactory;
import com.silverwrist.util.OptionSet;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.*;
import com.silverwrist.venice.*;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.db.*;
@ -144,7 +142,7 @@ class UserContextImpl implements UserContext, UserBackend
my_tz = TimeZone.getTimeZone(rs.getString("tzid"));
if (my_locale==null)
my_locale = LocaleFactory.createLocale(rs.getString("localeid"));
my_locale = International.get().createLocale(rs.getString("localeid"));
// Load the user properties as well.
rs = stmt.executeQuery("SELECT ndx, data FROM propuser WHERE uid = " + uid + ";");

View File

@ -20,6 +20,7 @@ package com.silverwrist.venice.core.impl;
import java.sql.*;
import java.util.*;
import org.apache.log4j.*;
import com.silverwrist.util.*;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.db.*;
@ -331,7 +332,8 @@ class UserProfileImpl implements UserProfile
public String getFullCountry()
{
return engine.getCountryNameForCode(country);
Country c = International.get().getCountryForCode(country);
return ((c==null) ? null : c.getName());
} // end getFullCountry

View File

@ -22,9 +22,7 @@ import java.sql.*;
import java.util.*;
import org.apache.log4j.*;
import org.w3c.dom.*;
import com.silverwrist.util.OptionSet;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.DOMElementHelper;
import com.silverwrist.util.*;
import com.silverwrist.util.cache.*;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.db.*;
@ -38,68 +36,6 @@ import com.silverwrist.venice.security.DefaultLevels;
public class VeniceEngineImpl implements VeniceEngine, EngineBackend
{
/*--------------------------------------------------------------------------------
* Internal class implementing the Country interface
*--------------------------------------------------------------------------------
*/
static class CountryImpl implements Country
{
private String code;
private String name;
public CountryImpl(String code, String name)
{
this.code = code;
this.name = name;
} // end constructor
public String getCode()
{
return code;
} // end getCode
public String getName()
{
return name;
} // end getName
} // end class CountryImpl
/*--------------------------------------------------------------------------------
* Internal class implementing the Language interface
*--------------------------------------------------------------------------------
*/
static class LanguageImpl implements Language
{
private String code;
private String name;
public LanguageImpl(String code, String name)
{
this.code = code;
this.name = name;
} // end constructor
public String getCode()
{
return code;
} // end getCode
public String getName()
{
return name;
} // end getName
} // end class LanguageImpl
/*--------------------------------------------------------------------------------
* Internal class storing feature information.
*--------------------------------------------------------------------------------
@ -1066,93 +1002,6 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
} // end getAllFeaturesMask
public List getCountryList() throws DataException
{
checkInitialized();
Connection conn = null;
ArrayList rc = new ArrayList();
try
{ // do a SELECT on the refcountry table to load the master country list
conn = datapool.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT code, name FROM refcountry ORDER BY name;");
while (rs.next())
{ // load up a stack of memory objects with the country list
Country c = new CountryImpl(rs.getString(1),rs.getString(2));
rc.add(c);
} // end while
if (logger.isDebugEnabled())
logger.debug("getCountryList(): loaded " + rc.size() + " country names");
} // end try
catch (SQLException e)
{ // remap to a DataException
logger.error("DB error loading countries: " + e.getMessage(),e);
throw new DataException("unable to load country data: " + e.getMessage(),e);
} // end catch
finally
{ // make sure the connection is released before we go
if (conn!=null)
datapool.releaseConnection(conn);
} // end finally
return Collections.unmodifiableList(rc);
} // end getCountryList
public List getLanguageList() throws DataException
{
checkInitialized();
Connection conn = null;
ArrayList rc = new ArrayList();
try
{ // do a SELECT on the refcountry table to load the master country list
conn = datapool.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT code, name FROM reflanguage ORDER BY name;");
while (rs.next())
{ // load up a stack of memory objects with the country list
Language l = new LanguageImpl(rs.getString(1),rs.getString(2));
rc.add(l);
} // end while
if (logger.isDebugEnabled())
logger.debug("getLanguageList(): loaded " + rc.size() + " language names");
} // end try
catch (SQLException e)
{ // remap to a DataException
logger.error("DB error loading languages: " + e.getMessage(),e);
throw new DataException("unable to load language data: " + e.getMessage(),e);
} // end catch
finally
{ // make sure the connection is released before we go
if (conn!=null)
datapool.releaseConnection(conn);
} // end finally
return Collections.unmodifiableList(rc);
} // end getLanguageList
public String getNameOfCountry(String code)
{
checkInitialized();
return getCountryNameForCode(code);
} // end getNameOfCountry
public UserContext createUserContext(String remote_addr) throws DataException
{
checkInitialized();
@ -2003,92 +1852,6 @@ public class VeniceEngineImpl implements VeniceEngine, EngineBackend
} // end getNewConfirmationNumber
public String getCountryNameForCode(String code)
{
checkInitialized();
if (code==null)
return null;
Connection conn = null;
try
{ // do a SELECT on the refcountry table
conn = datapool.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT name FROM refcountry WHERE code = '" + code + "';");
if (rs.next())
{ // found it!
String rc = rs.getString("name");
if (logger.isDebugEnabled())
logger.debug("getCountryNameForCode(\"" + code + "\") => \"" + rc + "\"");
return rc;
} // end if
} // end try
catch (SQLException e)
{ // force to return null
logger.warn("DB error looking up country code: " + e.getMessage(),e);
if (logger.isDebugEnabled())
logger.debug("getCountryNameForCode(\"" + code + "\") => not found (data error)");
return null;
} // end catch
finally
{ // make sure the connection is released before we go
if (conn!=null)
datapool.releaseConnection(conn);
} // end finally
if (logger.isDebugEnabled())
logger.debug("getCountryNameForCode(\"" + code + "\") => not found");
return null; // if get here, it wasn't found
} // end getCountryNameForCode
public String getLanguageNameForCode(String code)
{
checkInitialized();
if (code==null)
return null;
Connection conn = null;
try
{ // do a SELECT on the refcountry table
conn = datapool.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT name FROM reflanguage WHERE CODE = '" + code + "';");
if (rs.next())
{ // found it!
String rc = rs.getString("name");
if (logger.isDebugEnabled())
logger.debug("getLanguageNameForCode(\"" + code + "\") => \"" + rc + "\"");
return rc;
} // end if
} // end try
catch (SQLException e)
{ // force to return null
logger.warn("DB error looking up language code: " + e.getMessage(),e);
if (logger.isDebugEnabled())
logger.debug("getLanguageNameForCode(\"" + code + "\") => not found (data error)");
return null;
} // end catch
finally
{ // make sure the connection is released before we go
if (conn!=null)
datapool.releaseConnection(conn);
} // end finally
if (logger.isDebugEnabled())
logger.debug("getLanguageNameForCode(\"" + code + "\") => not found");
return null; // if get here, it wasn't found
} // end getLanguageNameForCode
public CommunityData getCommunityDataObject(int cid) throws DataException
{
checkInitialized();

View File

@ -58,7 +58,7 @@ public class Account extends VeniceServlet
if (!(cache.isCached(desired_name)))
{ // create a template and save it off
NewAccountDialog template = new NewAccountDialog(getCountryList());
NewAccountDialog template = new NewAccountDialog();
cache.saveTemplate(template);
} // end if
@ -109,7 +109,7 @@ public class Account extends VeniceServlet
if (!(cache.isCached(desired_name)))
{ // create a template and save it off
EditProfileDialog template = new EditProfileDialog(getCountryList());
EditProfileDialog template = new EditProfileDialog();
cache.saveTemplate(template);
} // end if

View File

@ -68,7 +68,7 @@ public class CommunityAdmin extends VeniceServlet
if (!(cache.isCached(desired_name)))
{ // create a template and save it off
EditCommunityProfileDialog template = new EditCommunityProfileDialog(getCountryList(),getLanguageList());
EditCommunityProfileDialog template = new EditCommunityProfileDialog();
cache.saveTemplate(template);
} // end if

View File

@ -66,7 +66,7 @@ public class CommunityOperations extends VeniceServlet
if (!(cache.isCached(desired_name)))
{ // create a template and save it off
CreateCommunityDialog template = new CreateCommunityDialog(getCountryList(),getLanguageList());
CreateCommunityDialog template = new CreateCommunityDialog();
cache.saveTemplate(template);
} // end if

View File

@ -65,7 +65,7 @@ public class SystemAdmin extends VeniceServlet
if (!(cache.isCached(desired_name)))
{ // create a template and save it off
AdminModifyUserDialog template = new AdminModifyUserDialog(getCountryList());
AdminModifyUserDialog template = new AdminModifyUserDialog();
cache.saveTemplate(template);
} // end if

View File

@ -36,8 +36,6 @@ public class Variables
// ServletContext ("application") attributes
protected static final String ENGINE_ATTRIBUTE = "com.silverwrist.venice.core.Engine";
protected static final String COUNTRYLIST_ATTRIBUTE = "com.silverwrist.venice.db.CountryList";
protected static final String LANGUAGELIST_ATTRIBUTE = "com.silverwrist.venice.db.LanguageList";
protected static final String STYLESHEET_ATTRIBUTE = "com.silverwrist.venice.rendering.StyleSheet";
// HttpSession ("session") attributes
@ -168,54 +166,6 @@ public class Variables
} // end clearUserContext
public static List getCountryList(ServletContext ctxt) throws ServletException
{
Object foo = ctxt.getAttribute(COUNTRYLIST_ATTRIBUTE);
if (foo!=null)
return (List)foo;
VeniceEngine engine = getVeniceEngine(ctxt);
try
{ // get the country list via the engine and save it
List rc = engine.getCountryList();
ctxt.setAttribute(COUNTRYLIST_ATTRIBUTE,rc);
return rc;
} // end try
catch (DataException e)
{ // the country list could not be retrieved
logger.error("Failed to retrieve country list from engine: " + e.getMessage(),e);
throw new ServletException("Country list retrieval failed: " + e.getMessage(),e);
} // end catch
} // end getCountryList
public static List getLanguageList(ServletContext ctxt) throws ServletException
{
Object foo = ctxt.getAttribute(LANGUAGELIST_ATTRIBUTE);
if (foo!=null)
return (List)foo;
VeniceEngine engine = getVeniceEngine(ctxt);
try
{ // get the country list via the engine and save it
List rc = engine.getLanguageList();
ctxt.setAttribute(LANGUAGELIST_ATTRIBUTE,rc);
return rc;
} // end try
catch (DataException e)
{ // the country list could not be retrieved
logger.error("Failed to retrieve language list from engine: " + e.getMessage(),e);
throw new ServletException("Language list retrieval failed: " + e.getMessage(),e);
} // end catch
} // end getLanguageList
public static ComponentRender getMenu(HttpSession session)
{
return (ComponentRender)(session.getAttribute(MENU_ATTRIBUTE));

View File

@ -312,30 +312,6 @@ public abstract class VeniceServlet extends HttpServlet
} // end clearUserContext
protected static final List getCountryList(ServletContext ctxt) throws ServletException
{
return Variables.getCountryList(ctxt);
} // end getCountryList
protected final List getCountryList() throws ServletException
{
return Variables.getCountryList(getServletContext());
} // end getCountryList
protected final List getLanguageList(ServletContext ctxt) throws ServletException
{
return Variables.getLanguageList(ctxt);
} // end getLanguageList
protected final List getLanguageList() throws ServletException
{
return Variables.getLanguageList(getServletContext());
} // end getLanguageList
protected final void changeMenuTop(HttpServletRequest request)
{
Variables.setMenuTop(getServletContext(),request.getSession(true));

View File

@ -18,8 +18,7 @@
package com.silverwrist.venice.servlets.format;
import java.util.*;
import com.silverwrist.util.LocaleFactory;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.*;
import com.silverwrist.venice.ValidationException;
import com.silverwrist.venice.core.*;
import com.silverwrist.venice.security.Role;
@ -31,7 +30,7 @@ public class AdminModifyUserDialog extends ContentDialog
*--------------------------------------------------------------------------------
*/
public AdminModifyUserDialog(List country_list)
public AdminModifyUserDialog()
{
super("Modify User Account",null,"moduserform","sysadmin");
setHiddenField("cmd","UM");
@ -60,7 +59,7 @@ public class AdminModifyUserDialog extends ContentDialog
addFormField(new CDTextFormField("loc","City",null,true,32,64));
addFormField(new CDTextFormField("reg","State/Province",null,true,32,64));
addFormField(new CDTextFormField("pcode","Zip/Postal Code",null,true,32,64));
addFormField(new CDCountryListFormField("country","Country",null,true,country_list));
addFormField(new CDCountryListFormField("country","Country",null,true));
addFormField(new CDFormCategoryHeader("Phone Numbers"));
addFormField(new CDTextFormField("phone","Telephone",null,false,32,32));
addFormField(new CDTextFormField("mobile","Mobile/cellphone",null,false,32,32));
@ -277,7 +276,7 @@ public class AdminModifyUserDialog extends ContentDialog
// Save off the user's description and preferences.
admuser.setDescription(getFieldValue("descr"));
admuser.setLocale(LocaleFactory.createLocale(getFieldValue("locale")));
admuser.setLocale(International.get().createLocale(getFieldValue("locale")));
admuser.setTimeZone(TimeZone.getTimeZone(getFieldValue("tz")));
} // end doDialog

View File

@ -20,8 +20,7 @@ package com.silverwrist.venice.servlets.format;
import java.util.List;
import java.io.Writer;
import java.io.IOException;
import com.silverwrist.util.StringUtil;
import com.silverwrist.venice.core.Country;
import com.silverwrist.util.*;
public class CDCountryListFormField extends CDPickListFormField
{
@ -30,10 +29,9 @@ public class CDCountryListFormField extends CDPickListFormField
*--------------------------------------------------------------------------------
*/
public CDCountryListFormField(String name, String caption, String caption2, boolean required,
List country_list)
public CDCountryListFormField(String name, String caption, String caption2, boolean required)
{
super(name,caption,caption2,required,country_list);
super(name,caption,caption2,required,International.get().getCountryList());
} // end constructor

View File

@ -7,7 +7,7 @@
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Community System.
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
@ -20,15 +20,18 @@ package com.silverwrist.venice.servlets.format;
import java.util.List;
import java.io.Writer;
import java.io.IOException;
import com.silverwrist.util.StringUtil;
import com.silverwrist.venice.core.Language;
import com.silverwrist.util.*;
public class CDLanguageListFormField extends CDPickListFormField
{
public CDLanguageListFormField(String name, String caption, String caption2, boolean required,
List language_list)
/*--------------------------------------------------------------------------------
* Constructors
*--------------------------------------------------------------------------------
*/
public CDLanguageListFormField(String name, String caption, String caption2, boolean required)
{
super(name,caption,caption2,required,language_list);
super(name,caption,caption2,required,International.get().getLanguageList());
} // end constructor
@ -38,6 +41,11 @@ public class CDLanguageListFormField extends CDPickListFormField
} // end constructor
/*--------------------------------------------------------------------------------
* Overrides from class CDPickListFormField
*--------------------------------------------------------------------------------
*/
protected void renderChoice(Writer out, RenderData rdat, Object obj, String my_value) throws IOException
{
Language l = (Language)obj;
@ -48,6 +56,11 @@ public class CDLanguageListFormField extends CDPickListFormField
} // end renderChoice
/*--------------------------------------------------------------------------------
* Implementations from interface CDFormField
*--------------------------------------------------------------------------------
*/
public CDFormField duplicate()
{
return new CDLanguageListFormField(this);

View File

@ -18,7 +18,7 @@
package com.silverwrist.venice.servlets.format;
import javax.servlet.ServletRequest;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.*;
import com.silverwrist.venice.core.*;
public class CommunityProfileData implements JSPRender
@ -163,7 +163,8 @@ public class CommunityProfileData implements JSPRender
public String getFullCountry()
{
return engine.getNameOfCountry(ci.getCountry());
Country c = International.get().getCountryForCode(ci.getCountry());
return ((c==null) ? null : c.getName());
} // end getFullCountry

View File

@ -36,7 +36,7 @@ public class CreateCommunityDialog extends ContentDialog
*--------------------------------------------------------------------------------
*/
public CreateCommunityDialog(List country_list, List language_list)
public CreateCommunityDialog()
{
super("Create New Community",null,"createcommform","sigops");
setHiddenField("cmd","C");
@ -58,12 +58,12 @@ public class CreateCommunityDialog extends ContentDialog
addFormField(new CDVeniceIDFormField("alias","Community Alias",null,true,32,32));
addFormField(new CDTextFormField("synopsis","Synopsis",null,false,32,255));
addFormField(new CDTextFormField("rules","Rules",null,false,32,255));
addFormField(new CDLanguageListFormField("language","Primary language",null,true,language_list));
addFormField(new CDLanguageListFormField("language","Primary language",null,true));
addFormField(new CDFormCategoryHeader("Location"));
addFormField(new CDTextFormField("loc","City",null,false,32,64));
addFormField(new CDTextFormField("reg","State/Province",null,false,32,64));
addFormField(new CDTextFormField("pcode","Zip/Postal Code",null,true,32,64));
addFormField(new CDCountryListFormField("country","Country",null,true,country_list));
addFormField(new CDCountryListFormField("country","Country",null,true));
addFormField(new CDFormCategoryHeader("Security"));
addFormField(new CDSimplePickListFormField("comtype","Community type:",null,true,vec_pubpriv,'|'));
addFormField(new CDTextFormField("joinkey","Join key","(for private communities)",false,32,64));

View File

@ -101,7 +101,7 @@ public class EditCommunityProfileDialog extends ContentDialog
*--------------------------------------------------------------------------------
*/
public EditCommunityProfileDialog(List country_list, List language_list)
public EditCommunityProfileDialog()
{
super("Edit Community Profile:",null,"commprofform","sigadmin");
setHiddenField("cmd","P");
@ -124,7 +124,7 @@ public class EditCommunityProfileDialog extends ContentDialog
addFormField(new CDVeniceIDFormField("alias","Community Alias",null,true,32,32));
addFormField(new CDTextFormField("synopsis","Synopsis",null,false,32,255));
addFormField(new CDTextFormField("rules","Rules",null,false,32,255));
addFormField(new CDLanguageListFormField("language","Primary language",null,true,language_list));
addFormField(new CDLanguageListFormField("language","Primary language",null,true));
addFormField(new CDTextFormField("url","Home page",null,false,32,255));
logo_control = new CDCommunityLogoControl("logo","Community logo","commlogo");
addFormField(logo_control);
@ -136,7 +136,7 @@ public class EditCommunityProfileDialog extends ContentDialog
addFormField(new CDTextFormField("loc","City",null,false,32,64));
addFormField(new CDTextFormField("reg","State/Province",null,false,32,64));
addFormField(new CDTextFormField("pcode","Zip/Postal Code",null,true,32,64));
addFormField(new CDCountryListFormField("country","Country",null,true,country_list));
addFormField(new CDCountryListFormField("country","Country",null,true));
addFormField(new CDFormCategoryHeader("Security"));
addFormField(new CDSimplePickListFormField("comtype","Communty type",null,true,vec_pubpriv,'|'));

View File

@ -20,8 +20,7 @@ package com.silverwrist.venice.servlets.format;
import java.io.*;
import java.net.URLEncoder;
import java.util.*;
import com.silverwrist.util.LocaleFactory;
import com.silverwrist.util.StringUtil;
import com.silverwrist.util.*;
import com.silverwrist.venice.ValidationException;
import com.silverwrist.venice.core.*;
@ -100,7 +99,7 @@ public class EditProfileDialog extends ContentDialog
*--------------------------------------------------------------------------------
*/
public EditProfileDialog(List country_list)
public EditProfileDialog()
{
super("Edit Your Profile",null,"profform","account");
setHiddenField("cmd","P");
@ -124,7 +123,7 @@ public class EditProfileDialog extends ContentDialog
addFormField(new CDTextFormField("loc","City",null,true,32,64));
addFormField(new CDTextFormField("reg","State/Province",null,true,32,64));
addFormField(new CDTextFormField("pcode","Zip/Postal Code",null,true,32,64));
addFormField(new CDCountryListFormField("country","Country",null,true,country_list));
addFormField(new CDCountryListFormField("country","Country",null,true));
addFormField(new CDFormCategoryHeader("Phone Numbers"));
addFormField(new CDTextFormField("phone","Telephone",null,false,32,32));
addFormField(new CDTextFormField("mobile","Mobile/cellphone",null,false,32,32));
@ -289,7 +288,7 @@ public class EditProfileDialog extends ContentDialog
// Save off the user's description and preferences.
uc.setDescription(getFieldValue("descr"));
uc.setLocale(LocaleFactory.createLocale(getFieldValue("locale")));
uc.setLocale(International.get().createLocale(getFieldValue("locale")));
uc.setTimeZone(TimeZone.getTimeZone(getFieldValue("tz")));
// Finally, change the password if applicable.

View File

@ -36,7 +36,7 @@ public class NewAccountDialog extends ContentDialog
*--------------------------------------------------------------------------------
*/
public NewAccountDialog(List country_list)
public NewAccountDialog()
{
super("Create Account",null,"createform","account");
setInstructions("To create a new account, please enter your information below.");
@ -52,7 +52,7 @@ public class NewAccountDialog extends ContentDialog
addFormField(new CDTextFormField("loc","City",null,true,32,64));
addFormField(new CDTextFormField("reg","State/Province",null,true,32,64));
addFormField(new CDTextFormField("pcode","Zip/Postal Code",null,true,32,64));
addFormField(new CDCountryListFormField("country","Country",null,true,country_list));
addFormField(new CDCountryListFormField("country","Country",null,true));
addFormField(new CDFormCategoryHeader("E-mail"));
addFormField(new CDEmailAddressFormField("email","E-mail address",null,true,32,255));
addFormField(new CDFormCategoryHeader("Account Information"));