diff options
author | shentao999 <shentao@chinamobile.com> | 2019-04-02 10:18:24 +0800 |
---|---|---|
committer | shentao999 <shentao@chinamobile.com> | 2019-04-02 10:18:25 +0800 |
commit | 7c291e0d10e63f403f016ede7d8e4ee47dcbf8a9 (patch) | |
tree | 824a1d19890dd6cd9fa2aac6fe5d7ea7d9e73090 | |
parent | 498b428a661aabf16f288bc8c3dffded35becef6 (diff) |
Add multi-language APIs into BE-common
Change-Id: Ia9fddbe81bb2eb8d3e0786fcc81f0469ed45bfa0
Issue-ID: PORTAL-376
Signed-off-by: shentao999 <shentao@chinamobile.com>
10 files changed, 302 insertions, 3 deletions
diff --git a/ecomp-portal-BE-common/pom.xml b/ecomp-portal-BE-common/pom.xml index 6cb1279a..b8787f78 100644 --- a/ecomp-portal-BE-common/pom.xml +++ b/ecomp-portal-BE-common/pom.xml @@ -720,6 +720,17 @@ </dependency> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>1.18.4</version> + </dependency> + + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>fastjson</artifactId> + <version>1.2.7</version> + </dependency> </dependencies> </project> diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/AppsController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/AppsController.java index 289c8279..b5bd02bc 100644 --- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/AppsController.java +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/AppsController.java @@ -233,7 +233,7 @@ public class AppsController extends EPRestrictedBaseController { * @return JSON with left menu */ @SuppressWarnings({ "rawtypes", "unchecked" }) - @RequestMapping(value = { "/portalApi/leftmenuItems" }, method = RequestMethod.GET, produces = "application/json") + @RequestMapping(value = { "/portalApi/leftmenuItems" }, method = RequestMethod.GET, produces = "application/json;charset=UTF-8") public String getLeftMenuItems(HttpServletRequest request, HttpServletResponse response) { String menuList = null; Set menuSet = (Set) AppUtils.getSession(request) diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/LanguageController.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/LanguageController.java new file mode 100644 index 00000000..f3a79285 --- /dev/null +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/controller/LanguageController.java @@ -0,0 +1,53 @@ +/** + * Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.portalapp.portal.controller; + +import com.alibaba.fastjson.JSONObject; +import org.onap.portalapp.portal.domain.Language; +import org.onap.portalapp.portal.service.LanguageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@RestController +@RequestMapping("/auxapi") +public class LanguageController { + + @Autowired + private LanguageService languageService; + + @RequestMapping(value = "/language",method = RequestMethod.GET) + public JSONObject getLanguageList() { + return languageService.getLanguages(); + } + + @RequestMapping(value = "/languageSetting/user/{loginId}",method = RequestMethod.POST) + public void setUpUserLanguage(@RequestBody JSONObject jsonLanguageId, + @PathVariable("loginId") String loginId) throws Exception { + Integer languageId = jsonLanguageId.getInteger("languageId"); + languageService.setUpUserLanguage(languageId,loginId); + } + + @RequestMapping(value = "/languageSetting/user/{loginId}",method = RequestMethod.GET) + public JSONObject getUserLanguage(HttpServletRequest request, HttpServletResponse response, + @PathVariable("loginId") String loginId) { + return languageService.getUserLanguage(loginId); + } + +} diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/DisplayText.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/DisplayText.java new file mode 100644 index 00000000..d375c020 --- /dev/null +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/DisplayText.java @@ -0,0 +1,27 @@ +/** + * Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.portalapp.portal.domain; + +import lombok.Data; + +@Data +public class DisplayText { + + private Integer id; + private Integer languageId; + private Long textId; + private String label; +} diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/EPUser.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/EPUser.java index d7cce0ec..ce7495f7 100644 --- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/EPUser.java +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/EPUser.java @@ -98,7 +98,7 @@ public class EPUser extends User { private Long timeZoneId; private boolean online; private String chatId; - + private Integer languageId; private static final long serialVersionUID = 1L; private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPUser.class); @@ -491,8 +491,16 @@ public class EPUser extends User { public void setChatId(String chatId) { this.chatId = chatId; } - + + public Integer getLanguageId() { + return languageId; + } + + public void setLanguageId(Integer languageId) { + this.languageId = languageId; + } + public void setPseudoEPRoles(SortedSet<EPRole> pseudoRoles) { this.pseudoRoles = pseudoRoles; } diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/Language.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/Language.java new file mode 100644 index 00000000..f26488b7 --- /dev/null +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/domain/Language.java @@ -0,0 +1,26 @@ +/** + * Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.portalapp.portal.domain; + +import lombok.Data; + +@Data +public class Language { + + private String languageId; + private String languageName; + private String languageAlias; +} diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPLeftMenuServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPLeftMenuServiceImpl.java index 97c2b74c..96db8e32 100644 --- a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPLeftMenuServiceImpl.java +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/EPLeftMenuServiceImpl.java @@ -41,6 +41,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -51,6 +52,7 @@ import java.util.TreeSet; import org.json.JSONArray; import org.json.JSONObject; import org.onap.portalapp.portal.domain.CentralizedApp; +import org.onap.portalapp.portal.domain.DisplayText; import org.onap.portalapp.portal.domain.EPUser; import org.onap.portalapp.portal.logging.aop.EPMetricsLog; import org.onap.portalsdk.core.domain.MenuData; @@ -117,6 +119,30 @@ public class EPLeftMenuServiceImpl implements EPLeftMenuService { } } + //mulitilanguage impl + String loginId = user.getLoginId(); + HashMap loginParams = new HashMap(); + loginParams.put("login_id",loginId); + List<EPUser> epUsers = dataAccessService.executeNamedQuery("getEPUserByLoginId", loginParams, new HashMap()); + Integer languageId = 1; + for (EPUser epUser : epUsers) { + languageId = epUser.getLanguageId(); + } + Iterator<MenuData> iterator = fullMenuSet.iterator(); + HashMap params = new HashMap(); + params.put("language_id",languageId); + List<DisplayText> displayTexts = dataAccessService.executeNamedQuery("displayText",params,new HashMap()); + while (iterator.hasNext()) { + MenuData menuData = iterator.next(); + for (int index = 0;index<displayTexts.size();index++) { + DisplayText displayText = displayTexts.get(index); + if (menuData.getId()==displayText.getTextId()) { + menuData.setLabel(displayText.getLabel()); + break; + } + } + } + SortedSet<MenuData> sortMenuSet = new TreeSet<MenuData>(new SortOrderComparator()); for (MenuData mn : fullMenuSet) { sortMenuSet.add(mn); diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/LanguageService.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/LanguageService.java new file mode 100644 index 00000000..570d1e92 --- /dev/null +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/LanguageService.java @@ -0,0 +1,30 @@ +/** + * Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.portalapp.portal.service; + +import com.alibaba.fastjson.JSONObject; +import org.onap.portalapp.portal.domain.Language; + +import java.util.List; + +public interface LanguageService { + + JSONObject getLanguages(); + + String setUpUserLanguage(Integer languageId,String loginId) throws Exception; + + JSONObject getUserLanguage(String loginId); +} diff --git a/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/LanguageServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/LanguageServiceImpl.java new file mode 100644 index 00000000..b0d8c424 --- /dev/null +++ b/ecomp-portal-BE-common/src/main/java/org/onap/portalapp/portal/service/LanguageServiceImpl.java @@ -0,0 +1,75 @@ +/** + * Copyright (C) 2019 CMCC, Inc. and others. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onap.portalapp.portal.service; + +import com.alibaba.fastjson.JSONObject; +import org.onap.portalapp.portal.domain.EPUser; +import org.onap.portalapp.portal.domain.Language; +import org.onap.portalsdk.core.service.DataAccessService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class LanguageServiceImpl implements LanguageService { + + @Autowired + private DataAccessService dataAccessService; + + @Override + public JSONObject getLanguages() { + List<Language> languages = (List<Language>) dataAccessService.executeNamedQuery("queryLanguage",null,new HashMap()); + JSONObject result = new JSONObject(); + result.put("languageList",languages); + return result; + } + + @Override + public String setUpUserLanguage(Integer languageId, String loginId) throws Exception{ + Map<String,Object> params = new HashMap<>(); + params.put("login_id",loginId); + params.put("language_id",languageId); + dataAccessService.executeNamedQuery("updateFnUser",params,new HashMap()); + return "success"; + } + + @Override + public JSONObject getUserLanguage(String loginId) { + // get language_id from fn_user by loginId + JSONObject result = new com.alibaba.fastjson.JSONObject(); + HashMap params = new HashMap(); + params.put("login_id",loginId); + + List<EPUser> list = null; + list = dataAccessService.executeNamedQuery("getEPUserByLoginId",params,new HashMap()); + for (EPUser user : list) { + int languageId = user.getLanguageId(); + HashMap<String,String> params1 = new HashMap(); + params1.put("language_id", String.valueOf(languageId)); + List<Language> languages = dataAccessService.executeNamedQuery("queryLanguageByLanguageId",params1,new HashMap()); + for (Language language : languages) { + result.put("languageId",languageId); + result.put("languageName",language.getLanguageName()); + result.put("languageAlias",language.getLanguageAlias()); + } + return result; + } + return null; + } +} diff --git a/ecomp-portal-BE-common/src/main/webapp/WEB-INF/fusion/orm/EP.hbm.xml b/ecomp-portal-BE-common/src/main/webapp/WEB-INF/fusion/orm/EP.hbm.xml index 50264215..4e8943ce 100644 --- a/ecomp-portal-BE-common/src/main/webapp/WEB-INF/fusion/orm/EP.hbm.xml +++ b/ecomp-portal-BE-common/src/main/webapp/WEB-INF/fusion/orm/EP.hbm.xml @@ -43,6 +43,29 @@ <!-- Publishes mappings and queries specific to the ONAP Portal application. --> <hibernate-mapping package="org.onap.portalapp.portal.domain"> + <!-- multilanguage --> + <class name="Language" table="fn_language"> + <id name="languageId" column="language_id"> + <generator class="native"> + <param name="sequence"></param> + </generator> + </id> + <property name="languageName" column="language_name" /> + <property name="languageAlias" column="language_alias" /> + </class> + + <class name="DisplayText" table="fn_display_text"> + <id name="id" column="id"> + <generator class="native"> + <param name="sequence"></param> + </generator> + </id> + + <property name="languageId" column="language_id" /> + <property name="textId" column="text_id" /> + <property name="label" column="text_label" /> + </class> + <!-- Widget class mapping details --> <class name="Widget" table="FN_WIDGET"> <id name="id" column="WIDGET_ID"> @@ -206,6 +229,7 @@ <property name="createdId" column="created_id" /> <property name="modifiedId" column="modified_id" /> <property name="timeZoneId" column="timezone" /> + <property name="languageId" column="language_id" /> <set name="EPUserApps" table="FN_USER_ROLE" lazy="false" sort="natural" inverse="true"> @@ -528,6 +552,25 @@ </many-to-one> </class> + <!-- multilanguage --> + <query name="queryLanguage"> + <![CDATA[ + from Language + ]]> + </query> + + <query name="displayText"> + <![CDATA[ + from DisplayText where languageId = :language_id + ]]> + </query> + + <query name="queryLanguageByLanguageId"> + <![CDATA[ + from Language where languageId = :language_id + ]]> + </query> + <!-- show the current user plus related users --> <sql-query name="relatedUsers"> <return-scalar column="org_user_id" type="java.lang.String" /> |