Skip to content

Commit 6f73db1

Browse files
committed
Splitting TranslationConfig class (Alex's Idea)
1 parent 067e8f2 commit 6f73db1

File tree

4 files changed

+72
-49
lines changed

4 files changed

+72
-49
lines changed

orchestration/src/main/java/com/sap/ai/sdk/orchestration/OrchestrationModuleConfig.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,8 @@ public OrchestrationModuleConfig withTemplateConfig(
330330
@Tolerate
331331
@Nonnull
332332
public OrchestrationModuleConfig withInputTranslationConfig(
333-
@Nonnull final TranslationConfig translationConfig) {
334-
return this.withInputTranslationConfig(translationConfig.getInputConfig());
333+
@Nonnull final TranslationConfig.Input translationConfig) {
334+
return this.withInputTranslationConfig(translationConfig.createSAPDocumentTranslationInput());
335335
}
336336

337337
/**
@@ -343,7 +343,7 @@ public OrchestrationModuleConfig withInputTranslationConfig(
343343
@Tolerate
344344
@Nonnull
345345
public OrchestrationModuleConfig withOutputTranslationConfig(
346-
@Nonnull final TranslationConfig translationConfig) {
347-
return this.withOutputTranslationConfig(translationConfig.getOutputConfig());
346+
@Nonnull final TranslationConfig.Output translationConfig) {
347+
return this.withOutputTranslationConfig(translationConfig.createSAPDocumentTranslationOutput());
348348
}
349349
}

orchestration/src/main/java/com/sap/ai/sdk/orchestration/TranslationConfig.java

Lines changed: 49 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.sap.ai.sdk.orchestration.model.SAPDocumentTranslationOutputTargetLanguage;
88
import javax.annotation.Nonnull;
99
import lombok.AccessLevel;
10-
import lombok.Getter;
1110
import lombok.RequiredArgsConstructor;
1211
import lombok.Value;
1312
import lombok.With;
@@ -21,14 +20,50 @@
2120
* AI Core: Orchestration - SAP Document Translation</a>
2221
* @since 1.14.0
2322
*/
24-
@Value
25-
@With
26-
@Getter(AccessLevel.PACKAGE)
27-
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
28-
public class TranslationConfig {
29-
SAPDocumentTranslationInput inputConfig;
30-
SAPDocumentTranslationOutput outputConfig;
31-
String sourceLanguage;
23+
public interface TranslationConfig {
24+
/** Input configuration for translation. */
25+
@Value
26+
@With
27+
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
28+
class Input implements TranslationConfig {
29+
@With(AccessLevel.NONE)
30+
String targetLanguage;
31+
32+
String sourceLanguage;
33+
34+
@With(AccessLevel.NONE)
35+
Object ApplyTo; // Can be null
36+
37+
@Nonnull
38+
SAPDocumentTranslationInput createSAPDocumentTranslationInput() {
39+
val translationType = SAPDocumentTranslationInput.TypeEnum.SAP_DOCUMENT_TRANSLATION;
40+
val conf =
41+
SAPDocumentTranslationInputConfig.create().targetLanguage(targetLanguage).applyTo(null);
42+
return SAPDocumentTranslationInput.create().type(translationType).config(conf);
43+
}
44+
}
45+
46+
/** Output configuration for translation. */
47+
@Value
48+
@With
49+
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
50+
class Output implements TranslationConfig {
51+
@With(AccessLevel.NONE)
52+
String targetLanguage;
53+
54+
String sourceLanguage;
55+
56+
@Nonnull
57+
SAPDocumentTranslationOutput createSAPDocumentTranslationOutput() {
58+
val translationType = SAPDocumentTranslationOutput.TypeEnum.SAP_DOCUMENT_TRANSLATION;
59+
val tLang = SAPDocumentTranslationOutputTargetLanguage.create(targetLanguage);
60+
val conf =
61+
SAPDocumentTranslationOutputConfig.create()
62+
.targetLanguage(tLang)
63+
.sourceLanguage(sourceLanguage);
64+
return SAPDocumentTranslationOutput.create().type(translationType).config(conf);
65+
}
66+
}
3267

3368
/**
3469
* Create a new input translation configuration.
@@ -37,16 +72,9 @@ public class TranslationConfig {
3772
* @return A TranslationConfig configured for input translation
3873
*/
3974
@Nonnull
40-
public static TranslationConfig createInput(@Nonnull final String targetLanguage) {
41-
val translationType = SAPDocumentTranslationInput.TypeEnum.SAP_DOCUMENT_TRANSLATION;
42-
val inputConfig =
43-
SAPDocumentTranslationInput.create()
44-
.type(translationType)
45-
.config(
46-
SAPDocumentTranslationInputConfig.create()
47-
.targetLanguage(targetLanguage)
48-
.applyTo(null));
49-
return new TranslationConfig(inputConfig, null, null);
75+
static TranslationConfig.Input createInput(@Nonnull final String targetLanguage) {
76+
77+
return new TranslationConfig.Input(targetLanguage, null, null);
5078
}
5179

5280
/**
@@ -56,26 +84,8 @@ public static TranslationConfig createInput(@Nonnull final String targetLanguage
5684
* @return A TranslationConfig configured for output translation
5785
*/
5886
@Nonnull
59-
public static TranslationConfig createOutput(@Nonnull final String targetLanguage) {
60-
val translationType = SAPDocumentTranslationOutput.TypeEnum.SAP_DOCUMENT_TRANSLATION;
61-
val outputConfig =
62-
SAPDocumentTranslationOutput.create()
63-
.type(translationType)
64-
.config(
65-
SAPDocumentTranslationOutputConfig.create()
66-
.targetLanguage(
67-
SAPDocumentTranslationOutputTargetLanguage.create(targetLanguage)));
68-
return new TranslationConfig(null, outputConfig, null);
69-
}
87+
static TranslationConfig.Output createOutput(@Nonnull final String targetLanguage) {
7088

71-
/**
72-
* Set the source language for translation
73-
*
74-
* @param language The source language code
75-
* @return A new TranslationConfig with the specified source language
76-
*/
77-
@Nonnull
78-
public TranslationConfig sourceLanguage(@Nonnull final String language) {
79-
return this.withSourceLanguage(language);
89+
return new TranslationConfig.Output(targetLanguage, null);
8090
}
8191
}

orchestration/src/test/java/com/sap/ai/sdk/orchestration/OrchestrationModuleConfigTest.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,9 @@ void testDpiMaskingRegex() {
140140

141141
@Test
142142
void testTranslationConfig() {
143-
var inputTranslationConfig = TranslationConfig.createInput("en-US").sourceLanguage("de-DE");
144-
var outputTranslationConfig = TranslationConfig.createOutput("de-DE").sourceLanguage("en-US");
143+
var inputTranslationConfig = TranslationConfig.createInput("en-US").withSourceLanguage("de-DE");
144+
var outputTranslationConfig =
145+
TranslationConfig.createOutput("de-DE").withSourceLanguage("en-US");
145146
var config =
146147
new OrchestrationModuleConfig()
147148
.withLlmConfig(GPT_4O)
@@ -152,13 +153,25 @@ void testTranslationConfig() {
152153
assertThat(config.getInputTranslationConfig().getConfig().getTargetLanguage())
153154
.isEqualTo("en-US");
154155
assertThat(config.getInputTranslationConfig().getConfig().getSourceLanguage())
155-
.isEqualTo(inputTranslationConfig.getInputConfig().getConfig().getSourceLanguage());
156+
.isEqualTo(
157+
inputTranslationConfig
158+
.createSAPDocumentTranslationInput()
159+
.getConfig()
160+
.getSourceLanguage());
156161

157162
assertThat(config.getOutputTranslationConfig()).isNotNull();
158163
assertThat(config.getOutputTranslationConfig().getConfig().getTargetLanguage())
159-
.isEqualTo(outputTranslationConfig.getOutputConfig().getConfig().getTargetLanguage());
164+
.isEqualTo(
165+
outputTranslationConfig
166+
.createSAPDocumentTranslationOutput()
167+
.getConfig()
168+
.getTargetLanguage());
160169
assertThat(config.getOutputTranslationConfig().getConfig().getSourceLanguage())
161-
.isEqualTo(outputTranslationConfig.getOutputConfig().getConfig().getSourceLanguage());
170+
.isEqualTo(
171+
outputTranslationConfig
172+
.createSAPDocumentTranslationOutput()
173+
.getConfig()
174+
.getSourceLanguage());
162175
}
163176

164177
@Test

sample-code/spring-app/src/main/java/com/sap/ai/sdk/app/services/OrchestrationService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ public OrchestrationChatResponse translation() {
619619
.withInputTranslationConfig(TranslationConfig.createInput("en-US"))
620620
.withOutputTranslationConfig(
621621
TranslationConfig.createOutput("de-DE")
622-
.sourceLanguage("en-US")); // optional source language
622+
.withSourceLanguage("en-US")); // optional source language
623623

624624
return client.chatCompletion(prompt, configWithTranslation);
625625
}

0 commit comments

Comments
 (0)