X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fvimcoder;a=blobdiff_plain;f=src%2Fcom%2Fdogcows%2FEditor.java;h=87403240fa43c7de09fcd36b3035729dabadb312;hp=bb14ce65cf517ca9e9b5aec8384ea98322961754;hb=482e4985ec29af24fd5dfaae71a107444641287f;hpb=15cdeb736935e012a479d24c50ff10b88553bf9f diff --git a/src/com/dogcows/Editor.java b/src/com/dogcows/Editor.java index bb14ce6..8740324 100644 --- a/src/com/dogcows/Editor.java +++ b/src/com/dogcows/Editor.java @@ -31,6 +31,16 @@ public class Editor */ private String name; + /** + * The name of the contest. + */ + private String contestName; + + /** + * The point value. + */ + private String points; + /** * The path of the current source file. */ @@ -48,10 +58,10 @@ public class Editor private static final Map languageExtension = new HashMap(); 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"); } @@ -68,6 +78,8 @@ public class Editor { 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(); @@ -77,9 +89,24 @@ public class Editor } // 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()); } @@ -88,16 +115,17 @@ public class Editor // Set up the terms used for the template expansion. HashMap terms = new HashMap(); - 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"); @@ -116,7 +144,7 @@ public class Editor // 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); @@ -190,8 +218,7 @@ public class Editor */ public String getSource() throws IOException { - return Util.readFile(sourceFile) + "\n// Edited by " + - VimCoder.version + "\n// " + VimCoder.website + "\n\n"; + return Util.readFile(sourceFile); }