package org.zstack.query;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.zstack.header.exception.CloudRuntimeException;
import org.zstack.utils.path.PathUtil;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
*/
public class QueryableFieldsPythonWriter {
private String outputFolder;
private Map<String, List<String>> queryables;
private final static String FILE_NAME = "zstack_queryables.py";
public QueryableFieldsPythonWriter(String outputFolder, Map<String, List<String>> queryables) {
this.outputFolder = outputFolder;
this.queryables = queryables;
if (this.outputFolder == null) {
this.outputFolder = PathUtil.join(System.getProperty("user.home"), "zstack-python-template/python/");
}
}
public void write() {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, List<String>> e : queryables.entrySet()) {
sb.append(String.format("\n# %s", e.getKey()));
String[] namePairs = e.getKey().split("\\.");
String name = namePairs[namePairs.length-1];
sb.append(String.format("\n%s = [", name));
for (String f : e.getValue()) {
sb.append(String.format("\n%s'%s',", StringUtils.repeat(" ", 4), f));
}
sb.append(String.format("]\n\n"));
}
File f = new File(PathUtil.join(outputFolder, FILE_NAME));
try {
FileUtils.write(f, sb.toString());
} catch (IOException e) {
throw new CloudRuntimeException(e);
}
}
}