Skip to content

Commit

Permalink
add Submission model and serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
SepehrGanji committed Sep 12, 2024
1 parent d794a2e commit 4bb2816
Show file tree
Hide file tree
Showing 8 changed files with 98 additions and 13 deletions.
3 changes: 2 additions & 1 deletion .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ QUEUE_HOST=
QUEUE_USER=
QUEUE_PASSWD=
SUBMISSION_QUEUE_NAME=
RESULT_QUEUE_NAME=
RESULT_QUEUE_NAME=
FILE_PATH=
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@ build

# Ignore env files
.env

fs
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ dependencies {
implementation 'org.postgresql:postgresql:42.2.5'
implementation 'com.rabbitmq:amqp-client:5.7.1'
implementation 'org.slf4j:slf4j-log4j12:1.7.30'
implementation 'com.google.code.gson:gson:2.8.6'
}


Expand Down
22 changes: 10 additions & 12 deletions app/src/main/java/com/coder/judge/App.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
package com.coder.judge;


import org.apache.log4j.Logger;
import org.apache.log4j.Logger;

import com.coder.judge.Queue.Queue;
import com.coder.judge.Queue.SubmissionCallback;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

public class App {
static Logger log = Logger.getLogger(App.class.getName());

private static final Logger log = Logger.getLogger(App.class.getName());

public String getGreeting() {
log.info("testlog");
return "Hello World!";
return "App started!";
}

public static void main(String[] args) {
System.out.println(new App().getGreeting());
try {
Channel channel = Queue.getChannel();
//channel.queueDeclare("test", false, false, false, null);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume("test", true, deliverCallback, consumerTag -> {
String queueName = System.getenv("SUBMISSION_QUEUE_NAME");
SubmissionCallback cb = new SubmissionCallback();

channel.basicConsume(queueName, true, cb, consumerTag -> {
});
} catch (Exception e) {
e.printStackTrace();
Expand Down
31 changes: 31 additions & 0 deletions app/src/main/java/com/coder/judge/Model/Submission.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.coder.judge.Model;

public class Submission {
private int id;
private String lang;
private String code;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getLang() {
return lang;
}

public void setLang(String lang) {
this.lang = lang;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}
}
26 changes: 26 additions & 0 deletions app/src/main/java/com/coder/judge/Queue/SubmissionCallback.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.coder.judge.Queue;

import java.nio.charset.StandardCharsets;

import org.apache.log4j.Logger;

import com.coder.judge.Model.Submission;
import com.coder.judge.Serializer.SubmissionSerializer;
import com.rabbitmq.client.DeliverCallback;
import com.rabbitmq.client.Delivery;

public class SubmissionCallback implements DeliverCallback {

private static final Logger log = Logger.getLogger(SubmissionCallback.class.getName());

@Override
public void handle(String consumerTag, Delivery delivery) {
try {
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
Submission submission = SubmissionSerializer.getInstance().deserialize(message);
log.info(submission.getId());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.coder.judge.Serializer;

import com.coder.judge.Model.Submission;
import com.google.gson.Gson;

public class SubmissionSerializer {

private SubmissionSerializer() {
}

private static class SingletonHolder {

private static final SubmissionSerializer INSTANCE = new SubmissionSerializer();
}

public static SubmissionSerializer getInstance() {
return SingletonHolder.INSTANCE;
}

public Submission deserialize(String message) {
Gson gson = new Gson();
Submission sub = gson.fromJson(message, Submission.class);
return sub;
}
}
1 change: 1 addition & 0 deletions app/src/main/resources/db/migration/V2__lang.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE "submission" ADD COLUMN "lang" text;

0 comments on commit 4bb2816

Please sign in to comment.