package org.eclipse.stem.utility.generators;

/*******************************************************************************
 * Copyright (c) 2009 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/**
 * A group of constants that appear repeatedly in many of the data generators.
 * 
 */
public class GenConstants {

	final static String PARAMS_DIR = "org.eclipse.stem.utility\\parameters\\"; //$NON-NLS-1$

	final static String URLS_DIR = "urls\\"; //$NON-NLS-1$

	final static String POPULATION_PROFILES = "profiles\\"; //$NON-NLS-1$

	final static String PROPERTIES_OUTPUT_DIR = "org.eclipse.stem.internal.data\\resources\\data\\country\\"; //$NON-NLS-1$
		
	final static String MAPS_OUTPUT_DIR = "org.eclipse.stem.geography\\resources\\data\\geo\\country\\"; //$NON-NLS-1$

	final static String ISO3166_1_FILE = "ISO3166-1\\ISO3166_1_list.txt"; //$NON-NLS-1$ 

	final static String ISO3166_2_FILE = "ISO3166-2\\ISO3166_2_list.txt"; //$NON-NLS-1$	

	final static String ISOFIX_FILE = "ISOFIX\\ISO_FIX.txt"; //$NON-NLS-1$ 

	final static String POLYGON_AREAS_DIR = "polygonAreas\\"; //$NON-NLS-1$

	final static String AREA_POPULATION_DIR = "AreaPopulationData\\"; //$NON-NLS-1$
	
	final static String USA_LEVEL_2_AREA = AREA_POPULATION_DIR + "USA_2_AREA.txt"; //$NON-NLS-1$
	
	final static String USA_LEVEL_2_POPULATION = AREA_POPULATION_DIR + "USA_2_POPULATION.txt"; //$NON-NLS-1$

	final static String LEX_DIR = "sort\\"; //$NON-NLS-1$

	final static String EUROPE_NAMES = "targets\\EuropeNames.txt"; //$NON-NLS-1$

	final static String EUROPE_COUNTRIES = "targets\\EuropeCountries.txt"; //$NON-NLS-1$

	final static String GROUPED_COUNTRIES = "targets\\groupedDataFiles.txt"; //$NON-NLS-1$

	final static String USA_FIPS_FILE = "ISOFIX\\USA_FIPS.txt";//$NON-NLS-1$	

	final static String REDUCE_LIST = "targets\\reduceList.txt"; //$NON-NLS-1$

	final static String DEFAULT_ITERATIONS = "5"; //$NON-NLS-1$

	final static String DEFAULT_THRESHOLD = "5"; //$NON-NLS-1$

	final static String USA_L1_DATA = "USA_L1_Data\\USA_L1.txt"; //$NON-NLS-1$

	final static String FORMAT_LIST = "targets\\formatList.txt"; //$NON-NLS-1$

	final static String COUNTRY_NAMES = "targets\\country_names.Ftxt"; //$NON-NLS-1$

	final static String COUNTRIES_LIST = "targets\\groupedDataFiles.txt"; //$NON-NLS-1$
	
	final static String DUMMY_DIR =  "C:\\Dummy\\"; //$NON-NLS-1$

}
