#179: default language (api)

This commit is contained in:
Benjamin Gamard 2018-02-22 12:57:33 +01:00
parent 66cd4abd8b
commit 9a9e86829e
8 changed files with 70 additions and 4 deletions

View File

@ -20,6 +20,11 @@ public enum ConfigType {
*/
GUEST_LOGIN,
/**
* Default language.
*/
DEFAULT_LANGUAGE,
/**
* SMTP server configuration.
*/

View File

@ -1 +1 @@
db.version=15
db.version=16

View File

@ -0,0 +1,2 @@
insert into T_CONFIG(CFG_ID_C, CFG_VALUE_C) values('DEFAULT_LANGUAGE', 'eng');
update T_CONFIG set CFG_VALUE_C = '16' where CFG_ID_C = 'DB_VERSION';

View File

@ -1,3 +1,3 @@
api.current_version=${project.version}
api.min_version=1.0
db.version=15
db.version=16

View File

@ -16,6 +16,7 @@ import com.sismics.docs.core.util.DirectoryUtil;
import com.sismics.docs.core.util.jpa.PaginatedList;
import com.sismics.docs.core.util.jpa.PaginatedLists;
import com.sismics.docs.rest.constant.BaseFunction;
import com.sismics.rest.exception.ClientException;
import com.sismics.rest.exception.ForbiddenClientException;
import com.sismics.rest.exception.ServerException;
import com.sismics.rest.util.ValidationUtil;
@ -39,6 +40,7 @@ import javax.ws.rs.core.Response;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.text.MessageFormat;
import java.util.*;
/**
@ -79,6 +81,7 @@ public class AppResource extends BaseResource {
String currentVersion = configBundle.getString("api.current_version");
String minVersion = configBundle.getString("api.min_version");
Boolean guestLogin = ConfigUtil.getConfigBooleanValue(ConfigType.GUEST_LOGIN);
String defaultLanguage = ConfigUtil.getConfigStringValue(ConfigType.DEFAULT_LANGUAGE);
UserDao userDao = new UserDao();
DocumentDao documentDao = new DocumentDao();
String globalQuotaStr = System.getenv(Constants.GLOBAL_QUOTA_ENV);
@ -91,6 +94,7 @@ public class AppResource extends BaseResource {
.add("current_version", currentVersion.replace("-SNAPSHOT", ""))
.add("min_version", minVersion)
.add("guest_login", guestLogin)
.add("default_language", defaultLanguage)
.add("total_memory", Runtime.getRuntime().totalMemory())
.add("free_memory", Runtime.getRuntime().freeMemory())
.add("document_count", documentDao.getDocumentCount())
@ -131,6 +135,38 @@ public class AppResource extends BaseResource {
return Response.ok().build();
}
/**
* General application configuration.
*
* @api {post} /app/config General application configuration
* @apiName PostAppConfig
* @apiGroup App
* @apiParam {String} default_language Default language
* @apiError (client) ForbiddenError Access denied
* @apiPermission admin
* @apiVersion 1.5.0
*
* @param defaultLanguage Default language
* @return Response
*/
@POST
@Path("config")
public Response config(@FormParam("default_language") String defaultLanguage) {
if (!authenticate()) {
throw new ForbiddenClientException();
}
checkBaseFunction(BaseFunction.ADMIN);
ValidationUtil.validateRequired(defaultLanguage, "default_language");
if (!Constants.SUPPORTED_LANGUAGES.contains(defaultLanguage)) {
throw new ClientException("ValidationError", MessageFormat.format("{0} is not a supported language", defaultLanguage));
}
ConfigDao configDao = new ConfigDao();
configDao.update(ConfigType.DEFAULT_LANGUAGE, defaultLanguage);
return Response.ok().build();
}
/**
* Get the SMTP server configuration.
*

View File

@ -1,3 +1,3 @@
api.current_version=${project.version}
api.min_version=1.0
db.version=15
db.version=16

View File

@ -1,3 +1,3 @@
api.current_version=${project.version}
api.min_version=1.0
db.version=15
db.version=16

View File

@ -36,6 +36,7 @@ public class TestAppResource extends BaseJerseyTest {
Long totalMemory = json.getJsonNumber("total_memory").longValue();
Assert.assertTrue(totalMemory > 0 && totalMemory > freeMemory);
Assert.assertFalse(json.getBoolean("guest_login"));
Assert.assertEquals("eng", json.getString("default_language"));
Assert.assertTrue(json.containsKey("global_storage_current"));
Assert.assertTrue(json.getJsonNumber("active_user_count").longValue() > 0);
@ -56,6 +57,28 @@ public class TestAppResource extends BaseJerseyTest {
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
.post(Entity.form(new Form()));
Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus()));
// Change the default language
response = target().path("/app/config").request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
.post(Entity.form(new Form().param("default_language", "fra")));
Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus()));
// Check the application info
json = target().path("/app").request()
.get(JsonObject.class);
Assert.assertEquals("fra", json.getString("default_language"));
// Change the default language
response = target().path("/app/config").request()
.cookie(TokenBasedSecurityFilter.COOKIE_NAME, adminToken)
.post(Entity.form(new Form().param("default_language", "eng")));
Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus()));
// Check the application info
json = target().path("/app").request()
.get(JsonObject.class);
Assert.assertEquals("eng", json.getString("default_language"));
}
/**