package idv.Zero.KerKerInput.Methods.BPMFInputHelpers;
import java.util.HashMap;
public class ZhuYinComponentHelper {
private enum ZhuYinMask { COMP_1, COMP_2, COMP_3, COMP_TONE };
private static HashMap<String, ZhuYinMask> componentsToMask;
public static String getComposedRawString(String oldRawString, String incomingSymbol)
{
initComponentsData();
String[] arrComponents = new String[4];
int size = oldRawString.length();
for(int i=0;i<size;i++)
{
String sub = oldRawString.substring(i, i+1);
if (componentsToMask.containsKey(sub))
arrComponents[maskToInt(componentsToMask.get(sub))] = sub;
}
if (componentsToMask.containsKey(incomingSymbol))
arrComponents[maskToInt(componentsToMask.get(incomingSymbol))] = incomingSymbol;
StringBuilder sb = new StringBuilder();
for(int i=0;i<4;i++)
{
// No tone symbol until we have some components.
if (i == 3 && sb.length() == 0)
break;
if (arrComponents[i] != null && !arrComponents[i].trim().equalsIgnoreCase(""))
sb.append(arrComponents[i]);
}
return sb.toString();
}
private static int maskToInt(ZhuYinMask m)
{
int ret = 0;
switch(m)
{
case COMP_1:
ret = 0;
break;
case COMP_2:
ret = 1;
break;
case COMP_3:
ret = 2;
break;
case COMP_TONE:
ret = 3;
break;
default:
ret = 0;
break;
}
return ret;
}
private static void initComponentsData()
{
if (componentsToMask == null)
componentsToMask = new HashMap<String, ZhuYinMask>();
else
return ;
String comp1 = "1qaz2wsxedcrfv5tgbyhn";
String comp2 = "ujm";
String comp3 = "8ik,9ol.0p;;/-";
String compTone = "3467 ";
for(String s : comp1.split(""))
componentsToMask.put(s, ZhuYinMask.COMP_1);
for(String s : comp2.split(""))
componentsToMask.put(s, ZhuYinMask.COMP_2);
for(String s : comp3.split(""))
componentsToMask.put(s, ZhuYinMask.COMP_3);
for(String s : compTone.split(""))
componentsToMask.put(s, ZhuYinMask.COMP_TONE);
}
}