Skip to content

Commit dc1c31d

Browse files
committed
Updated AnswerImporter and fixed bug in ConfigDefaults
1 parent c81c8a5 commit dc1c31d

File tree

5 files changed

+60
-8
lines changed

5 files changed

+60
-8
lines changed

src/main/java/net/b07z/sepia/server/core/data/Language.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ public enum Language {
3030
TR("Turkish", null, "tur"),
3131
ZH("Chinese", null, "cmn");
3232

33+
/**
34+
* Get enum value from language code string (or throw error).
35+
* @param languageCode - e.g. "en" or "DE" (case independent)
36+
*/
3337
public static Language from(String languageCode) {
3438
return Language.valueOf(languageCode.toUpperCase());
3539
}

src/main/java/net/b07z/sepia/server/core/database/AnswerImporter.java

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,62 @@
88
import net.b07z.sepia.server.core.data.Answer;
99
import net.b07z.sepia.server.core.data.Language;
1010
import net.b07z.sepia.server.core.database.DatabaseInterface;
11+
import net.b07z.sepia.server.core.tools.Debugger;
12+
import net.b07z.sepia.server.core.tools.FilesAndStreams;
1113

1214
/**
13-
* Import answers stored in a file to Elasticsearch.
15+
* Import answers stored in a file to database (usually Elasticsearch).
1416
*/
1517
public class AnswerImporter {
18+
19+
//Database
20+
DatabaseInterface database;
21+
22+
/**
23+
* Construct importer by linking database implementation.
24+
* @param database - {@link DatabaseInterface}
25+
*/
26+
public AnswerImporter(DatabaseInterface database){
27+
this.database = database;
28+
}
1629

17-
public static void run(File file, Language language, DatabaseInterface es, boolean isMachineTranslated) throws IOException {
30+
/**
31+
* Run importer for one file. Imports answer for the default system user (usually assistant userId).
32+
* @param file - file containing answers for one language
33+
* @param language - language of the file
34+
* @param isMachineTranslated - when you are using files that have been translated by a machine
35+
* @throws IOException
36+
*/
37+
public void run(File file, Language language, boolean isMachineTranslated) throws IOException {
1838
List<String> lines = Files.readAllLines(file.toPath());
39+
int n = 0;
1940
for (String line : lines) {
2041
Answer answer = Answer.importAnswerString(line, language, isMachineTranslated);
21-
System.out.println(answer);
22-
es.setAnyItemData(Answer.ANSWERS_INDEX, Answer.ANSWERS_TYPE, answer.toJson());
42+
//System.out.println(answer);
43+
database.setAnyItemData(Answer.ANSWERS_INDEX, Answer.ANSWERS_TYPE, answer.toJson());
2344
//System.out.println(answer.toJsonString());
45+
n++;
46+
}
47+
Debugger.println("Imported answers: " + n, 3);
48+
}
49+
50+
/**
51+
* Import all files in a folder that follow the format "answers_xy" for the default user (usually assistant userId).
52+
* where "xy" is a valid language code (e.g. "en" or "de").
53+
* @param pathToFolder - folder with answers
54+
* @param isMachineTranslated - are these answers translated by a machine?
55+
* @throws IOException
56+
*/
57+
public void loadFolder(String pathToFolder, boolean isMachineTranslated) throws IOException{
58+
List<File> files = FilesAndStreams.directoryToFileList(pathToFolder, null, false);
59+
for (File f : files){
60+
String fileName = f.getName();
61+
if (fileName.matches("answers_\\w\\w(\\..*|$)")){
62+
String languageCode = fileName.replaceFirst("answers_(\\w\\w).*", "$1");
63+
Language lang = Language.from(languageCode); //makes sure that the value is valid
64+
Debugger.println("Importing answers from file '" + fileName + "' for language: " + lang.toValue(), 3);
65+
run(f, lang, isMachineTranslated);
66+
}
2467
}
2568
}
2669

src/main/java/net/b07z/sepia/server/core/server/ConfigDefaults.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@ public static JSONObject getAssistantClusterData(){
9393
Debugger.println("Could not reach AssistAPI at " + defaultAssistAPI, 1);
9494
return null;
9595
}
96+
String resultState = JSON.getString(res, "result");
97+
if (resultState == null || !resultState.equals("success")){
98+
Debugger.println("AssistAPI answered with error: " + JSON.getString(res, "error"), 1);
99+
return null;
100+
}
96101
return res;
97102
}
98103
}

src/main/java/net/b07z/sepia/server/core/server/SparkJavaFw.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public static void handleError(){
5959
JSON.add(result, "result", "fail");
6060
JSON.add(result, "error", "500 internal error");
6161
JSON.add(result, "info", ex.getMessage());
62-
response.body(returnResult(request, response, result.toJSONString(), 200)); //code 500 always creates client timeout :/
62+
response.body(returnResult(request, response, result.toJSONString(), 200)); //code 500 always creates client timeout :/ TODO: check again
6363
});
6464
}
6565

@@ -131,7 +131,7 @@ public static String returnNoAccess(Request request, Response response){
131131
return "401 Unauthorized";
132132
*/
133133
String msg = "{\"result\":\"fail\",\"error\":\"401 not authorized\"}";
134-
return returnResult(request, response, msg, 200);
134+
return returnResult(request, response, msg, 200); //TODO: we should change this code to 401 as well
135135
}
136136

137137
/**
@@ -142,7 +142,7 @@ public static String returnNoAccess(Request request, Response response, int erro
142142
return returnNoAccess(request, response);
143143
}else{
144144
String msg = "{\"result\":\"fail\",\"error\":\"400 or 500 bad request or communication error\",\"code\":\"" + errorCode + "\"}";
145-
return returnResult(request, response, msg, 200);
145+
return returnResult(request, response, msg, 200); //TODO: we should change this code to 400/500 as well
146146
}
147147
}
148148

src/main/java/net/b07z/sepia/server/core/tools/FilesAndStreams.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public static String getStringFromStream(InputStream stream) {
4444
/**
4545
* Get an ArrayList of "File"s from a directory path.
4646
* @param directoryName - path to directory
47-
* @param files - ArrayList of files to populate
47+
* @param files - ArrayList of files to populate (or null -> creates ArrayList)
4848
* @param doSubfolders - include sub-folders?
4949
* @return list or null
5050
*/

0 commit comments

Comments
 (0)