148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/*
248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Copyright (c) 2006-2011 Christian Plattner. All rights reserved.
348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Please refer to the LICENSE.txt for licensing details.
448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */
548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpackage ch.ethz.ssh2.util;
648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/**
848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Tokenizer. Why? Because StringTokenizer is not available in J2ME.
948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood *
1048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner
1148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10
1248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */
1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic class Tokenizer
1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{
1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	/**
1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * Exists because StringTokenizer is not available in J2ME.
1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * Returns an array with at least 1 entry.
1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 *
1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * @param source must be non-null
2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * @param delimiter
2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 * @return an array of Strings
2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	 */
2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	public static String[] parseTokens(String source, char delimiter)
2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	{
2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		int numtoken = 1;
2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		for (int i = 0; i < source.length(); i++)
2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		{
2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			if (source.charAt(i) == delimiter)
3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood				numtoken++;
3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		}
3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		String list[] = new String[numtoken];
3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		int nextfield = 0;
3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		for (int i = 0; i < numtoken; i++)
3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		{
3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			if (nextfield >= source.length())
3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			{
4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood				list[i] = "";
4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			}
4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			else
4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			{
4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood				int idx = source.indexOf(delimiter, nextfield);
4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood				if (idx == -1)
4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood					idx = source.length();
4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood				list[i] = source.substring(nextfield, idx);
4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood				nextfield = idx + 1;
4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood			}
5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		}
5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood
5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood		return list;
5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood	}
5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood}
55