package org.ovirt.engine.api.restapi.util;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.ServerCpu;
public class ServerCpuParser {
/* Format is <cpu>;<cpu>;...
*/
public static List<ServerCpu> parseCpus(String str) {
List<ServerCpu> cpus = new ArrayList<ServerCpu>();
for (String cpu : str.split("[;]", -1)) {
if (!cpu.isEmpty()) {
cpus.add(parseCpu(cpu));
}
}
return cpus;
}
/* Format is <level>:<name>:<flag>,<flag>,...:<verb>
*
* e.g. 3:Intel Xeon Core2:vmx,nx,model_Conroe:Conroe
*
*/
public static ServerCpu parseCpu(String str) {
String[] parts = str.split("[:]", -1);
if (parts.length != 4) {
throw new IllegalArgumentException("Invalid CPU description: '" + str + "'");
}
HashSet<String> flags = new HashSet<String>();
for (String flag : parts[2].split("[,]", -1)) {
if (!flag.isEmpty()) {
flags.add(flag);
}
}
return new ServerCpu(parts[1],
Integer.parseInt(parts[0].trim()),
flags,
parts[3]);
}
}