From f515ccd590705643987a1e67d5ee00336a234bc5 Mon Sep 17 00:00:00 2001 From: Jered Ye <87924680+JeredYe@users.noreply.github.com> Date: Thu, 9 May 2024 22:02:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../106.15.36.190_80/oj/webservice/OJWS.wsdl | 2 +- JuderUI/catalog.xml | 2 + JuderUI/config.xml | 70 +++++------- JuderUI/dist/JuderUI.jar | Bin 270776 -> 288671 bytes JuderUI/dist/lib/Common.jar | Bin 73701 -> 83054 bytes JuderUI/dist/lib/Judger.jar | Bin 106963 -> 107854 bytes JuderUI/src/data/JudgeFromQueue.java | 36 +++++- JuderUI/src/data/MainForNet.java | 22 +++- JuderUI/src/gui/MainFrame.form | 97 ++++++----------- JuderUI/src/gui/MainFrame.java | 103 +++++++----------- JuderUI/src/swingworker/MySwingWorker.java | 9 +- JuderUI/src/web/Webservice.java | 67 ++++++++++-- Judger/src/kernel/ExeCommand.java | 7 +- Judger/src/kernel/Judger.java | 56 +++++----- Judger/src/main/Process.java | 68 ++++++++---- config.xml | 1 + 17 files changed, 294 insertions(+), 247 deletions(-) create mode 100644 config.xml diff --git a/.gitignore b/.gitignore index bb9ffe3..5f9083d 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ client/nbproject/private/private.properties *.class *.jar *.class +*.class diff --git a/JuderUI/build/classes/META-INF/wsdl/106.15.36.190_80/oj/webservice/OJWS.wsdl b/JuderUI/build/classes/META-INF/wsdl/106.15.36.190_80/oj/webservice/OJWS.wsdl index e3a5ea8..0da2ae1 100644 --- a/JuderUI/build/classes/META-INF/wsdl/106.15.36.190_80/oj/webservice/OJWS.wsdl +++ b/JuderUI/build/classes/META-INF/wsdl/106.15.36.190_80/oj/webservice/OJWS.wsdl @@ -872,7 +872,7 @@ - + \ No newline at end of file diff --git a/JuderUI/catalog.xml b/JuderUI/catalog.xml index f1ec77b..72b3536 100644 --- a/JuderUI/catalog.xml +++ b/JuderUI/catalog.xml @@ -3,4 +3,6 @@ + + \ No newline at end of file diff --git a/JuderUI/config.xml b/JuderUI/config.xml index 9e9423f..d12be63 100644 --- a/JuderUI/config.xml +++ b/JuderUI/config.xml @@ -1,63 +1,43 @@ - + + + K:\msvc\MSVC + $compilerPath$/bin/cl.exe /O2 /Fo"$objFile$" /Fe"$exeFile$" /I $compilerPath$\include /EHsc "$sourceFile$" /link /LIBPATH:"$compilerPath$\lib" + + + + + $exeFile$ + K:\Dev-Cpp\MinGW64\bin - g++.exe -Wall -g -std=c++14 -c $sourceFile$ -o $objFile$ + "$compilerPath$\g++" -Wall -g -c -std=c++1y "$sourceFile$" -o "$objFile$" - g++.exe -o $exeFile$ $objFile$ -O1 + $compilerPath$\g++ "$objFile$" "$exeFile$" -o -O1 - "$exeFile$" - - - C:/MinGW/bin/ - g++.exe -Wall -g -std=c++14 -c $sourceFile$ -o $objFile$ - - g++.exe -o $exeFile$ $objFile$ -O1 - - msvc + $exeFile$ + + + - C:/JDK8/bin - g++.exe -Wall -g -std=c++14 -c $sourceFile$ -o $objFile$ - - g++.exe -o $exeFile$ $objFile$ -O1 - - "$compilerPath$ java -cp $sourceFile$\output\$exeFile$" - - - C:/MinGW/bin/ - g++.exe -Wall -g -std=c++14 -c $sourceFile$ -o $objFile$ - - g++.exe -o $exeFile$ $objFile$ -O1 - - - - - - - - C:/MinGW/bin/ - g++.exe -Wall -g -std=c++14 -c $sourceFile$ -o $objFile$ - + C:\Program Files\Java\jdk1.8.0_121\bin + "$compilerPath$/javac" $sourceFile$ + g++.exe -o $exeFile$ $objFile$ -O1 $exeFile$ + + - C:/MinGW/bin/ - g++.exe -Wall -g -std=c++14 -c $sourceFile$ -o $objFile$ - - g++.exe -o $exeFile$ $objFile$ -O1 - - - + F:\裁判机\python3.12 + + + $compilerPath$/python "$sourceFile$" - - - - \ No newline at end of file diff --git a/JuderUI/dist/JuderUI.jar b/JuderUI/dist/JuderUI.jar index caf63ddd2febeab423d685bec4cb69af05627c56..1cb903f5efa89eb2f5d33d1ba23c7ceb16aea61b 100644 GIT binary patch delta 46139 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 I!yIh!zqJZ6a{vGU delta 32365 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 MiqZ342KDs+0d%+|?EnA( diff --git a/JuderUI/dist/lib/Common.jar b/JuderUI/dist/lib/Common.jar index ff5cc180e3292e317ff04912b9d10113c7d59df2..8329a08d62f1efcb61492141c2e9135fc2165a1e 100644 GIT binary patch delta 16853 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 RGlF#d!~dB<6T&&^{}&$L(8mA( diff --git a/JuderUI/dist/lib/Judger.jar b/JuderUI/dist/lib/Judger.jar index d682263e4e23aef2490bd2e809273f9a305c2e20..d6260c0f1e57cc09f2cb2e2554e89970ba5a43b8 100644 GIT binary patch delta 15813 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 { + Control.addExceptionInfo(threadNo, e.toString()); + }); + } + } if(problem.isEmpty()){ Result.status = Const.CE; CompileInfo.remark = "ȡĿϢʧܣ"; + return; } // System.out.println(Integer.parseInt(problemId)); // System.out.println(xml); - xtp.readXmlString(problem); - problemBean = xtp.convertXML(); - Control.addJudgeInfo(threadNo, "get problemId: " + problemId); - problemBeanMap.put(problemId, problemBean); + try{ + xtp.readXmlString(problem); + problemBean = xtp.convertXML(); + Control.addJudgeInfo(threadNo, "get problemId: " + problemId); + problemBeanMap.put(problemId, problemBean); + }catch(Exception e){ + Result.status = Const.SE; + CompileInfo.remark = "ĿϢʧܣϵԱϢ"+"problemId:"+problemId+e.getMessage(); + e.printStackTrace(); + EventQueue.invokeLater(() -> { + Control.addExceptionInfo(threadNo, e.toString()); + }); + } + } // @@ -219,6 +240,9 @@ public class JudgeFromQueue extends Thread { Control.addJudgeInfo(threadNo, "server result:" + req.getRspMsg()); // Control.addJudgeInfo("ok"); } catch (Exception e) { + EventQueue.invokeLater(() -> { + Control.addExceptionInfo(threadNo, e.toString()); + }); e.printStackTrace(); } diff --git a/JuderUI/src/data/MainForNet.java b/JuderUI/src/data/MainForNet.java index 39510ff..bb71256 100644 --- a/JuderUI/src/data/MainForNet.java +++ b/JuderUI/src/data/MainForNet.java @@ -97,11 +97,29 @@ public class MainForNet extends Thread { private List getWebServiceSolutions() throws Exception { Control.setWebService(new Webservice(new URL(Control.getUrl()), Control.getQname())); - String xml = Control.getWebService().getSolutions(5); + String xml = null; + try{ + xml=Control.getWebService().getSolutions(5); + } + catch(Exception ex){ + ex.printStackTrace(); + EventQueue.invokeLater(() -> { + Control.addExceptionInfo(0, ex.getStackTrace().toString()); + }); + } XmlToSolution xts = new XmlToSolution(); xts.readXmlString(xml); - this.solutions = xts.convertXML(); + + try{ + this.solutions = xts.convertXML(); + } + catch(Exception ex){ + ex.printStackTrace(); + EventQueue.invokeLater(() -> { + Control.addExceptionInfo(0, ex.getStackTrace().toString()); + }); + } // Control.addJudgeInfo(" get "+solutions.getSolution().size()+" solutioins "); if (solutions.getSolution().size() != 0) { //System.out.println("get " + solutions.getSolution().size() + " solution"); diff --git a/JuderUI/src/gui/MainFrame.form b/JuderUI/src/gui/MainFrame.form index 5ef3fe5..09202ce 100644 --- a/JuderUI/src/gui/MainFrame.form +++ b/JuderUI/src/gui/MainFrame.form @@ -79,7 +79,7 @@ - + @@ -103,20 +103,11 @@ - - + - - - - - - - - - + @@ -126,17 +117,24 @@ - + + + + + + - - - + + + + + + - - + @@ -144,21 +142,15 @@ - - - - - - - - - - - - - - - + + + + + + + + + @@ -300,22 +292,19 @@ - - - - - - - - + + - - - - + + + + + + + @@ -404,7 +393,7 @@ - + @@ -529,14 +518,6 @@ - - - - - - - - @@ -553,14 +534,6 @@ - - - - - - - - diff --git a/JuderUI/src/gui/MainFrame.java b/JuderUI/src/gui/MainFrame.java index cc9c78b..49939d0 100644 --- a/JuderUI/src/gui/MainFrame.java +++ b/JuderUI/src/gui/MainFrame.java @@ -127,9 +127,7 @@ public class MainFrame extends javax.swing.JFrame { jLabel17 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); - jLabel8 = new javax.swing.JLabel(); comboCppCompiler = new javax.swing.JComboBox(); - jLabel10 = new javax.swing.JLabel(); comboJavaCompiler = new javax.swing.JComboBox(); jCheckBox2 = new javax.swing.JCheckBox(); @@ -176,18 +174,16 @@ public class MainFrame extends javax.swing.JFrame { jPanel7Layout.setHorizontalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() - .addContainerGap() .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 379, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel15)) + .addGroup(jPanel7Layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel15)) + .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 389, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel7Layout.createSequentialGroup() - .addComponent(jScrollPane11, javax.swing.GroupLayout.DEFAULT_SIZE, 545, Short.MAX_VALUE) - .addContainerGap()) - .addGroup(jPanel7Layout.createSequentialGroup() - .addComponent(jLabel16) - .addGap(35, 501, Short.MAX_VALUE)))) + .addComponent(jLabel16) + .addComponent(jScrollPane11, javax.swing.GroupLayout.PREFERRED_SIZE, 542, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel7Layout.setVerticalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -226,7 +222,7 @@ public class MainFrame extends javax.swing.JFrame { .addGroup(jPanel6Layout.createSequentialGroup() .addComponent(jLabel9) .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 545, Short.MAX_VALUE)) + .addComponent(jScrollPane12, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)) .addContainerGap()) ); jPanel6Layout.setVerticalGroup( @@ -283,9 +279,6 @@ public class MainFrame extends javax.swing.JFrame { } }); - jLabel8.setFont(new java.awt.Font("", 0, 10)); // NOI18N - jLabel8.setText("ĬC/C++:"); - comboCppCompiler.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboCppCompiler.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { @@ -298,9 +291,6 @@ public class MainFrame extends javax.swing.JFrame { } }); - jLabel10.setFont(new java.awt.Font("", 0, 10)); // NOI18N - jLabel10.setText("ĬJava:"); - comboJavaCompiler.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); comboJavaCompiler.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { @@ -330,7 +320,7 @@ public class MainFrame extends javax.swing.JFrame { jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSeparator2) .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -354,19 +344,10 @@ public class MainFrame extends javax.swing.JFrame { .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(button_StartThread)) + .addGap(0, 0, Short.MAX_VALUE)) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(jButton2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jLabel8) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(comboCppCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(9, 9, 9) - .addComponent(jLabel10) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(comboJavaCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) + .addGap(353, 353, 353) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(distributorIP, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -376,30 +357,32 @@ public class MainFrame extends javax.swing.JFrame { .addComponent(distributorPort, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jCheckBox2, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(36, 36, 36)))) + .addGap(18, 18, 18) + .addComponent(comboCppCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, 0, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(comboJavaCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, 0, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(83, 83, 83))) + .addGap(21, 21, 21)) .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(threadManagerTabb, javax.swing.GroupLayout.PREFERRED_SIZE, 955, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(28, 28, 28))) - .addGap(21, 21, 21) - .addComponent(jSeparator1)) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(button_StartThread) + .addComponent(threadManagerTabb, javax.swing.GroupLayout.PREFERRED_SIZE, 945, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 1, Short.MAX_VALUE)) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jButton2) - .addComponent(jLabel8) - .addComponent(comboCppCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel10) - .addComponent(comboJavaCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(distributorPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(distributorIP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel3) - .addComponent(jCheckBox2))) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jButton2) + .addComponent(comboCppCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(comboJavaCompiler, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel4) + .addComponent(distributorPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(distributorIP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel3) + .addComponent(jCheckBox2)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -512,25 +495,25 @@ public class MainFrame extends javax.swing.JFrame { } }//GEN-LAST:event_jLabel17MouseClicked private boolean checkForCompile() { - String tmp = null; - tmp = Config.getCompilerDir("c",comboCppCompiler.getSelectedItem().toString()); - if (tmp == null || "".equals(tmp) || !FileFinder.isExistFile(tmp + File.separator + "gcc.exe")&&!FileFinder.isExistFile(tmp + File.separator + "g++.exe")&&!FileFinder.isExistFile(tmp + File.separator + "/bin/cl.exe")) { + //String tmp = null; + //tmp = Config.getCompilerDir("c",comboCppCompiler.getSelectedItem().toString()); + //if (tmp == null || "".equals(tmp) || !FileFinder.isExistFile(tmp + File.separator + "gcc.exe")&&!FileFinder.isExistFile(tmp + File.separator + "g++.exe")&&!FileFinder.isExistFile(tmp + File.separator + "/bin/cl.exe")) { //ñ - JOptionPane.showMessageDialog(this, "C/C++"); + // JOptionPane.showMessageDialog(this, "C/C++"); // NewCompileSetting window = new NewCompileSetting("c", this, true); // window.setVisible(true); - return false; - } + // return false; + //} - tmp = Config.getCompilerDir("java",comboJavaCompiler.getSelectedItem().toString()); - if (tmp == null || "".equals(tmp) || !FileFinder.isExistFile(tmp + File.separator + "javac.exe")) { + // tmp = Config.getCompilerDir("java",comboJavaCompiler.getSelectedItem().toString()); + //if (tmp == null || "".equals(tmp) || !FileFinder.isExistFile(tmp + File.separator + "javac.exe")) { - JOptionPane.showMessageDialog(this, "Java"); + // JOptionPane.showMessageDialog(this, "Java"); // NewCompileSetting window = new NewCompileSetting("java", this, true); // window.setVisible(true); - return false; - } + // return false; + //} return true; } public String getSelectedCppCompilerName(){ @@ -684,7 +667,6 @@ public class MainFrame extends javax.swing.JFrame { private javax.swing.JCheckBox jCheckBox1; private javax.swing.JCheckBox jCheckBox2; javax.swing.JComboBox jComboBox1; - private javax.swing.JLabel jLabel10; javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; private javax.swing.JLabel jLabel16; @@ -695,7 +677,6 @@ public class MainFrame extends javax.swing.JFrame { private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; - private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; public javax.swing.JPanel jPanel2; diff --git a/JuderUI/src/swingworker/MySwingWorker.java b/JuderUI/src/swingworker/MySwingWorker.java index 019c80a..2fb7617 100644 --- a/JuderUI/src/swingworker/MySwingWorker.java +++ b/JuderUI/src/swingworker/MySwingWorker.java @@ -5,6 +5,9 @@ */ package swingworker; +import common.Const; +import gui.Control; +import java.awt.EventQueue; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.function.Consumer; @@ -12,6 +15,8 @@ import javax.swing.SwingWorker; import main.Answer; import main.Process; import persistence.oj_beans.ProblemTestCaseBean; +import resultData.CompileInfo; +import resultData.Result; /** * @@ -44,7 +49,9 @@ public class MySwingWorker extends SwingWorker{ @Override protected Answer doInBackground() throws Exception { - return new Process().Judge(getSolutionId(),getProblemId(),getLanguage(),getCompiler(), getSourceCode(), timeOut, getTestCaseList(),this::writeToGui); + + return new Process().Judge(getSolutionId(),getProblemId(),getLanguage(),getCompiler(), getSourceCode(), timeOut, getTestCaseList(),this::writeToGui); + } public void writeToGui(String s){ diff --git a/JuderUI/src/web/Webservice.java b/JuderUI/src/web/Webservice.java index 2f25b1f..d557a0c 100644 --- a/JuderUI/src/web/Webservice.java +++ b/JuderUI/src/web/Webservice.java @@ -13,6 +13,7 @@ import edu.dhu.ws.OJWS; import edu.dhu.ws.OJWS_Service; import static gui.Control.getDistributorField; import static gui.Control.getJudgeInfoEditorPane; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.rmi.RemoteException; @@ -26,6 +27,7 @@ import javax.swing.JTextField; import javax.xml.namespace.QName; import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboService; +import org.springframework.boot.logging.LogLevel; /** * * @author ytxlo @@ -34,7 +36,7 @@ import org.apache.dubbo.config.annotation.DubboService; public class Webservice implements java.rmi.Remote{ private OJWS_Service webs; private OJWS servicePort; - public static boolean ENABLE_DUBBO=false; + public static boolean ENABLE_DUBBO=true; public static boolean existDubbo=false; //@DubboReference(url = "http://106.15.36.190:3000/edu.dhu.ws.OJWS") //http://106.15.36.190:3000/edu.dhu.ws.OJWS @@ -45,6 +47,7 @@ public class Webservice implements java.rmi.Remote{ //@DubboReference(url = "dubbo://10.10.10.1:20880/edu.dhu.ws.OJWS") //@Resource public OJWS dubboPort; + common.Logger logger; public static OJWS initDubboPort(String url) { // Ӧ ApplicationConfig application = new ApplicationConfig(); @@ -60,7 +63,7 @@ public class Webservice implements java.rmi.Remote{ return reference.get(); } private void setDubbo(){ - + logger = common.Logger.getInstance(); String url = "dubbo://localhost:8080/edu.dhu.ws.OJWS"; JTextField ip=getDistributorField(0); JTextField port=getDistributorField(1); @@ -69,16 +72,17 @@ public class Webservice implements java.rmi.Remote{ try { JEditorPane infoPane=getJudgeInfoEditorPane(0); - if(!existDubbo&&infoPane!=null) + if(!existDubbo&&infoPane!=null){ infoPane.setText(infoPane.getText()+LocalTime.now().toString()+"Dubbo...\n"); - + logger.log("dubbo", common.LogLevel.INFO); + } dubboPort = initDubboPort(url); //infoPane.setText(infoPane.getText()+LocalTime.now().toString()+"test..."+dubboPort.test("aa")+"\n"); } catch(Exception e){ - JEditorPane infoPane=getJudgeInfoEditorPane(1); - infoPane.setText(infoPane.getText()+LocalTime.now().toString()+e.getMessage()+"\n"); + JEditorPane infoPane=getJudgeInfoEditorPane(1); + infoPane.setText(infoPane.getText()+"\n"+LocalTime.now().toString()+e.getMessage()+"\n"); e.printStackTrace(); } if(dubboPort!=null){ @@ -90,6 +94,7 @@ public class Webservice implements java.rmi.Remote{ }else{ existDubbo=false; JEditorPane infoPane=getJudgeInfoEditorPane(1); + logger.log("dubboʧ", common.LogLevel.ERROR); infoPane.setText(infoPane.getText()+LocalTime.now().toString()+"\nDubboʧܣURL:"+url+"\n"); } @@ -110,6 +115,7 @@ public class Webservice implements java.rmi.Remote{ servicePort = webs.getOJWSImplPort(); } catch(Exception e){ + logger.log(e.getMessage(), common.LogLevel.ERROR); e.printStackTrace(); } } @@ -138,20 +144,56 @@ public class Webservice implements java.rmi.Remote{ setDubbo(); } public String getSolutions(int arg0)throws java.rmi.RemoteException{ - String s =this.servicePort.wsGetSolutions("judge","judge123",arg0); - return s; + try{ + String s =this.servicePort.wsGetSolutions("judge","judge123",arg0); + return s; + } + catch(Exception e){ + logger.log(e.getMessage(), common.LogLevel.ERROR); + JEditorPane infoPane=getJudgeInfoEditorPane(1); + infoPane.setText(infoPane.getText()+LocalTime.now().toString()+e.getMessage()+"\n"); + return ""; + } } public String getProblem(int arg)throws java.rmi.RemoteException{ // servicePort.wsGetProblem(arg0, arg1, arg, arg) - byte[] soucre = this.servicePort.wsGetProblem4Judge("felix", "felix", arg); - String result = Decrypt.decrypt("felix10000", soucre); - //String prob = result.replaceFirst("GBK", "UTF-8"); - return result; + try{ + byte[] soucre = this.servicePort.wsGetProblem4Judge("felix", "felix", arg); + String result = Decrypt.decrypt("felix10000", soucre); + //String prob = result.replaceFirst("GBK", "UTF-8"); + return result; + } + + catch(Exception e){ + logger.log(e.getMessage(), common.LogLevel.ERROR); + JEditorPane infoPane=getJudgeInfoEditorPane(1); + infoPane.setText(infoPane.getText()+LocalTime.now().toString()+e.getMessage()+"\n"); + return ""; + } } public String updateResult(String arg)throws java.rmi.RemoteException{ + try{ byte[] data=Decrypt.encrypt("judge123", arg); String s = servicePort.wsUpdateResult("judge","judge123",data); return s; + } + catch(Exception e){ + logger.log(e.getMessage(), common.LogLevel.ERROR); + JEditorPane infoPane=getJudgeInfoEditorPane(1); + infoPane.setText(infoPane.getText()+LocalTime.now().toString()+e.getMessage()+"\n"); + return ""; + } + } + private static String getGbkString(String string) { + try { + // Convert the string to byte array using GBK encoding + byte[] gbkBytes = string.getBytes("GBK"); + // Create a new string from the byte array using GBK encoding + return new String(gbkBytes, "GBK"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + return string; + } } public static void main(String[] args) { Webservice ws=new Webservice(); @@ -160,6 +202,7 @@ public class Webservice implements java.rmi.Remote{ System.out.println(ws.getProblem(75)); } catch (RemoteException ex) { Logger.getLogger(Webservice.class.getName()).log(Level.SEVERE, null, ex); + } } } diff --git a/Judger/src/kernel/ExeCommand.java b/Judger/src/kernel/ExeCommand.java index 96ab38b..3acfb4b 100644 --- a/Judger/src/kernel/ExeCommand.java +++ b/Judger/src/kernel/ExeCommand.java @@ -18,6 +18,7 @@ import resultData.Result; import tool.ThreadTool; import com.sun.jna.Library; import com.sun.jna.Native; +import java.awt.EventQueue; import java.lang.reflect.Field; import resultData.JudgerInfo; @@ -152,14 +153,14 @@ public class ExeCommand { RunInfo.remark = JudgerInfo.remark; } else if (flag) { - RunInfo.remark = "ʱ" + RunInfo.errorInfo; + RunInfo.remark = "ʱ"; Result.status = Const.RE; } else if (RunInfo.isKilled == 1) { Result.status = Const.TLE; RunInfo.remark = "гʱ" + RunInfo.errorInfo; } else if (result != 0) { Result.status = Const.RE; - RunInfo.remark = "ʱ󣺳ֵΪ" + RunInfo.errorInfo; + RunInfo.remark = "ʱ󣺳ֵΪ"; } if (result == 0) { RunInfo.remark = ""; @@ -229,7 +230,7 @@ public class ExeCommand { } catch (Exception ex) { ex.printStackTrace(); Result.status = Const.SE; - JudgerInfo.remark = "ϵͳ,"; + JudgerInfo.remark = "ϵͳ,"+ex.getMessage(); Log.writeExceptionLog("compileCommand line:3:" + ex.getMessage() + "\n" + ex.getStackTrace()); return -1; } finally { diff --git a/Judger/src/kernel/Judger.java b/Judger/src/kernel/Judger.java index f2cbab8..dc8fc4c 100644 --- a/Judger/src/kernel/Judger.java +++ b/Judger/src/kernel/Judger.java @@ -56,6 +56,7 @@ public class Judger { // if (!file1.exists() || !file2.exists()) { // System.out.println("δҵ"); // isFound = false; + // } // } @@ -121,7 +122,7 @@ public class Judger { else map.put(LangSelector.PlaceHolder.ObjFile.getStr(),Config.getTargetPath()+ File.separator+"output"+ File.separator + "Main.obj"); map.put(LangSelector.PlaceHolder.ExeFile.getStr(),Config.getTargetPath()+ File.separator+"output"+ File.separator + "Main.exe"); - String linkCommand = LangSelector.matchPlaceHolder(LangSelector.getCompileCommand("C++",compiler), map); + String linkCommand = LangSelector.matchPlaceHolder(LangSelector.getCompileCommand(language,compiler), map); //String linkCommand = Config.getCompilerDir(language) + File.separator + "g++ " +"\""+ Config.getTargetPath() +File.separator+"output"+File.separator+ "Main"+".o"+"\"" + " -o " +"\""+ Config.getTargetPath()+File.separator+"output"+File.separator + "Main"+".exe"+"\"\n"; return linkCommand; } @@ -134,14 +135,7 @@ public class Judger { compiler=LangSelector.getDefaultCompilerName(language); } language = language.toLowerCase();//todo - if (language.equals("c")) { - - compileCommand += "\"" + Config.getCompilerDir(language,compiler) + File.separator + "gcc\" -c " + "\""+sourceFile +"\""+ " -o " +"\""+Config.getTargetPath()+ File.separator+"output"+ File.separator + "Main"+".o"+"\"\n"; - } else if (language.equals("java")) { - compileCommand += "\"" + Config.getCompilerDir(language,compiler) + File.separator + "javac\" " + sourceFile; //todoļ· - } else if (language.equals("cpp")||language.equals("c++")) { - //compileCommand +=Config.getCompilerDir(language) + File.separator +LangSelector.getCompileCommand("C++",null); - + HashMapmap=new HashMap<>(); map.put(LangSelector.PlaceHolder.CompilerPath.getStr(),Config.getCompilerDir(language,compiler)); map.put(LangSelector.PlaceHolder.SourceFile.getStr(),sourceFile); @@ -150,41 +144,38 @@ public class Judger { else map.put(LangSelector.PlaceHolder.ObjFile.getStr(),Config.getTargetPath()+ File.separator+"output"+ File.separator + "Main.obj"); map.put(LangSelector.PlaceHolder.ExeFile.getStr(),Config.getTargetPath()+ File.separator+"output"+ File.separator + "Main.exe"); - compileCommand = LangSelector.matchPlaceHolder(LangSelector.getCompileCommand("C++",compiler), map); - //compileCommand += "\"" + Config.getCompilerDir(language) + File.separator + "g++\" -Wall -g -c -std=c++1y "//todo:C++14 - // + "\""+sourceFile+"\"" + " -o " + "\""+Config.getTargetPath()+ File.separator+"output"+ File.separator + "Main"+".o"+"\"\n"; - } else { - CompileInfo.info = "this programing language is not support!!!"; - } + compileCommand = LangSelector.matchPlaceHolder(LangSelector.getCompileCommand(language,compiler), map); return compileCommand; } private String runCommand(String language,String compiler) { String runCommand = ""; - if (language.equals("c")) { - runCommand +="\""+ Config.getTargetPath()+ File.separator+"output"+File.separator + "Main"+"\""; + runCommand+=LangSelector.getRunCommand(language, compiler);//ԣPython + HashMapmap=new HashMap<>(); + if (language.equals("java")) { + String rawCmd= Config.getCompilerDir(language,compiler) + File.separator + "java"+ " -cp " + Config.getSourcePath()+ File.separator+"output"+File.separator+ " "+mainClassName; // TODO ļ· start + map.put(LangSelector.PlaceHolder.ExeFile.getStr(),rawCmd); +//System.err.println(runCommand); + } else if (language.equals("cpp")||language.equals("c++")||language.equals("c")) { + String rawCmd="\""+ Config.getTargetPath()+ File.separator+"output"+File.separator + "Main"+"\""; + map.put(LangSelector.PlaceHolder.ExeFile.getStr(),rawCmd); + } + else{ - } else if (language.equals("java")) { - runCommand += Config.getCompilerDir(language,compiler) + File.separator + "java"+ " -cp " + Config.getSourcePath()+ File.separator+"output"+File.separator+ " "+mainClassName; // TODO ļ· start - //System.err.println(runCommand); - } else if (language.equals("cpp")||language.equals("c++")) { - runCommand += "\""+ Config.getTargetPath()+ File.separator+"output"+File.separator + "Main"+"\""; + } // System.out.println(runCommand); + + map.put(LangSelector.PlaceHolder.CompilerPath.getStr(),Config.getCompilerDir(language,compiler)); + map.put(LangSelector.PlaceHolder.SourceFile.getStr(),sourceFile); + runCommand=LangSelector.matchPlaceHolder(runCommand, map); return runCommand; } public int compile(String sourceCode, String language,String compiler) { int result = -1; - //ǷڷΧ + language = language.toLowerCase(); - if (language.equals("c") || language.equals("cpp")|| language.equals("c++") || language.equals("java")) { - //ok - } else { - Result.status = Const.CE; -// CompileInfo.remark = "಻Ҫ"; - return result; - } try { if (Shared.PID!=-1&&ThreadTool.findProcess(Shared.PID)) { //tore0 Runtime.getRuntime().exec("taskkill /f /t /PID "+Shared.PID).waitFor(); @@ -199,7 +190,12 @@ public class Judger { int repeatTime = 3; String compileCom = compileCommand(language,compiler); + if(compileCom==null){ + result=0; + return result; + } for (int i = 0; i < repeatTime; i++) { + result = exe.exeCompile(compileCom,"Path="+Config.getCompilerDir(language,compiler)); if (result == 0) { if (language.equals("c") || language.equals("cpp")||language.equals("c++")) { diff --git a/Judger/src/main/Process.java b/Judger/src/main/Process.java index 10b8fdb..26726ef 100644 --- a/Judger/src/main/Process.java +++ b/Judger/src/main/Process.java @@ -373,33 +373,53 @@ public class Process { } solutionBean.setStatus(Const.STATUS[maxLevelStatus]); //ߵȼӦϢ - if (maxLevelStatus == Const.CE) { - solutionBean.setRemark(remarks[index]); - } else if (result[index] == Const.WA || result[index] == Const.PE) { -// solutionBean.setRemark(""); - String message = new String(); - for (int i = 0; i < remarks.length; i++) { - message += " " + testCaseBeans.get(i).getId() + "Ϊ " + Const.STATUS[result[i]] + ":"; - message += remarks[i] + "\n"; - } - solutionBean.setRemark(message); - } else {//RE,TLE - String wrongCaseIds = ""; - for (int j = 0; j < sumTestcaseNum; j++) { - if (result[j] == result[index]) { - wrongCaseIds += ((ProblemTestCaseBean) testCaseBeans.get(j)).getId() + ","; - } - } - solutionBean.setRemark("IDΪ" + wrongCaseIds + remarks[index]); - String message = new String(); - for (int i = 0; i < remarks.length; i++) { - message += "\n"; - message += remarks[i]; - } - solutionBean.setRemark(solutionBean.getRemark() + message); + + + + String message=""; + for (int i = 0; i < remarks.length; i++) { + message += " " + testCaseBeans.get(i).getId() + "Ϊ " + Const.STATUS[result[i]] + ":"; + message += remarks[i] + "\n"; } + solutionBean.setRemark(message); + + //old +// if (maxLevelStatus == Const.CE) { +// solutionBean.setRemark(remarks[index]); +// } else if (result[index] == Const.WA || result[index] == Const.PE) { +//// solutionBean.setRemark(""); +// String message = new String(); +// for (int i = 0; i < remarks.length; i++) { +// message += " " + testCaseBeans.get(i).getId() + "Ϊ " + Const.STATUS[result[i]] + ":"; +// message += remarks[i] + "\n"; +// } +// solutionBean.setRemark(message); +// } else {//RE,TLE +// String wrongCaseIds = ""; +// for (int j = 0; j < sumTestcaseNum; j++) { +// if (result[j] == result[index]) { +// wrongCaseIds += ((ProblemTestCaseBean) testCaseBeans.get(j)).getId() + ","; +// } +// } +// solutionBean.setRemark("IDΪ" + wrongCaseIds + remarks[index]); +// String message = new String(); +// for (int i = 0; i < remarks.length; i++) { +// message += "\n"; +// message += remarks[i]; +// } +// solutionBean.setRemark(solutionBean.getRemark() + message); +// } } solutionBean.setCorrectCaseIds(correctCaseIds); + //remarkתΪGBKַ + String originalRemark=solutionBean.getRemark(); + try{ + solutionBean.setRemark(new String(solutionBean.getRemark().getBytes("GBK"),"GBK")); + }catch(Exception e){ + solutionBean.setRemark(originalRemark); + } + //Jared + //SolutionDAO.update(solutionBean); } } diff --git a/config.xml b/config.xml new file mode 100644 index 0000000..e706bb1 --- /dev/null +++ b/config.xml @@ -0,0 +1 @@ + \ No newline at end of file