Skip to content
This repository was archived by the owner on Mar 28, 2019. It is now read-only.

Commit d78417b

Browse files
committed
Revised and optimised Codejudge compilation server
1 parent f45215b commit d78417b

File tree

6 files changed

+43
-60
lines changed

6 files changed

+43
-60
lines changed

codejudge-compiler/src/codejudge/compiler/RequestThread.java

Lines changed: 24 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@
1010
import java.io.PrintWriter;
1111
import java.net.Socket;
1212

13+
import codejudge.compiler.languages.C;
14+
import codejudge.compiler.languages.Cpp;
15+
import codejudge.compiler.languages.Java;
16+
import codejudge.compiler.languages.Language;
17+
import codejudge.compiler.languages.Python;
18+
1319
public class RequestThread extends Thread {
1420

1521
Socket s;
@@ -35,57 +41,24 @@ public void run() {
3541
PrintWriter writer = new PrintWriter(new FileOutputStream("stage/" + n +"/in.txt"));
3642
writer.println(input);
3743
writer.close();
38-
if(lang.equals("c")) {
39-
C c = new C(file, contents, dir.getAbsolutePath());
40-
c.compile();
41-
String errors = compileErrors();
42-
if(errors.equals("")) {
43-
c.execute();
44-
String output = execMsg();
45-
out.println("1");
46-
out.println(output);
47-
} else {
48-
out.println("0");
49-
out.println(errors);
50-
}
51-
} else if(lang.equals("cpp")) {
52-
Cpp cpp = new Cpp(file, contents, dir.getAbsolutePath());
53-
cpp.compile();
54-
String errors = compileErrors();
55-
if(errors.equals("")) {
56-
cpp.execute();
57-
String output = execMsg();
58-
out.println("1");
59-
out.println(output);
60-
} else {
61-
out.println("0");
62-
out.println(errors);
63-
}
64-
} else if(lang.equals("java")) {
65-
Java java = new Java(file, contents, dir.getAbsolutePath());
66-
java.compile();
67-
String errors = compileErrors();
68-
if(errors.equals("")) {
69-
java.execute();
70-
String output = execMsg();
71-
out.println("1");
72-
out.println(output);
73-
} else {
74-
out.println("0");
75-
out.println(errors);
76-
}
77-
} else if(lang.equals("python")) {
78-
Python py = new Python(file, contents, dir.getAbsolutePath());
79-
py.execute();
80-
String errors = compileErrors();
81-
if(errors.equals("")) {
82-
String output = execMsg();
83-
out.println("1");
84-
out.println(output);
85-
} else {
86-
out.println("0");
87-
out.println(errors);
88-
}
44+
Language l = null;
45+
if(lang.equals("c"))
46+
l = new C(file, contents, dir.getAbsolutePath());
47+
else if(lang.equals("cpp"))
48+
l = new Cpp(file, contents, dir.getAbsolutePath());
49+
else if(lang.equals("java"))
50+
l = new Java(file, contents, dir.getAbsolutePath());
51+
else if(lang.equals("python"))
52+
l = new Python(file, contents, dir.getAbsolutePath());
53+
l.compile();
54+
String errors = compileErrors();
55+
if(!errors.equals("")) {
56+
out.println("0");
57+
out.println(errors);
58+
} else {
59+
l.execute();
60+
out.println("1");
61+
out.println(execMsg());
8962
}
9063
s.close();
9164
} catch (IOException e) {

codejudge-compiler/src/codejudge/compiler/C.java renamed to codejudge-compiler/src/codejudge/compiler/languages/C.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package codejudge.compiler;
1+
package codejudge.compiler.languages;
22

33
import java.io.BufferedWriter;
44
import java.io.FileNotFoundException;
55
import java.io.FileOutputStream;
66
import java.io.IOException;
77
import java.io.OutputStreamWriter;
88

9-
public class C {
9+
public class C implements Language {
1010

1111
String file, contents, dir;
1212

codejudge-compiler/src/codejudge/compiler/Cpp.java renamed to codejudge-compiler/src/codejudge/compiler/languages/Cpp.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package codejudge.compiler;
1+
package codejudge.compiler.languages;
22

33
import java.io.BufferedWriter;
44
import java.io.FileNotFoundException;
55
import java.io.FileOutputStream;
66
import java.io.IOException;
77
import java.io.OutputStreamWriter;
88

9-
public class Cpp {
9+
public class Cpp implements Language {
1010

1111
String file, contents, dir;
1212

codejudge-compiler/src/codejudge/compiler/Java.java renamed to codejudge-compiler/src/codejudge/compiler/languages/Java.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package codejudge.compiler;
1+
package codejudge.compiler.languages;
22

33
import java.io.BufferedWriter;
44
import java.io.FileNotFoundException;
55
import java.io.FileOutputStream;
66
import java.io.IOException;
77
import java.io.OutputStreamWriter;
88

9-
public class Java {
9+
public class Java implements Language {
1010

1111
String file, contents, dir;
1212

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package codejudge.compiler.languages;
2+
3+
public interface Language {
4+
5+
public void execute();
6+
public void compile();
7+
8+
}

codejudge-compiler/src/codejudge/compiler/Python.java renamed to codejudge-compiler/src/codejudge/compiler/languages/Python.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package codejudge.compiler;
1+
package codejudge.compiler.languages;
22

33
import java.io.BufferedWriter;
44
import java.io.FileNotFoundException;
55
import java.io.FileOutputStream;
66
import java.io.IOException;
77
import java.io.OutputStreamWriter;
88

9-
public class Python {
9+
public class Python implements Language {
1010

1111
String file, contents, dir;
1212

@@ -16,7 +16,7 @@ public Python(String file, String contents, String dir) {
1616
this.dir = dir;
1717
}
1818

19-
public void execute() {
19+
public void compile() {
2020
try {
2121
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir + "/" + file)));
2222
out.write(contents);
@@ -38,4 +38,6 @@ public void execute() {
3838
e.printStackTrace();
3939
}
4040
}
41+
42+
public void execute() {}
4143
}

0 commit comments

Comments
 (0)