package com.huaxin.test.spring;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
public class TestConvert
{
public static void main(String[] args)
{
// 10:all;10.103
String[] paramArray = new String[]{"100:all", "10.103", "10.104", "30.103", "30.106"};
List<String> paramValues = new ArrayList<String>();
for(String param : paramArray)
{
paramValues.add(param);
}
System.out.println(convert(paramValues));
String param = "10:all;10.103|104;30.103|106";
System.out.println(convert(param));
}
private static List<String> convert(String paramValue)
{
List<String> paramValues = new ArrayList<String>();
//10:all 10.103|104 30.103|106
String[] semicolonArray = StringUtils.split(paramValue, ";");
for(int i = 0; i < semicolonArray.length; i++)
{
// 10.103|104 30.103|106
int doc = semicolonArray[i].indexOf(".");
if(doc != -1)
{
// 10.103 104
String[] verticalArray = StringUtils.split(semicolonArray[i], "|");
String beforeVertical = "";
for(int j = 0; j < verticalArray.length; j++)
{
String type = "";
int verticalDoc = verticalArray[j].indexOf(".");
if(verticalDoc != -1)
{
// 10.103
beforeVertical = verticalArray[j].substring(0, doc);
type = verticalArray[j].substring(doc + 1);
}
else
{
// 104
type = verticalArray[j];
}
paramValues.add(beforeVertical + "." + type);
}
}
else
{
// 10:all;
paramValues.add(semicolonArray[i]);
}
}
return paramValues;
}
private static String convert(List<String> paramValues)
{
StringBuffer result = new StringBuffer(paramValues.size() * 16);
String type = "";
// "100:all", "10.103", "10.104", "30.103", "30.106"
for(int i = 0; i < paramValues.size(); i++)
{
String paramValue = paramValues.get(i);
int doc = paramValue.indexOf(".");
// "10.103" "10.104"
if(doc != -1)
{
// 10
String substring = paramValue.substring(0, doc);
if(!type.equals(substring))
{
if(result.length() > 0)
{
result.append(";");
}
// 103
result.append(paramValue);
}
else
{
// 104
result.append("|").append(paramValue.substring(doc + 1));
}
type = substring;
}
else
{
// "100:all"
result.append(paramValue);
}
}
return result.toString();
}
}