*/
private String name;
+ /**
+ * The name of the contest.
+ */
+ private String contestName;
+
+ /**
+ * The point value.
+ */
+ private String points;
+
/**
* The path of the current source file.
*/
private static final Map<String,String> languageExtension = new HashMap<String,String>();
static
{
- languageExtension.put("Java", "java");
- languageExtension.put("C++", "cc");
- languageExtension.put("C#", "cs");
- languageExtension.put("VB", "vb");
+ languageExtension.put("Java", "java");
+ languageExtension.put("C++", "cc");
+ languageExtension.put("C#", "cs");
+ languageExtension.put("VB", "vb");
languageExtension.put("Python", "py");
}
{
this.id = String.valueOf(component.getProblem().getProblemID());
this.name = component.getClassName();
+ this.contestName = component.getProblem().getRound().getContestName().replaceAll(" ", "-");
+ this.points = String.valueOf(component.getPoints().intValue());
// Make sure the top-level vimcoder directory exists.
File topDir = VimCoder.getStorageDirectory();
}
// Make sure the problem directory exists.
- this.directory = new File(topDir, id);
- if (!directory.isDirectory())
+ File newStyleDirectory = new File(new File(topDir, contestName), points);
+ File oldStyleDirectory = new File(topDir, id);
+ if (newStyleDirectory.isDirectory())
+ {
+ this.directory = newStyleDirectory;
+ }
+ else if (oldStyleDirectory.isDirectory())
+ {
+ this.directory = oldStyleDirectory;
+ }
+ else if (VimCoder.isContestDirNames())
+ {
+ this.directory = newStyleDirectory;
+ if (!directory.mkdirs()) throw new IOException(directory.getPath());
+ }
+ else
{
+ this.directory = oldStyleDirectory;
if (!directory.mkdirs()) throw new IOException(directory.getPath());
}
// Set up the terms used for the template expansion.
HashMap<String,String> terms = new HashMap<String,String>();
- terms.put("RETURNTYPE", component.getReturnType().getDescriptor(language));
- terms.put("CLASSNAME", name);
- terms.put("METHODNAME", component.getMethodName());
- terms.put("METHODPARAMS", getMethodParams(component.getParamTypes(),
+ terms.put("RETURNTYPE", component.getReturnType().getDescriptor(language));
+ terms.put("CLASSNAME", name);
+ terms.put("METHODNAME", component.getMethodName());
+ terms.put("METHODPARAMS", getMethodParams(component.getParamTypes(),
component.getParamNames(), language));
- terms.put("METHODPARAMNAMES", Util.join(component.getParamNames(), ", "));
- terms.put("METHODPARAMSTREAMIN", Util.join(component.getParamNames(), " >> "));
+ terms.put("METHODPARAMNAMES", Util.join(component.getParamNames(), ", "));
+ terms.put("METHODPARAMSTREAMIN", Util.join(component.getParamNames(), " >> "));
terms.put("METHODPARAMSTREAMOUT", Util.join(component.getParamNames(), " << \", \" << "));
- terms.put("METHODPARAMDECLARES", getMethodParamDeclarations(component.getParamTypes(),
- component.getParamNames(), language));
+ terms.put("METHODPARAMDECLARES", getMethodParamDeclarations(component.getParamTypes(),
+ component.getParamNames(), language));
+ terms.put("VIMCODER", VimCoder.version);
// Write the problem statement as an HTML file in the problem directory.
File problemFile = new File(directory, "Problem.html");
// Expand the template for the main class and write it to the current
// source file.
- sourceFile = new File(directory, name + "." + ext);
+ this.sourceFile = new File(directory, name + "." + ext);
if (!sourceFile.canRead())
{
String text = Util.expandTemplate(readTemplate(lang + "Template"), terms);
*/
public String getSource() throws IOException
{
- return Util.readFile(sourceFile) + "\n// Edited by " +
- VimCoder.version + "\n// " + VimCoder.website + "\n\n";
+ return Util.readFile(sourceFile);
}