/**
* The problem ID number.
*/
- private String id;
+ private String id;
/**
* The name of the class.
*/
- private String name;
+ private String name;
/**
* The path of the current source file.
*/
- private File sourceFile;
+ private File sourceFile;
/**
* The path of the problem directory.
*/
- private File directory;
+ private File directory;
/**
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");
}
* @throws Exception If the editor could not set itself up.
*/
public Editor(ProblemComponentModel component,
- Language language,
- Renderer renderer) throws Exception
+ Language language, Renderer renderer) throws Exception
{
this.id = String.valueOf(component.getProblem().getProblemID());
this.name = component.getClassName();
}
String lang = language.getName();
- String ext = languageExtension.get(lang);
+ String ext = languageExtension.get(lang);
// Set up the terms used for the template expansion.
HashMap<String,String> terms = new HashMap<String,String>();
- terms.put("RETURNTYPE", component.getReturnType().getDescriptor(language).replaceAll("\\s+", ""));
- terms.put("CLASSNAME", name);
- terms.put("METHODNAME", component.getMethodName());
+ 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("METHODPARAMSTREAMOUT", Util.join(component.getParamNames(), " << "));
- terms.put("METHODPARAMDECLARES", getMethodParamDeclarations(component.getParamTypes(),
- component.getParamNames(),
- language));
+ component.getParamNames(), language));
+ 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));
// Write the problem statement as an HTML file in the problem directory.
File problemFile = new File(directory, "Problem.html");
sourceFile = new File(directory, name + "." + ext);
if (!sourceFile.canRead())
{
- String text = Util.expandTemplate(readTemplate(lang + "Template"),
- terms);
+ String text = Util.expandTemplate(readTemplate(lang + "Template"), terms);
FileWriter writer = new FileWriter(sourceFile);
writer.write(text);
writer.close();
File driverFile = new File(directory, "driver." + ext);
if (!driverFile.canRead())
{
- String text = Util.expandTemplate(readTemplate(lang + "Driver"),
- terms);
+ String text = Util.expandTemplate(readTemplate(lang + "Driver"), terms);
FileWriter writer = new FileWriter(driverFile);
writer.write(text);
writer.close();
// Finally, expand the Makefile template and write it.
File makeFile = new File(directory, "Makefile");
+ if (!makeFile.canRead())
{
- String text = Util.expandTemplate(readTemplate(lang + "Makefile"),
- terms);
+ String text = Util.expandTemplate(readTemplate(lang + "Makefile"), terms);
FileWriter writer = new FileWriter(makeFile);
writer.write(text);
writer.close();
* @param argument A single argument for the remote command.
* @throws Exception If the command could not be sent.
*/
- private void sendVimCommand(String command,
- String argument) throws Exception
+ private void sendVimCommand(String command, String argument) throws Exception
{
String[] arguments = {argument};
sendVimCommand(command, arguments);
* @param argument Arguments for the remote command.
* @throws Exception If the command could not be sent.
*/
- private void sendVimCommand(String command,
- String[] arguments) throws Exception
+ private void sendVimCommand(String command, String[] arguments) throws Exception
{
String[] vimCommand = VimCoder.getVimCommand().split("\\s");
String[] flags = {"--servername", "VimCoder" + id, command};
* before the timeout, we will assume it is not backgrounding and
* that everything worked. This works as long as the Vim server is
* able to start within the stall period. */
- long expire = System.currentTimeMillis() + 250;
+ long expire = System.currentTimeMillis() + 2500;
while (System.currentTimeMillis() < expire)
{
Thread.yield();
String[] strings = new String[types.length];
for (int i = 0; i < types.length; ++i)
{
- strings[i] = types[i].getDescriptor(language).replaceAll("\\s+", "");
+ strings[i] = types[i].getDescriptor(language);
}
return strings;
}
* @param language The language used for representing the data types.
* @return The list of parameters.
*/
- private String getMethodParams(DataType[] types,
- String[] names,
- Language language)
+ private String getMethodParams(DataType[] types, String[] names, Language language)
{
String[] typeStrings = getStringTypes(types, language);
return Util.join(Util.combine(typeStrings, names, " "), ", ");
* @param language The language used for representing the data types.
* @return The parameters as a block of declarations.
*/
- private String getMethodParamDeclarations(DataType[] types,
- String[] names,
- Language language)
+ private String getMethodParamDeclarations(DataType[] types, String[] names, Language language)
{
final String end = ";" + System.getProperty("line.separator");
String[] typeStrings = getStringTypes(types, language);