From 3cb15e31ceb68dafd79fae1c9a4b919b6a86384e Mon Sep 17 00:00:00 2001 From: perfectprocrastinator Date: Sun, 11 Feb 2024 00:18:48 +0530 Subject: [PATCH] Bilal's solution to Adapter DP assignment --- .../adapter/GoogleTranslateAdapter.java | 20 +++++++++++++++++++ .../adapter/MicrosoftTranslateAdapter.java | 18 +++++++++++++++++ .../adapter/TranslationProviderAdapter.java | 4 ++++ .../adapter/TranslationRequest.java | 8 ++++++++ 4 files changed, 50 insertions(+) create mode 100644 src/main/java/com/scaler/lld/design/assignments/adapter/GoogleTranslateAdapter.java create mode 100644 src/main/java/com/scaler/lld/design/assignments/adapter/MicrosoftTranslateAdapter.java diff --git a/src/main/java/com/scaler/lld/design/assignments/adapter/GoogleTranslateAdapter.java b/src/main/java/com/scaler/lld/design/assignments/adapter/GoogleTranslateAdapter.java new file mode 100644 index 0000000..66725ae --- /dev/null +++ b/src/main/java/com/scaler/lld/design/assignments/adapter/GoogleTranslateAdapter.java @@ -0,0 +1,20 @@ +package com.scaler.lld.design.assignments.adapter; + +import com.scaler.lld.design.assignments.adapter.external.GoogleTranslateApi; +import com.scaler.lld.design.assignments.adapter.external.GoogleTranslationRequest; + +import java.util.List; + +public class GoogleTranslateAdapter implements TranslationProviderAdapter{ + private GoogleTranslateApi googleTranslateApi=new GoogleTranslateApi(); + @Override + public String getTranslatedText(TranslationRequest translationRequest) { + GoogleTranslationRequest googleTranslationRequest=new GoogleTranslationRequest(translationRequest.getText(),translationRequest.getSourceLanguage(),translationRequest.getTargetLanguage(),translationRequest.getConfidenceThreshold()); + return googleTranslateApi.convert(googleTranslationRequest); + } + + @Override + public List getTranslationSupportedLanguages() { + return googleTranslateApi.getLanguages(); + } +} diff --git a/src/main/java/com/scaler/lld/design/assignments/adapter/MicrosoftTranslateAdapter.java b/src/main/java/com/scaler/lld/design/assignments/adapter/MicrosoftTranslateAdapter.java new file mode 100644 index 0000000..a1e1926 --- /dev/null +++ b/src/main/java/com/scaler/lld/design/assignments/adapter/MicrosoftTranslateAdapter.java @@ -0,0 +1,18 @@ +package com.scaler.lld.design.assignments.adapter; + +import com.scaler.lld.design.assignments.adapter.external.MicrosoftTranslateApi; + +import java.util.List; + +public class MicrosoftTranslateAdapter implements TranslationProviderAdapter{ + private MicrosoftTranslateApi microsoftTranslateApi=new MicrosoftTranslateApi(); + @Override + public String getTranslatedText(TranslationRequest translationRequest) { + return microsoftTranslateApi.translate(translationRequest.getText(),translationRequest.getSourceLanguage(),translationRequest.getTargetLanguage()); + } + + @Override + public List getTranslationSupportedLanguages() { + return microsoftTranslateApi.getSupportedLanguages(); + } +} diff --git a/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationProviderAdapter.java b/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationProviderAdapter.java index 1ea9d75..454a3d5 100644 --- a/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationProviderAdapter.java +++ b/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationProviderAdapter.java @@ -1,4 +1,8 @@ package com.scaler.lld.design.assignments.adapter; +import java.util.List; + public interface TranslationProviderAdapter { + public String getTranslatedText(TranslationRequest translationRequest); + public List getTranslationSupportedLanguages(); } \ No newline at end of file diff --git a/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationRequest.java b/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationRequest.java index 39c8c0b..0496e0c 100644 --- a/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationRequest.java +++ b/src/main/java/com/scaler/lld/design/assignments/adapter/TranslationRequest.java @@ -1,8 +1,16 @@ package com.scaler.lld.design.assignments.adapter; +import lombok.AllArgsConstructor; +import lombok.Getter; import lombok.NoArgsConstructor; // DO NOT REMOVE THE NO-ARG CONSTRUCTOR ANNOTATION @NoArgsConstructor +@AllArgsConstructor +@Getter public class TranslationRequest { + private String text; + private String sourceLanguage; + private String targetLanguage; + private Double confidenceThreshold; } \ No newline at end of file