Migrate language commands to Jackson
This commit is contained in:
parent
e0caf3f723
commit
377b051bac
@ -45,9 +45,9 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.apache.commons.io.filefilter.WildcardFileFilter;
|
import org.apache.commons.io.filefilter.WildcardFileFilter;
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import com.google.refine.commands.Command;
|
import com.google.refine.commands.Command;
|
||||||
|
|
||||||
import edu.mit.simile.butterfly.ButterflyModule;
|
import edu.mit.simile.butterfly.ButterflyModule;
|
||||||
@ -76,9 +76,9 @@ public class GetLanguagesCommand extends Command {
|
|||||||
for (File file : new File(module.getPath() + File.separator + "langs").listFiles(fileFilter)) {
|
for (File file : new File(module.getPath() + File.separator + "langs").listFiles(fileFilter)) {
|
||||||
String lang = file.getName().split("-")[1].split("\\.")[0];
|
String lang = file.getName().split("-")[1].split("\\.")[0];
|
||||||
if (!"en".equals(lang) && !"default".equals(lang)) {
|
if (!"en".equals(lang) && !"default".equals(lang)) {
|
||||||
JSONObject json = LoadLanguageCommand.loadLanguage(servlet, "core", lang);
|
ObjectNode json = LoadLanguageCommand.loadLanguage(servlet, "core", lang);
|
||||||
if (json != null && json.has("name")) {
|
if (json != null && json.has("name")) {
|
||||||
String label = json.getString("name");
|
String label = json.get("name").asText(lang);
|
||||||
languages.add(new LanguageRecord(lang, label));
|
languages.add(new LanguageRecord(lang, label));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,14 +15,13 @@ import javax.servlet.ServletException;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import org.json.JSONObject;
|
import com.fasterxml.jackson.databind.node.TextNode;
|
||||||
import org.json.JSONTokener;
|
|
||||||
|
|
||||||
import com.google.refine.ProjectManager;
|
import com.google.refine.ProjectManager;
|
||||||
import com.google.refine.RefineServlet;
|
import com.google.refine.RefineServlet;
|
||||||
import com.google.refine.commands.Command;
|
import com.google.refine.commands.Command;
|
||||||
import com.google.refine.preference.PreferenceStore;
|
import com.google.refine.preference.PreferenceStore;
|
||||||
|
import com.google.refine.util.ParsingUtilities;
|
||||||
|
|
||||||
import edu.mit.simile.butterfly.ButterflyModule;
|
import edu.mit.simile.butterfly.ButterflyModule;
|
||||||
|
|
||||||
@ -60,7 +59,7 @@ public class LoadLanguageCommand extends Command {
|
|||||||
langs = Arrays.copyOf(langs, langs.length+1);
|
langs = Arrays.copyOf(langs, langs.length+1);
|
||||||
langs[langs.length-1] = "en";
|
langs[langs.length-1] = "en";
|
||||||
|
|
||||||
JSONObject json = null;
|
ObjectNode json = null;
|
||||||
boolean loaded = false;
|
boolean loaded = false;
|
||||||
for (String lang : langs) {
|
for (String lang : langs) {
|
||||||
if (lang == null) continue;
|
if (lang == null) continue;
|
||||||
@ -69,11 +68,11 @@ public class LoadLanguageCommand extends Command {
|
|||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding("UTF-8");
|
||||||
response.setContentType("application/json");
|
response.setContentType("application/json");
|
||||||
try {
|
try {
|
||||||
JSONObject fullJson = new JSONObject();
|
ObjectNode node = ParsingUtilities.mapper.createObjectNode();
|
||||||
fullJson.put("dictionary", json);
|
node.put("dictionary", json);
|
||||||
fullJson.put("lang", lang);
|
node.put("lang", new TextNode(lang));
|
||||||
fullJson.write(response.getWriter());
|
ParsingUtilities.mapper.writeValue(response.getWriter(), node);
|
||||||
} catch (JSONException e) {
|
} catch (IOException e) {
|
||||||
logger.error("Error writing language labels to response stream");
|
logger.error("Error writing language labels to response stream");
|
||||||
}
|
}
|
||||||
response.getWriter().flush();
|
response.getWriter().flush();
|
||||||
@ -87,19 +86,18 @@ public class LoadLanguageCommand extends Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static JSONObject loadLanguage(RefineServlet servlet, String modname, String lang) throws UnsupportedEncodingException {
|
static ObjectNode loadLanguage(RefineServlet servlet, String modname, String lang) throws UnsupportedEncodingException {
|
||||||
|
|
||||||
ButterflyModule module = servlet.getModule(modname);
|
ButterflyModule module = servlet.getModule(modname);
|
||||||
JSONObject json = null;
|
|
||||||
File langFile = new File(module.getPath(), "langs" + File.separator + "translation-" + lang + ".json");
|
File langFile = new File(module.getPath(), "langs" + File.separator + "translation-" + lang + ".json");
|
||||||
try {
|
try {
|
||||||
Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream(langFile), "UTF-8"));
|
Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream(langFile), "UTF-8"));
|
||||||
json = new JSONObject(new JSONTokener(reader));
|
return ParsingUtilities.mapper.readValue(reader, ObjectNode.class);
|
||||||
} catch (FileNotFoundException e1) {
|
} catch (FileNotFoundException e1) {
|
||||||
// Could be normal if we've got a list of languages as fallbacks
|
// Could be normal if we've got a list of languages as fallbacks
|
||||||
} catch (JSONException e) {
|
} catch (IOException e) {
|
||||||
logger.error("JSON error reading/writing language file: " + langFile, e);
|
logger.error("JSON error reading/writing language file: " + langFile, e);
|
||||||
}
|
}
|
||||||
return json;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user