- languageExtension.put("Java", "java");
- languageExtension.put("C++", "cc");
- languageExtension.put("C#", "cs");
- languageExtension.put("VB", "vb");
- languageExtension.put("Python", "py");
- }
-
-
- private class Editor
- {
- private String id;
- private String name;
-
- private File sourceFile;
- private File directory;
-
-
- public Editor(ProblemComponentModel component, Language language, Renderer renderer) throws IOException
- {
- this.id = String.valueOf(component.getProblem().getProblemID());
- this.name = component.getClassName();
-
- File topDir = new File(System.getProperty("user.home"), ".vimcoder");
- if (!topDir.isDirectory())
- {
- if (!topDir.mkdirs()) throw new IOException(topDir.getPath());
- }
-
- this.directory = new File(topDir, String.valueOf(component.getProblem().getProblemID()));
- if (!directory.isDirectory())
- {
- if (!directory.mkdirs()) throw new IOException(directory.getPath());
- }
-
- String lang = language.getName();
- String ext = languageExtension.get(lang);
-
- HashMap<String,String> terms = new HashMap<String,String>();
- terms.put("RETURNTYPE", component.getReturnType().getDescriptor(language));
- terms.put("CLASSNAME", component.getClassName());
- terms.put("METHODNAME", component.getMethodName());
- terms.put("METHODPARAMS", getMethodParams(component.getParamTypes(), component.getParamNames(), language));
- terms.put("METHODPARAMNAMES", join(component.getParamNames(), ", "));
-
- File problemFile = new File(directory, "Problem.html");
- if (!problemFile.canRead())
- {
- FileWriter writer = new FileWriter(problemFile);
- try
- {
- writer.write(renderer.toHTML(language));
- }
- catch (Exception exception)
- {
- }
- writer.close();
- }
-
- sourceFile = new File(directory, terms.get("CLASSNAME") + "." + ext);
- if (!sourceFile.canRead())
- {
- String text = expandTemplate(readResource(lang + "Template"), terms);
- FileWriter writer = new FileWriter(sourceFile);
- writer.write(text);
- writer.close();
- }
-
- File driverFile = new File(directory, "driver" + "." + ext);
- if (!driverFile.canRead())
- {
- StringBuilder testCases = new StringBuilder();
- if (component.hasTestCases())
- {
- HashMap<String,String> testTerms = new HashMap<String,String>();
- testTerms.putAll(terms);
- String template = readResource(lang + "Test");
- for (TestCase testCase : component.getTestCases())
- {
- testTerms.put("TESTOUTPUT", "\"" + quote(testCase.getOutput()) + "\"");
- testTerms.put("TESTINPUTS", join(testCase.getInput(), ", "));
- testCases.append(expandTemplate(template, testTerms));
- }
- }
- terms.put("TESTCASES", testCases.toString());
-
- String text = expandTemplate(readResource(lang + "Driver"), terms);
- FileWriter writer = new FileWriter(driverFile);
- writer.write(text);
- writer.close();
- }
-
- File makeFile = new File(directory, "Makefile");
- {
- String text = expandTemplate(readResource(lang + "Makefile"), terms);
- FileWriter writer = new FileWriter(makeFile);
- writer.write(text);
- writer.close();
- }
- }
-
- public void setSource(String source) throws IOException