/******************************************************************************* * Copyright (c) 2009, 2012 EclipseSource 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: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.rap.examples.pages; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Elements { private static String[] SERIES_NAMES = new String[] { "Unknown", "Alkali metal", "Alkaline earth metal", "Halogen", "Noble gas", "Lanthanide", "Actinide", "Transition metal", "Poor metal", "Metalloid", "Nonmetal", }; private static String[] SERIES_IDS = new String[] { "Unknown", "AM", "AEM", "H", "NG", "L", "A", "TM", "M", "MO", "NM", }; private static List<Element> elements = new ArrayList<Element>(); static { ClassLoader classLoader = Elements.class.getClassLoader(); String resourceFileName = "resources/elements.csv"; InputStream stream = classLoader.getResourceAsStream( resourceFileName ); BufferedInputStream bufferedStream = new BufferedInputStream( stream ); BufferedReader reader = new BufferedReader( new InputStreamReader( stream ) ); try { String line; while( ( line = reader.readLine() ) != null ) { String[] parts = line.split( "\t" ); if( parts.length > 0 ) { int number = Integer.parseInt( parts[ 0 ] ); int group = Integer.parseInt( parts[ 1 ] ); int period = Integer.parseInt( parts[ 2 ] ); String symbol = parts[ 3 ]; String name = parts[ 4 ]; int series = readCategory( parts[ 5 ] ); Element element = new Element( number, period, group, series, symbol, name ); elements.add( element ); } } } catch( IOException ioe ) { throw new RuntimeException( ioe ); } finally { try { bufferedStream.close(); } catch( IOException ioe ) { throw new RuntimeException( ioe ); } } } public static int readCategory( final String string ) { int result = 0; for( int i = 1; i < SERIES_IDS.length && result == 0; i++ ) { if( SERIES_IDS[ i ].equals( string ) ) { result = i; } } return result; } public static List<Element> getElements() { return new ArrayList<Element>( elements ); } public static class Element { public final int number; public final int period; public final int group; public final int series; public final String symbol; public final String name; Element( final int number, final int period, final int group, final int series, final String symbol, final String name ) { this.number = number; this.period = period; this.group = group; this.series = series; this.symbol = symbol; this.name = name; } public String getSeriesName() { return SERIES_NAMES[ series ]; } } }