Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/main/java/data_access/InMemoryUserDataAccessObject.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,18 @@ public void updateTranslation(User user, Translate updatedTranslation) {
translates.put(updatedTranslation.getInputText(), updatedTranslation);

}

public class InMemoryUserDataAccessObject implements ChangePasswordUserDataAccessInterface {
private User currentUser;

@Override
public boolean updatePassword(String newPassword) {
if (currentUser != null) {
currentUser.setPassword(newPassword);
return true;
}
return false;
}
}

}
2 changes: 1 addition & 1 deletion src/main/java/entity/Translate.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public String getInputText() {
* Translate the given text.
* @return The result of the translation.
*/
public String translateText() {
public static String translateText(String inputText, String inputLanguage, String outputLanguage) {
String output = null;
try {
final String authKey = "563c8dbf-539b-48c2-bc82-fae6a6622677:fx";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@ public void execute(String password, String username) {
userChangePasswordUseCaseInteractor.execute(changePasswordInputData);
}
}

Original file line number Diff line number Diff line change
@@ -1,6 +1,30 @@
package interface_adapter.translate;

public class TranslateController {
import use_case.translator.TranslatorOutputBoundary;
import use_case.translator.TranslatorOutputData;

/**
* The Presenter for the Translation Use Case.
*/
public class TranslatePresenter implements TranslatorOutputBoundary {

private final TranslateViewModel translateViewModel;

public TranslatePresenter(TranslateViewModel translateViewModel) {
this.translateViewModel = translateViewModel;
}

@Override
public void prepareSuccessView(TranslatorOutputData outputData) {
translateViewModel.setTranslatedText(outputData.getOutputText());
translateViewModel.firePropertyChanged("translatedText");
}

@Override
public void prepareFailView(String error) {
// Retrieve the state and update the error
TranslateState translateState = translateViewModel.getState();
translateState.setTranslateError(error);
translateViewModel.firePropertyChanged("translateError");
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,29 @@
package interface_adapter.translate;

public class TranslatePresenter {
import use_case.translator.TranslatorOutputBoundary;
import use_case.translator.TranslatorOutputData;

/**
* The Presenter for the Translation Use Case.
*/
public class TranslatePresenter implements TranslatorOutputBoundary {

private final TranslateViewModel translateViewModel;

public TranslatePresenter(TranslateViewModel translateViewModel) {
this.translateViewModel = translateViewModel;
}

@Override
public void prepareSuccessView(TranslatorOutputData outputData) {
translateViewModel.setTranslatedText(outputData.getTranslatedText());
translateViewModel.firePropertyChanged("translatedText");
}

@Override
public void prepareFailView(String error) {
final TranslateState translateState = translateViewModel.getState();
translateState.setTranslateError(error);
translateViewModel.firePropertyChanged("translateError");
}
}
65 changes: 65 additions & 0 deletions src/main/java/interface_adapter/translate/TranslateState.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,69 @@
package interface_adapter.translate;

import java.util.ArrayList;
import java.util.List;

import entity.Translate;

public class TranslateState {
private String inputText;
private String translatedText;
private String sourceLanguage;
private String targetLanguage;
private final List<String> translationHistory;

public TranslateState() {
this.translationHistory = new ArrayList<>();
}

public void setInputText(String inputText) {
this.inputText = inputText;
}

public String getInputText() {
return inputText;
}

public void setTranslatedText(String translatedText) {
this.translatedText = translatedText;
}

public String getTranslatedText() {
return translatedText;
}

public void setSourceLanguage(String sourceLanguage) {
this.sourceLanguage = sourceLanguage;
}

public String getSourceLanguage() {
return sourceLanguage;
}

public void setTargetLanguage(String targetLanguage) {
this.targetLanguage = targetLanguage;
}

public String getTargetLanguage() {
return targetLanguage;
}

public void addTranslationToHistory(String translation) {
translationHistory.add(translation);
}

public List<String> getTranslationHistory() {
return new ArrayList<>(translationHistory);
}

public boolean performTranslation() {
if (inputText == null || sourceLanguage == null || targetLanguage == null) {
System.out.println("Translation parameters are missing.");
return false;
}

this.translatedText = Translate.translateText(inputText, sourceLanguage, targetLanguage);
addTranslationToHistory(translatedText);
return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,71 @@
package interface_adapter.translate;

public class TranslateViewModel {
import interface_adapter.ViewModel;

/**
* The ViewModel for Translator.
*/
public class TranslateViewModel extends ViewModel<TranslateState> {

public static final String TITLE_LABEL = "Translator";
public static final String LOGOUT_LABEL = "Log out";

public static final String INPUT_LANGUAGE_LABEL = "Choose your input language";
public static final String OUTPUT_LANGUAGE_LABEL = "Choose your output language";

public static final String INPUT_TEXT_LABEL = "Input your text here";
public static final String OUTPUT_TEXT_LABEL = "Your translation will be here";

public static final String TRANSLATE_F_LABEL = "Translate";
public static final String OTHER_TRANSLATION_F_LABEL = "Others";

public static final String HISTORY_LABEL = "History";

public static final String BOOKMARK_F_LABEL = "Bookmark current translation";
public static final String BOOKMARKS_LABEL = "Bookmarks";

public static final String FEEDBACK_F_LABEL = "Submit a feedback";

public TranslateViewModel() {
super("translate");
setState(new TranslateState());
}

/**
* Updates the input text in the state and fires a property change event.
*
* @param inputText the text to be translated
*/
public void updateInputText(String inputText) {
getState().setInputText(inputText);
firePropertyChanged("inputText");
}

/**
* Updates the translated text in the state and fires a property change event.
* @param translatedText translated text
*/
public void updateTranslatedText(String translatedText) {
getState().setTranslatedText(translatedText);
firePropertyChanged("translatedText");
}

/**
* Updates the error message in the state and fires a property change event.
* @param errorMessage error message
*/
public void updateError(String errorMessage) {
getState().setTranslateError(errorMessage);
firePropertyChanged("translateError");
}

/**
* Fires a property change for the specified property.
* @param propertyName fail or success
*/
public void firePropertyChanged(String propertyName) {
// Notify observers or UI components that the property has changed.
// Implementation depends on the ViewModel base class or observer pattern.
System.out.println("Property changed: " + propertyName);
}
}
16 changes: 11 additions & 5 deletions src/main/java/use_case/translator/TranslatorInputData.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@
*/
public class TranslatorInputData {
private final String input;
private String inputLanguage;
private final String inputLanguage;
private final String outputLanguage;

public TranslatorInputData(String input) {
this.input = input;
}
// public TranslatorInputData(String input) {
// this.input = input;
// }

public TranslatorInputData(String input, String inputLanguage) {
public TranslatorInputData(String input, String inputLanguage, String outputLanguage) {
this.input = input;
this.inputLanguage = inputLanguage;
this.outputLanguage = outputLanguage;
}

public String getInput() {
Expand All @@ -23,4 +25,8 @@ public String getInput() {
public String getInputLanguage() {
return inputLanguage;
}

public String getOutputLanguage() {
return outputLanguage;
}
}
49 changes: 48 additions & 1 deletion src/main/java/use_case/translator/TranslatorInteractor.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,51 @@
package use_case.translator;

public class TranslatorInteractor {
import entity.Translate;

/**
* The Translator Interactor.
*/

public class TranslatorInteractor implements TranslatorInputBoundary {
private final Translate translatorService;
private final TranslatorOutputBoundary translatorPresenter;

public TranslatorInteractor(Translate translatorService,
TranslatorOutputBoundary translatorPresenter) {
this.translatorService = translatorService;
this.translatorPresenter = translatorPresenter;
}

/**
* Executes the translation process with the given input data.
*
* @param inputData the input data containing text and language details
*/

public void execute(TranslatorInputData inputData) {
final String inputText = inputData.getInput();
final String inputLanguage = inputData.getInputLanguage();
final String outputLanguage = inputData.getOutputLanguage();

// if (inputText == null || inputText.isBlank()) {
// translatorPresenter.prepareFailView("Input text cannot be empty.");
// return;
//
// if (inputLanguage.equals(outputLanguage)) {
// translatorPresenter.prepareFailView("Input and output languages must be different.");
// return;
// }

try {

final String translatedText = Translate.translateText(inputText, inputLanguage, outputLanguage);

final TranslatorOutputData outputData = new TranslatorOutputData(translatedText);
translatorPresenter.prepareSuccessView(outputData);
}
catch (IllegalArgumentException illegalArgumentException) {
translatorPresenter.prepareFailView("An error occurred during translation: "
+ illegalArgumentException.getMessage());
}
}
}
Loading