/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.impl.bundle; import java.io.IOException; import java.net.URL; import java.util.Map; import java.util.StringTokenizer; import java.util.TreeMap; import org.jboss.tools.common.meta.XModelEntity; import org.jboss.tools.common.meta.constraint.impl.XAttributeConstraintAList; import org.jboss.tools.common.model.XModel; import org.jboss.tools.common.model.plugin.ModelPlugin; import org.jboss.tools.common.util.FileUtil; public class CountriesHelper { public static Map<String,String> countries = null; public static Map<String,String> languages = null; static Object initMonitor = new Object(); public static void init(XModel model) { if(countries != null) return; synchronized (initMonitor) { if(countries != null) return; countries = new TreeMap<String,String>(); } countries.put("", "default"); //$NON-NLS-1$ //$NON-NLS-2$ languages = new TreeMap<String,String>(); languages.put("", "default"); //$NON-NLS-1$ //$NON-NLS-2$ loadMap(countries, "meta/countries.txt"); //$NON-NLS-1$ loadMap(languages, "meta/languages.txt"); //$NON-NLS-1$ loadEntity(model, "ValidationFormset"); //$NON-NLS-1$ loadEntity(model, "ValidationFormset11"); //$NON-NLS-1$ // loadEntity(model, "BundleList"); } private static void loadEntity(XModel model, String entityName) { XModelEntity entity = model.getMetaData().getEntity(entityName); if(entity == null) return; loadAttribute(countries, entity, "country"); //$NON-NLS-1$ loadAttribute(languages, entity, "language"); //$NON-NLS-1$ } private static void loadAttribute(Map<String,String> map, XModelEntity entity, String attr) { XAttributeConstraintAList acl = (XAttributeConstraintAList)entity.getAttribute(attr).getConstraint(); acl.setValues((String[])map.keySet().toArray(new String[0])); } private static void loadMap(Map<String,String> map, String resource) { try { URL url = CountriesHelper.class.getClassLoader().getResource(resource); String s = FileUtil.readStream(url.openStream()); StringTokenizer st = new StringTokenizer(s, "\n"); //$NON-NLS-1$ while(st.hasMoreTokens()) { String t = st.nextToken(); int i = t.indexOf('.'), j = t.lastIndexOf('.'); if(i < 0) continue; String code = t.substring(0, i), name = t.substring(j + 1); map.put(code, name); } } catch (IOException e) { ModelPlugin.getPluginLog().logError("CountiesHelper:loadMap:" + e.getMessage()); //$NON-NLS-1$ } } }