protected void processFormattedData(String src) { Vector baseName = new Vector(); Vector names = new Vector(); Vector values = new Vector(); int ptr = 0; int begin = 0; int nestLevel = 0; boolean whitespace = false; boolean foundEquals = false; String lastToken = null; String lastBaseName = null; String paramName = null; char c; if (src == null) return; while (ptr < src.length()) { foundEquals = false; whitespace = true; do { c = src.charAt(ptr); whitespace = false; if (Character.isSpace(c)) whitespace = true; else if (c == '=') { whitespace = true; foundEquals = true; } else if (c == '{') { if (lastBaseName != null) { baseName.addElement(lastBaseName); lastBaseName = null; } whitespace = true; } else if (c == '}') { if (baseName.size() > 0) { baseName.removeElementAt(baseName.size() - 1); } whitespace = true; } } while (whitespace && ++ptr < src.length()); begin = ptr; if (foundEquals && paramName == null) paramName = lastToken; if (ptr < src.length()) { do { c = src.charAt(ptr); whitespace = false; if (Character.isSpace(c)) whitespace = true; else if (c == '=') whitespace = true; else if (c == '{') whitespace = true; else if (c == '}') whitespace = true; } while (!whitespace && ++ptr < src.length()); lastToken = src.substring(begin, ptr); lastBaseName = lastToken; if (paramName != null) { int l = baseName.size(); String temp = ""; if (baseName.size() > 0) { for (int i = 0; i < l; i++) { temp += (String) (baseName.elementAt(i)); temp += "."; } } temp += paramName; names.addElement(temp); values.addElement(lastToken); paramName = null; } } } argNames = new String[names.size()]; args = new String[values.size()]; for (int i = 0; i < names.size(); i++) { argNames[i] = (String) (names.elementAt(i)); args[i] = (String) (values.elementAt(i)); } }