+++ /dev/null
-/*-
- * ================================================================================
- * eCOMP Portal
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * 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.openecomp.portalapp.portal.service;
-
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Base64;
-/*-
- * ================================================================================
- * eCOMP Portal
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * 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.
- * ================================================================================
- */
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
-
-import javax.annotation.PostConstruct;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang.StringUtils;
-import org.hibernate.Query;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.Transaction;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.EnableAspectJAutoProxy;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.openecomp.portalsdk.core.onboarding.crossapi.PortalApiConstants;
-import org.openecomp.portalsdk.core.onboarding.crossapi.PortalApiProperties;
-import org.openecomp.portalsdk.core.onboarding.ueb.Helper;
-import org.openecomp.portalsdk.core.onboarding.ueb.TopicManager;
-import org.openecomp.portalsdk.core.service.DataAccessService;
-import org.openecomp.portalsdk.core.util.CipherUtil;
-import org.openecomp.portalsdk.core.util.SystemProperties;
-import org.openecomp.portalapp.portal.domain.AdminUserApp;
-import org.openecomp.portalapp.portal.domain.AdminUserApplications;
-import org.openecomp.portalapp.portal.domain.AppIdAndNameTransportModel;
-import org.openecomp.portalapp.portal.domain.AppsResponse;
-import org.openecomp.portalapp.portal.domain.EPApp;
-import org.openecomp.portalapp.portal.domain.EPUser;
-import org.openecomp.portalapp.portal.domain.EcompApp;
-import org.openecomp.portalapp.portal.domain.UserRole;
-import org.openecomp.portalapp.portal.domain.UserRoles;
-import org.openecomp.portalapp.portal.logging.aop.EPMetricsLog;
-import org.openecomp.portalapp.portal.logging.format.EPAppMessagesEnum;
-import org.openecomp.portalapp.portal.logging.logic.EPLogUtil;
-import org.openecomp.portalapp.portal.transport.FieldsValidator;
-import org.openecomp.portalapp.portal.transport.FunctionalMenuItem;
-import org.openecomp.portalapp.portal.transport.LocalRole;
-import org.openecomp.portalapp.portal.transport.OnboardingApp;
-import org.openecomp.portalapp.portal.ueb.EPUebHelper;
-import org.openecomp.portalapp.portal.utils.EPSystemProperties;
-import org.openecomp.portalapp.portal.utils.EcompPortalUtils;
-import org.openecomp.portalapp.portal.ecomp.model.AppCatalogItem;
-import com.att.nsa.apiClient.http.HttpException;
-import com.att.nsa.cambria.client.CambriaClient.CambriaApiException;
-import com.att.nsa.cambria.client.CambriaClientBuilders;
-import com.att.nsa.cambria.client.CambriaIdentityManager;
-
-@Service("epAppService")
-@Transactional
-@org.springframework.context.annotation.Configuration
-@EnableAspectJAutoProxy
-@EPMetricsLog
-public class EPAppServiceImpl implements EPAppService {
-
- private String ECOMP_APP_ID = "1";
- private String SUPER_ADMIN_ROLE_ID = "1";
- private String ACCOUNT_ADMIN_ROLE_ID = "999";
- private String RESTRICTED_APP_ROLE_ID = "900";
-
- private static final String PATH_SEPARATOR = "/";
- private static final String webappsBaseFullPath = System.getProperty("catalina.base") + PATH_SEPARATOR
- + "wtpwebapps";
- private static final String imageCacheRelativePath = "images" + PATH_SEPARATOR + "cache";
- private String ecompportalPath = null;
- private static final Long DUBLICATED_FIELD_VALUE_ECOMP_ERROR = new Long(
- EPSystemProperties.DUBLICATED_FIELD_VALUE_ECOMP_ERROR);
-
- private static final String urlField = "url";
-
- private static final String nameField = "name";
-
- EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EPAppServiceImpl.class);
-
- @Autowired
- AdminRolesService adminRolesService;
- @Autowired
- private SessionFactory sessionFactory;
- @Autowired
- private DataAccessService dataAccessService;
- @Autowired
- EPUebHelper epUebHelper;
-
- private String constructImagesCachePath() {
- String filePath = System.getProperty("catalina.base");
- File eclipseWebAppDir = new File(webappsBaseFullPath);
-
- if (eclipseWebAppDir.exists()) {
- // Eclipse webapps
- filePath += PATH_SEPARATOR + "wtpwebapps";
- } else {
- filePath += PATH_SEPARATOR + "webapps";
- }
- filePath += PATH_SEPARATOR + SystemProperties.getProperty(EPSystemProperties.ECOMP_CONTEXT_ROOT);;
-
- return filePath.toString();
- // return SystemProperties.getProperty(SystemProperties.TEMP_PATH);
- }
-
- @PostConstruct
- private void init() {
- ecompportalPath = constructImagesCachePath();
- writeAppsImagesToDiskCacheIfNecessary();
-
- SUPER_ADMIN_ROLE_ID = SystemProperties.getProperty(EPSystemProperties.SYS_ADMIN_ROLE_ID);
- ACCOUNT_ADMIN_ROLE_ID = SystemProperties.getProperty(EPSystemProperties.ACCOUNT_ADMIN_ROLE_ID);
- ECOMP_APP_ID = SystemProperties.getProperty(EPSystemProperties.ECOMP_APP_ID);
- RESTRICTED_APP_ROLE_ID = SystemProperties.getProperty(EPSystemProperties.RESTRICTED_APP_ROLE_ID);
- }
-
- @Override
- public List<EPApp> getUserAsAdminApps(EPUser user) {
- if (adminRolesService.isAccountAdmin(user)) {
- String sql = "SELECT * FROM FN_APP join FN_USER_ROLE ON FN_USER_ROLE.APP_ID=FN_APP.APP_ID where "
- + "FN_USER_ROLE.USER_ID=" + user.getId() + " AND FN_USER_ROLE.ROLE_ID=" + ACCOUNT_ADMIN_ROLE_ID
- + " AND FN_APP.ENABLED = 'Y'";
- logQuery(sql);
- try {
- @SuppressWarnings("unchecked")
- List<EPApp> adminApps = dataAccessService.executeSQLQuery(sql, EPApp.class, null);
- return adminApps;
- } catch (Exception e) {
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- return null;
- }
- } else {
- logger.error(EELFLoggerDelegate.errorLogger,
- "getUserAsAdminApps: only Account Admin may invoke this function!");
- return new ArrayList<EPApp>();
- }
- }
-
- @Override
- public List<EPApp> getUserByOrgUserIdAsAdminApps(String orgUserId) {
- String format = "SELECT * FROM FN_APP app INNER JOIN FN_USER_ROLE userrole ON userrole.APP_ID=app.APP_ID "
- + "INNER JOIN FN_USER user on user.USER_ID = userrole.USER_ID "
- + "WHERE user.ORG_USER_ID = '%s' AND userrole.ROLE_ID=" + ACCOUNT_ADMIN_ROLE_ID + " AND FN_APP.ENABLED = 'Y'";
-
- String sql = String.format(format, orgUserId);
- logQuery(sql);
-
- try {
- @SuppressWarnings("unchecked")
- List<EPApp> adminApps = dataAccessService.executeSQLQuery(sql, EPApp.class, null);
- return adminApps;
- } catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, EcompPortalUtils.getStackTrace(e));
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- return null;
- }
- }
-
- @Override
- public List<EPApp> getAppsFullList() {
- @SuppressWarnings("unchecked")
- List<EPApp> apps = dataAccessService.getList(EPApp.class, null);
- // Write the image to disk in case if it is missing
- for (EPApp app : apps)
- writeAppImageToDiskCacheIfNecessary(app);
- return apps;
- }
-
- @Override
- public List<EcompApp> getEcompAppAppsFullList() {
- return transformAppsToEcompApps(getAppsFullList());
- }
-
- @Override
- public List<EcompApp> transformAppsToEcompApps(List<EPApp> appsList) {
- List<EcompApp> ecompAppList = new ArrayList<EcompApp>();
- for (EPApp app : appsList) {
- EcompApp ecompApp = new EcompApp();
- ecompApp.setId(app.getId());
- ecompApp.setName(app.getName());
- ecompApp.setImageUrl(app.getImageUrl());
- ecompApp.setDescription(app.getDescription());
- ecompApp.setNotes(app.getNotes());
- ecompApp.setUrl(app.getUrl());
- ecompApp.setAlternateUrl(app.getAlternateUrl());
- ecompApp.setUebTopicName(app.getUebTopicName());
- ecompApp.setUebKey(app.getUebKey());
- ecompApp.setUebSecret(app.getUebSecret());
- ecompApp.setEnabled(app.getEnabled());
- ecompApp.setRestrictedApp(app.isRestrictedApp());
- ecompAppList.add(ecompApp);
- }
- return ecompAppList;
- }
-
- @Override
- public EPApp getApp(Long appId) {
- try {
- @SuppressWarnings("unchecked")
- List<EPApp> apps = dataAccessService.getList(EPApp.class, " where id = " + appId, null, null);
- return (apps.size() > 0) ? apps.get(0) : null;
- } catch (Exception e) {
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- return null;
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public List<AppIdAndNameTransportModel> getAdminApps(EPUser user) {
- if (adminRolesService.isAccountAdmin(user)) {
- String format = "SELECT app.APP_ID, app.APP_NAME, app.APP_TYPE FROM FN_APP app inner join FN_USER_ROLE userrole ON userrole.APP_ID=app.APP_ID "
- + "where userrole.USER_ID = %d AND userrole.ROLE_ID=" + ACCOUNT_ADMIN_ROLE_ID
- + " AND app.ENABLED = 'Y'";
- String sql = String.format(format, user.getId());
- // sql += " AND app.APP_REST_ENDPOINT IS NOT NULL AND
- // app.APP_REST_ENDPOINT <> ''";
- logQuery(sql);
- try {
- return (ArrayList<AppIdAndNameTransportModel>) dataAccessService.executeSQLQuery(sql,
- AppIdAndNameTransportModel.class, null);
- } catch (Exception e) {
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while fetching the adminApps for user "
- + user.getLoginId() + ". Details: " + EcompPortalUtils.getStackTrace(e));
- }
- }
- return new ArrayList<AppIdAndNameTransportModel>();
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public List<AppIdAndNameTransportModel> getAppsForSuperAdminAndAccountAdmin(EPUser user) {
- if (adminRolesService.isSuperAdmin(user) || adminRolesService.isAccountAdmin(user)) {
- String format = "";
- String sql = "";
- if (adminRolesService.isSuperAdmin(user)) {
- format = "SELECT app.APP_ID, app.APP_NAME, app.APP_TYPE FROM FN_APP app " + "where app.ENABLED = 'Y'";
- } else {
- format = "SELECT app.APP_ID, app.APP_NAME, APP_TYPE FROM FN_APP app inner join FN_USER_ROLE userrole ON userrole.APP_ID=app.APP_ID "
- + "where userrole.USER_ID = %d AND userrole.ROLE_ID=" + ACCOUNT_ADMIN_ROLE_ID
- + " AND app.ENABLED = 'Y'";
- }
- sql = String.format(format, user.getId());
- // sql += " AND app.APP_REST_ENDPOINT IS NOT NULL AND
- // app.APP_REST_ENDPOINT <> ''";
- logQuery(sql);
- try {
- return (ArrayList<AppIdAndNameTransportModel>) dataAccessService.executeSQLQuery(sql,
- AppIdAndNameTransportModel.class, null);
- } catch (Exception e) {
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- logger.error(EELFLoggerDelegate.errorLogger, "Exception occurred while fetching the adminApps for user "
- + user.getLoginId() + ". Details: " + EcompPortalUtils.getStackTrace(e));
- }
- }
- return new ArrayList<AppIdAndNameTransportModel>();
- }
-
- private void logQuery(String sql) {
- logger.debug(EELFLoggerDelegate.debugLogger, "Executing query: " + sql);
- }
-
- public DataAccessService getDataAccessService() {
- return dataAccessService;
- }
-
- public void setDataAccessService(DataAccessService dataAccessService) {
- this.dataAccessService = dataAccessService;
- }
-
- @Override
- public List<AdminUserApplications> getAppsAdmins() {
- String sql = "SELECT apps.APP_NAME, apps.APP_ID, user.USER_ID, user.FIRST_NAME, user.LAST_NAME, user.ORG_USER_ID FROM fn_user_role userrole "
- + "INNER JOIN fn_user user ON user.USER_ID = userrole.USER_ID "
- + "INNER JOIN fn_app apps ON apps.APP_ID = userrole.APP_ID " + "WHERE userrole.ROLE_ID = "
- + ACCOUNT_ADMIN_ROLE_ID + " AND apps.ENABLED = 'Y'";
- logQuery(sql);
- try {
- @SuppressWarnings("unchecked")
- List<AdminUserApp> adminApps = dataAccessService.executeSQLQuery(sql, AdminUserApp.class, null); // DataAccessService
- // does
- // not
- // use
- // generic
- // types.
- return aggregateRowsResultsByUserId(adminApps);
- } catch (Exception e) {
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- return null;
- }
- }
-
- private List<AdminUserApplications> aggregateRowsResultsByUserId(List<AdminUserApp> adminApps) {
- HashMap<Long, AdminUserApplications> adminUserApplications = new HashMap<Long, AdminUserApplications>();
- for (AdminUserApp app : adminApps) {
- Long userId = app.getUser_Id();
- if (adminUserApplications.get(userId) == null)
- adminUserApplications.put(userId, new AdminUserApplications(app));
- else
- adminUserApplications.get(userId).addApp(app.getAppId(), app.getAppName());
- }
- return new ArrayList<AdminUserApplications>(adminUserApplications.values());
- }
-
- @Override
- public List<AppsResponse> getAllApps(Boolean all) {
- // If all is true, return both active and inactive apps. Otherwise, just
- // active apps.
- @SuppressWarnings("unchecked")
- // Sort the list by application name so the drop-down looks pretty.
- List<EPApp> apps = all
- ? (List<EPApp>) dataAccessService.getList(EPApp.class, " where id != " + ECOMP_APP_ID, "name", null)
- : (List<EPApp>) dataAccessService.getList(EPApp.class, " where enabled = 'Y'", "name", null);
- List<AppsResponse> appsModified = new ArrayList<AppsResponse>();
- for (EPApp app : apps) {
- appsModified.add(new AppsResponse(app.getId(), app.getName(), app.isRestrictedApp(), app.getEnabled()));
-
- // Write the image to disk in case if it is missing
- writeAppImageToDiskCacheIfNecessary(app);
- }
- return appsModified;
- }
-
- @Override
- public UserRoles getUserProfile(String loginId) {
- String format = "SELECT DISTINCT user.USER_ID, role.ROLE_ID, user.ORG_USER_ID, user.FIRST_NAME, user.LAST_NAME, role.ROLE_NAME FROM fn_user_role userrole "
- + "INNER JOIN fn_user user ON user.USER_ID = userrole.USER_ID "
- + "INNER JOIN fn_role role ON role.ROLE_ID = userrole.ROLE_ID " + "WHERE user.ORG_USER_ID = \"%s\";";
- String sql = String.format(format, loginId);
- logQuery(sql);
- @SuppressWarnings("unchecked")
- List<UserRole> userRoleList = dataAccessService.executeSQLQuery(sql, UserRole.class, null);
- ArrayList<UserRoles> usersRolesList = aggregateUserProfileRowsResultsByRole(userRoleList);
- if (usersRolesList == null || usersRolesList.size() < 1)
- return null;
-
- return usersRolesList.get(0);
- }
-
- private ArrayList<UserRoles> aggregateUserProfileRowsResultsByRole(List<UserRole> userRoleList) {
- HashMap<String, UserRoles> userRoles = new HashMap<String, UserRoles>();
- for (UserRole user : userRoleList) {
- String orgUserId = user.getOrgUserId();
- if (userRoles.get(orgUserId) == null)
- userRoles.put(orgUserId, new UserRoles(user));
- else
- userRoles.get(orgUserId).addRole(user.getRoleId());
- }
- return new ArrayList<UserRoles>(userRoles.values());
- }
-
- private boolean isRestrictedApp(Long appId) {
- EPApp app = getApp(appId);
- return app.isRestrictedApp();
- }
-
- // For the functional menu edit
- @Override
- public List<LocalRole> getAppRoles(Long appId) {
- String sql = "";
- if (isRestrictedApp(appId)) {
- sql = "SELECT ROLE_ID, ROLE_NAME from FN_ROLE where ROLE_ID = '" + RESTRICTED_APP_ROLE_ID + "'";
- } else {
- sql = "SELECT ROLE_ID, ROLE_NAME from FN_ROLE where APP_ID = '" + appId + "'";
- }
- logQuery(sql);
- @SuppressWarnings("unchecked")
- List<LocalRole> appRoles = dataAccessService.executeSQLQuery(sql, LocalRole.class, null);
- return appRoles;
- }
-
- private String userAppsQuery(EPUser user) {
- StringBuilder query = new StringBuilder();
- if (adminRolesService.isSuperAdmin(user)) {
- query.append("SELECT * FROM FN_APP where FN_APP.ENABLED = 'Y'");
- } else {
- query.append("SELECT * FROM FN_APP join FN_USER_ROLE ON FN_USER_ROLE.APP_ID = FN_APP.APP_ID where ");
- query.append(
- "FN_USER_ROLE.USER_ID = " + user.getId() + " AND FN_USER_ROLE.ROLE_ID != " + SUPER_ADMIN_ROLE_ID);
- query.append(" AND FN_APP.ENABLED = 'Y'");
- }
- return query.toString();
- }
-
- @Override
- public List<EPApp> getUserApps(EPUser user) {
- List<EPApp> openApps = getOpenApps();
- for (EPApp app : openApps) {
- // Write the image to disk in case if it is missing
- writeAppImageToDiskCacheIfNecessary(app);
- }
-
- if (user.isGuest()) {
- return openApps;
- } else {
- String sql = userAppsQuery(user);
- logQuery(sql);
-
- TreeSet<EPApp> distinctApps = new TreeSet<EPApp>();
-
- @SuppressWarnings("unchecked")
- List<EPApp> adminApps = dataAccessService.executeSQLQuery(sql, EPApp.class, null);
- for (EPApp app : adminApps) {
- // Write the image to disk in case if it is missing
- writeAppImageToDiskCacheIfNecessary(app);
-
- distinctApps.add(app);
- }
-
- for (EPApp app : openApps) {
- distinctApps.add(app);
- }
-
- List<EPApp> userApps = new ArrayList<EPApp>();
- userApps.addAll(distinctApps);
- return userApps;
- }
- }
-
- @Override
- public List<EPApp> getPersAdminApps(EPUser user) {
- final Map<String, Long> params = new HashMap<>();
- params.put("userId", user.getId());
- // Named query is stored in EP.hbm.xml, mapped to EPApp
- @SuppressWarnings("unchecked")
- List<EPApp> list = dataAccessService.executeNamedQuery("getPersAdminApps", params, null);
- // Why is this necessary?
- for (EPApp app : list)
- writeAppImageToDiskCacheIfNecessary(app);
- return list;
- }
-
- @Override
- public List<EPApp> getPersUserApps(EPUser user) {
- final Map<String, Long> params = new HashMap<>();
- params.put("userId", user.getId());
- // Named query is stored in EP.hbm.xml, mapped to EPApp
- @SuppressWarnings("unchecked")
- List<EPApp> list = dataAccessService.executeNamedQuery("getPersUserApps", params, null);
- // Why is this necessary?
- for (EPApp app : list)
- writeAppImageToDiskCacheIfNecessary(app);
- return list;
- }
-
- /*
- * (non-Javadoc)
- * @see org.openecomp.portalapp.portal.service.EPAppService#getAppCatalog(org.openecomp.portalapp.portal.domain.EPUser)
- */
- @Override
- public List<AppCatalogItem> getUserAppCatalog(EPUser user) {
- final Map<String, Long> params = new HashMap<>();
- params.put("userId", user.getId());
- // Named query is stored in EP.hbm.xml, mapped to AppCatalogItem
- @SuppressWarnings("unchecked")
- List<AppCatalogItem> list = dataAccessService.executeNamedQuery("getUserAppCatalog", params, null);
- return list;
- }
-
- /*
- * (non-Javadoc)
- * @see org.openecomp.portalapp.portal.service.EPAppService#getAdminAppCatalog(org.openecomp.portalapp.portal.domain.EPUser)
- */
- @Override
- public List<AppCatalogItem> getAdminAppCatalog(EPUser user) {
- final Map<String, Long> params = new HashMap<>();
- params.put("userId", user.getId());
- // Named query is stored in EP.hbm.xml, mapped to AppCatalogItem
- @SuppressWarnings("unchecked")
- List<AppCatalogItem> list = dataAccessService.executeNamedQuery("getAdminAppCatalog", params, null);
- return list;
- }
-
- private List<EPApp> getOpenApps() {
- @SuppressWarnings("unchecked")
- List<EPApp> openApps = dataAccessService.getList(EPApp.class, " where open='Y' and enabled='Y'", null, null);
- return openApps;
- }
-
- @Override
- public List<OnboardingApp> getOnboardingApps() {
- @SuppressWarnings("unchecked")
- List<EPApp> apps = (List<EPApp>) dataAccessService.getList(EPApp.class, " where id!=" + ECOMP_APP_ID, null,
- null);
- List<OnboardingApp> onboardingAppsList = new ArrayList<OnboardingApp>();
- for (EPApp app : apps) {
- OnboardingApp onboardingApp = new OnboardingApp();
- createOnboardingFromApp(app, onboardingApp);
- onboardingAppsList.add(onboardingApp);
- }
- return onboardingAppsList;
- }
-
- @Override
- public List<OnboardingApp> getEnabledNonOpenOnboardingApps() {
- @SuppressWarnings("unchecked")
- List<EPApp> apps = (List<EPApp>) dataAccessService.getList(EPApp.class,
- " where enabled = true and open = false and id!=" + ECOMP_APP_ID, null, null);
- List<OnboardingApp> onboardingAppsList = new ArrayList<OnboardingApp>();
- for (EPApp app : apps) {
- OnboardingApp onboardingApp = new OnboardingApp();
- createOnboardingFromApp(app, onboardingApp);
- onboardingAppsList.add(onboardingApp);
- }
- return onboardingAppsList;
- }
-
- private FieldsValidator onboardingAppFieldsChecker(OnboardingApp onboardingApp) {
- FieldsValidator fieldsValidator = new FieldsValidator();
- if (onboardingApp.name == null || onboardingApp.name.length() == 0 || onboardingApp.url == null
- || onboardingApp.url.length() == 0 || onboardingApp.restrictedApp == null
- || onboardingApp.isOpen == null || onboardingApp.isEnabled == null
- || (onboardingApp.id != null && onboardingApp.id.equals(ECOMP_APP_ID))
- // For a normal app (appType==1), these fields must be filled
- // in.
- // For a restricted app (appType==2), they will be empty.
- || ((!onboardingApp.restrictedApp) && (onboardingApp.username == null
- || onboardingApp.username.length() == 0 || onboardingApp.appPassword == null
- || onboardingApp.appPassword.length() == 0))) {
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_BAD_REQUEST);
- }
- return fieldsValidator;
- }
-
- @SuppressWarnings("unchecked")
- private void validateOnboardingApp(OnboardingApp onboardingApp, FieldsValidator fieldsValidator) {
- boolean dublicatedUrl = false;
- boolean dublicatedName = false;
- List<EPApp> apps;
- if (onboardingApp.id == null) {
- apps = dataAccessService.getList(EPApp.class,
- " where url = '" + onboardingApp.url + "' or name = '" + onboardingApp.name + "'", null, null);
- } else {
- apps = dataAccessService.getList(EPApp.class, " where id = " + onboardingApp.id + " or url = '"
- + onboardingApp.url + "' or name = '" + onboardingApp.name + "'", null, null);
- }
- for (EPApp app : apps) {
- if (onboardingApp.id != null && onboardingApp.id.equals(app.getId())) {
- continue;
- }
- if (!dublicatedUrl && app.getUrl().equalsIgnoreCase(onboardingApp.url)) {
- dublicatedUrl = true;
- if (dublicatedName) {
- break;
- }
- }
- if (!dublicatedName && app.getName().equalsIgnoreCase(onboardingApp.name)) {
- dublicatedName = true;
- if (dublicatedUrl) {
- break;
- }
- }
- }
- if (dublicatedUrl || dublicatedName) {
- if (dublicatedUrl) {
- fieldsValidator.addProblematicFieldName(urlField);
- }
- if (dublicatedName) {
- fieldsValidator.addProblematicFieldName(nameField);
- }
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_CONFLICT);
- fieldsValidator.errorCode = DUBLICATED_FIELD_VALUE_ECOMP_ERROR;
- }
- }
-
- @Override
- public FieldsValidator modifyOnboardingApp(OnboardingApp modifiedOnboardingApp, EPUser user) {
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: entering modifyOnboardingApp");
- FieldsValidator fieldsValidator = onboardingAppFieldsChecker(modifiedOnboardingApp);
- if (fieldsValidator.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {
- validateOnboardingApp(modifiedOnboardingApp, fieldsValidator);
- }
- if (fieldsValidator.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {
- if (modifiedOnboardingApp.id != null) {
- updateApp(modifiedOnboardingApp.id, modifiedOnboardingApp, fieldsValidator, user);
- } else {
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_BAD_REQUEST);
- }
- }
- return fieldsValidator;
- }
-
- @Override
- public FieldsValidator addOnboardingApp(OnboardingApp newOnboardingApp, EPUser user) {
- FieldsValidator fieldsValidator = onboardingAppFieldsChecker(newOnboardingApp);
- if (fieldsValidator.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {
- validateOnboardingApp(newOnboardingApp, fieldsValidator);
- }
- if (fieldsValidator.httpStatusCode.intValue() == HttpServletResponse.SC_OK) {
- if (newOnboardingApp.id == null) {
- updateApp(null, newOnboardingApp, fieldsValidator, user);
- } else {
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_BAD_REQUEST);
- }
- }
- return fieldsValidator;
- }
-
- @Override
- public FieldsValidator deleteOnboardingApp(EPUser user, Long appid) {
- FieldsValidator fieldsValidator = new FieldsValidator();
- if (!adminRolesService.isSuperAdmin(user)) {
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_FORBIDDEN);
- return fieldsValidator;
- }
- Boolean result = false;
- Session localSession = null;
- Transaction transaction = null;
- try {
- localSession = sessionFactory.openSession();
- transaction = localSession.beginTransaction();
-
- // 1) Remove the URL for any functional menu item associated with
- // this app
- String sql = "UPDATE fn_menu_functional m, fn_menu_functional_roles mr SET m.url='' "
- + " WHERE m.menu_id=mr.menu_id " + " AND mr.app_id='" + appid + "'";
- logQuery(sql);
- Query query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- // 2) Remove any favorites associated with a menu item that is
- // associated with this app
- sql = "Delete from fn_menu_favorites " + " using fn_menu_favorites inner join fn_menu_functional_roles "
- + " where fn_menu_functional_roles.app_id='" + appid + "' "
- + " AND fn_menu_functional_roles.menu_id=fn_menu_favorites.menu_id";
- logQuery(sql);
- query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- // 3) Remove all role,appid records from fn_menu_functional_role
- // that are associated with this app
- sql = "delete from fn_menu_functional_roles where app_id='" + appid + "'";
- logQuery(sql);
- query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- // 4) Remove all records from fn_user_role associated with this app
- sql = "delete from fn_user_role where app_id='" + appid + "'";
- logQuery(sql);
- query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- // 5) Remove all records from fn_role associated with this app
- sql = "delete from fn_role where app_id='" + appid + "'";
- logQuery(sql);
- query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- // 6) Remove any widgets associated with this app
- sql = "delete from fn_widget where app_id='" + appid + "'";
- logQuery(sql);
- query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- // Remove any selections in the personalization table
- sql = "delete from fn_pers_user_app_sel where app_id='" + appid + "'";
- logQuery(sql);
- query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- // Delete the app
- sql = "delete from fn_app where app_id='" + appid + "'";
- logQuery(sql);
- query = localSession.createSQLQuery(sql);
- query.executeUpdate();
-
- transaction.commit();
- result = true;
- } catch (Exception e) {
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- EcompPortalUtils.rollbackTransaction(transaction, "deleteOnboardingApp rollback, exception = " + e);
- } finally {
- EcompPortalUtils.closeLocalSession(localSession, "deleteOnboardingApp");
- }
- if (!result) {
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
- return fieldsValidator;
- }
-
- private static Object syncRests = new Object();
-
- // An app has been enabled/disabled. Must enable/disable all associated
- // functional menu items.
- private void setFunctionalMenuItemsEnabled(Session localSession, Boolean enabled, Long appId) {
- String active_yn = enabled ? "Y" : "N";
- String sql = "SELECT m.menu_id, m.column_num, m.text, m.parent_menu_id, m.url, m.active_yn "
- + "FROM fn_menu_functional m, fn_menu_functional_roles r " + "WHERE m.menu_id = r.menu_id "
- + " AND r.app_id = '" + appId + "' ";
- logQuery(sql);
- @SuppressWarnings("unchecked")
- List<FunctionalMenuItem> menuItems = dataAccessService.executeSQLQuery(sql, FunctionalMenuItem.class, null);
- for (FunctionalMenuItem menuItem : menuItems) {
- FunctionalMenuItem myMenuItem = (FunctionalMenuItem) localSession.get(FunctionalMenuItem.class,
- menuItem.menuId);
- myMenuItem.active_yn = active_yn;
- localSession.save(myMenuItem);
- }
- }
-
- // Attention! If (appId == null) we use this function to create application
- // otherwise we use it to modify existing application
- private void updateApp(Long appId, OnboardingApp onboardingApp, FieldsValidator fieldsValidator, EPUser user) {
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: entering updateApp");
- // Separate out the code for a restricted app, since it doesn't need any
- // of the UEB code.
- if (onboardingApp.restrictedApp) {
- boolean result = false;
- Session localSession = null;
- Transaction transaction = null;
- try {
- localSession = sessionFactory.openSession();
- transaction = localSession.beginTransaction();
- EPApp app;
- if (appId == null) {
- app = new EPApp();
- } else {
- app = (EPApp) localSession.get(EPApp.class, appId);
- if (app == null || app.getId() == null) { // App is already
- // deleted!
- transaction.commit();
- localSession.close();
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
- }
- createAppFromOnboarding(app, onboardingApp, localSession);
- localSession.saveOrUpdate(app);
- // Enable or disable all menu items associated with this app
- setFunctionalMenuItemsEnabled(localSession, onboardingApp.isEnabled, appId);
- transaction.commit();
- result = true;
- } catch (Exception e) {
- EcompPortalUtils.rollbackTransaction(transaction,
- "updateApp rollback, exception = " + EcompPortalUtils.getStackTrace(e));
- } finally {
- EcompPortalUtils.closeLocalSession(localSession, "updateApp");
- }
- if (!result) {
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
-
- } else {
- synchronized (syncRests) {
- boolean result = false;
- Session localSession = null;
- Transaction transaction = null;
- try {
- localSession = sessionFactory.openSession();
- transaction = localSession.beginTransaction();
- EPApp app;
- if (appId == null) {
- app = new EPApp();
- // -------------------------------------------------------------------------------------------
- // Register this App with the UEB communication server.
- // Save
- // the App's unique mailbox/topic
- // name and keys to the FN_APP table. The App's mailbox
- // and
- // keys will be visible to the
- // admin on the ECOMP portal.
- // -------------------------------------------------------------------------------------------
- TopicManager topicManager = new TopicManager();
- final CambriaIdentityManager im = new CambriaClientBuilders.IdentityManagerBuilder()
- .usingHosts(Helper.uebUrlList()).build();
- com.att.nsa.apiClient.credentials.ApiCredential credential = im.createApiKey(user.getEmail(),
- "ECOMP Portal Owner");
- String appKey = credential.getApiKey();
- String appSecret = credential.getApiSecret();
- boolean isProductionBuild = EcompPortalUtils.isProductionBuild();
- String appMailboxName = null;
-
- int maxNumAttemptsToCreateATopic = 3;
- boolean successfullyCreatedMailbox = false;
- for (int i = 0; i < maxNumAttemptsToCreateATopic; i++) {
- if (isProductionBuild) {
- appMailboxName = "ECOMP-PORTAL-OUTBOX-" + (int) (Math.random() * 100000.0);
- } else {
- appMailboxName = "ECOMP-PORTAL-OUTBOX-TEST-" + (int) (Math.random() * 100000.0);
- }
-
- try {
- topicManager.createTopic(
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_KEY),
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_SECRET),
- appMailboxName, "ECOMP outbox for app" + onboardingApp.name);
- successfullyCreatedMailbox = true;
- logger.debug(EELFLoggerDelegate.debugLogger,
- "Successfully created " + appMailboxName + " for App " + onboardingApp.name);
- logger.debug(EELFLoggerDelegate.debugLogger, " Key = " + appKey + " Secret = "
- + appSecret + " generated using = " + user.getEmail());
- break;
- } catch (HttpException e) {
- String stackTrace = EcompPortalUtils.getStackTrace(e);
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeUebConnectionError, e.getMessage());
- if (e.getStatusCode() == 409) {
- logger.error(EELFLoggerDelegate.errorLogger,
- "Topic/mailbox " + appMailboxName
- + " already exists. Will try using a different name, Details: "
- + stackTrace);
- } else {
- logger.error(EELFLoggerDelegate.errorLogger,
- "HttpException when onboarding App: " + stackTrace);
- }
- }
- }
-
- if (successfullyCreatedMailbox) {
- onboardingApp.setUebTopicName(appMailboxName);
- onboardingApp.setUebKey(appKey);
- onboardingApp.setUebSecret(appSecret);
-
- try {
- /*
- * EP is a publisher to this App's new mailbox
- */
- topicManager.addPublisher(
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_KEY),
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_SECRET),
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_KEY),
- appMailboxName);
-
- /*
- * This App is a subcriber of it's own mailbox
- */
- topicManager.addSubscriber(
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_KEY),
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_SECRET), appKey,
- appMailboxName);
-
- /*
- * This App is a publisher to EP
- */
- topicManager.addPublisher(
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_KEY),
- PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_SECRET), appKey,
- PortalApiProperties.getProperty(PortalApiConstants.ECOMP_PORTAL_INBOX_NAME));
- } catch (HttpException | CambriaApiException | IOException e) {
- String stackTrace = EcompPortalUtils.getStackTrace(e);
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeUebRegisterOnboardingAppError,
- e.getMessage());
- logger.error(EELFLoggerDelegate.errorLogger,
- "Error when configuring Publisher/Subscriber for App's new mailbox "
- + stackTrace);
- transaction.commit();
- localSession.close();
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_CONFLICT);
- return;
- }
- } else {
- transaction.commit();
- localSession.close();
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_CONFLICT);
- return;
- }
- } else {
- app = (EPApp) localSession.get(EPApp.class, appId);
- if (app == null || app.getId() == null) { // App is
- // already
- // deleted!
- transaction.commit();
- localSession.close();
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
- }
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: about to call createAppFromOnboarding");
- createAppFromOnboarding(app, onboardingApp, localSession);
- logger.debug(EELFLoggerDelegate.debugLogger,
- "LR: updateApp: finished calling createAppFromOnboarding");
- localSession.saveOrUpdate(app);
- logger.debug(EELFLoggerDelegate.debugLogger,
- "LR: updateApp: finished calling localSession.saveOrUpdate");
- // Enable or disable all menu items associated with this app
- setFunctionalMenuItemsEnabled(localSession, onboardingApp.isEnabled, appId);
- logger.debug(EELFLoggerDelegate.debugLogger,
- "LR: updateApp: finished calling setFunctionalMenuItemsEnabled");
- transaction.commit();
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: updateApp: finished calling transaction.commit");
- epUebHelper.addPublisher(app);
- logger.debug(EELFLoggerDelegate.debugLogger,
- "LR: updateApp: finished calling epUebHelper.addPublisher");
- result = true;
- } catch (Exception e) {
- logger.debug(EELFLoggerDelegate.debugLogger, "exception: " + e.toString());
- logger.debug(EELFLoggerDelegate.debugLogger, "exception.cause: " + e.getCause());
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeUebRegisterOnboardingAppError, e.getMessage());
- EPLogUtil.logEcompError(EPAppMessagesEnum.BeDaoSystemError);
- EcompPortalUtils.rollbackTransaction(transaction,
- "updateApp rollback, exception = " + EcompPortalUtils.getStackTrace(e));
- } finally {
- EcompPortalUtils.closeLocalSession(localSession, "updateApp");
- }
- if (!result) {
- fieldsValidator.httpStatusCode = new Long(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
- }
- }
- }
-
- private void createOnboardingFromApp(EPApp app, OnboardingApp onboardingApp) {
- onboardingApp.id = app.getId();
- onboardingApp.name = app.getName();
- onboardingApp.imageUrl = app.getImageUrl();
- onboardingApp.description = app.getDescription();
- onboardingApp.notes = app.getNotes();
- onboardingApp.url = app.getUrl();
- onboardingApp.alternateUrl = app.getAlternateUrl();
- onboardingApp.restUrl = app.getAppRestEndpoint();
- onboardingApp.isOpen = app.getOpen();
- onboardingApp.isEnabled = app.getEnabled();
- onboardingApp.username = app.getUsername();
- onboardingApp.appPassword = this.decryptedPassword(app.getAppPassword(), app);
- onboardingApp.uebTopicName = app.getUebTopicName();
- onboardingApp.uebKey = app.getUebKey();
- onboardingApp.uebSecret = app.getUebSecret();
- onboardingApp.setRestrictedApp(app.isRestrictedApp());
-
- if (app.getThumbnail() != null) {
- onboardingApp.thumbnail = new String(Base64.getEncoder().encode(app.getThumbnail()));
- // Write the image to disk in case if it is missing
- writeAppImageToDiskCacheIfNecessary(app);
- }
- }
-
- private EPApp createAppFromOnboarding(EPApp app, OnboardingApp onboardingApp, Session localSession) {
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: entering createAppFromOnboarding");
- app.setName(onboardingApp.name);
- app.setDescription(onboardingApp.description);
- app.setNotes(onboardingApp.notes);
- app.setUrl(onboardingApp.url);
- app.setAlternateUrl(onboardingApp.alternateUrl);
- app.setAppRestEndpoint(onboardingApp.restUrl);
- app.setOpen(onboardingApp.isOpen);
- app.setEnabled(onboardingApp.isEnabled);
- app.setUsername(onboardingApp.username);
- app.setAppPassword(this.encryptedPassword(onboardingApp.appPassword, app));
- app.setUebTopicName(onboardingApp.uebTopicName);
- app.setUebKey(onboardingApp.uebKey);
- app.setUebSecret(onboardingApp.uebSecret);
- app.setRestrictedApp(onboardingApp.restrictedApp);
- if (!StringUtils.isEmpty(onboardingApp.thumbnail)) {
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: onboarding thumbnail is NOT empty");
- String[] splitBase64Thumbnail = onboardingApp.thumbnail.split("base64,");
- if (splitBase64Thumbnail != null) {
- logger.debug(EELFLoggerDelegate.debugLogger,
- "LR: length of splitBase64Thumbnail: " + splitBase64Thumbnail.length);
- }
- if (splitBase64Thumbnail.length > 1) {
- // This occurs when we have a new image, not an existing image
- byte[] decodedImage = Base64.getDecoder().decode(splitBase64Thumbnail[1].getBytes());
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: finished calling decode");
- deleteOldImageFromDisk(app);
- saveNewImageToDisk(app, onboardingApp, decodedImage);
- app.setThumbnail(decodedImage);
- }
- } else if (app.getThumbnail() != null) {
- // The thumbnail that came in from the json is empty; the previous
- // thumbnail is NOT empty. Must delete it.
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: onboarding thumbnail is empty; db thumbnail is NOT null");
- deleteOldImageFromDisk(app);
- app.setThumbnail(null);
- } else {
- logger.debug(EELFLoggerDelegate.debugLogger, "LR: onboarding thumbnail is empty; db thumbnail is null");
- }
- return app;
- }
-
- private void deleteOldImageFromDisk(EPApp app) {
- if (app.getImageUrl() != null) {
- String oldImageFullFilePath = ecompportalPath + PATH_SEPARATOR + app.getImageUrl();
- try {
- File oldFile = new File(oldImageFullFilePath);
- if (oldFile.exists() && oldFile.delete()) {
- app.setImageUrl(null);
- logger.debug(EELFLoggerDelegate.debugLogger,
- "old file " + oldImageFullFilePath + " was successfully deleted");
- }
- } catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "old file " + oldImageFullFilePath + " delete failure",
- EcompPortalUtils.getStackTrace(e));
- }
- }
- }
-
- // No need to optimize this code since it happens only when adding/modifying
- // an application.
- private void saveNewImageToDisk(EPApp app, OnboardingApp onboardingApp, byte[] decodedImage) {
- // Notice!!!
- // using separator did not worked on WINDOWS as the database was saved
- // as assets\images\tmp\ which the UI did not understand thus ichanged
- // it to "/"
- String imageFileName = constructImageName(onboardingApp);
- String imageRelativeFilePath = imageCacheRelativePath + PATH_SEPARATOR + imageFileName;
- String imageFullFilePath = ecompportalPath + PATH_SEPARATOR + imageRelativeFilePath;
- logger.debug(EELFLoggerDelegate.debugLogger,
- "saving app " + onboardingApp.name + " image to " + imageFullFilePath);
-
- FileOutputStream osf = null;
- try {
- // Base64 Image example: 'data:image/png;base64,AAAFBfj42Pj4'
- logger.info(EELFLoggerDelegate.debugLogger, "Saving new image: " + decodedImage);
- osf = writeImageAsBase64(decodedImage, imageFullFilePath);
- app.setImageUrl(imageRelativeFilePath);
- logger.debug(EELFLoggerDelegate.debugLogger,
- "saveBlobImageToDisk onboardingAppImageUrl = " + imageRelativeFilePath);
- } catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger, "failed to save image to " + imageFullFilePath,
- EcompPortalUtils.getStackTrace(e));
- } finally {
- if (osf != null) {
- try {
- osf.close();
- } catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger,
- "failed to close outpoot stream for image " + imageFullFilePath,
- EcompPortalUtils.getStackTrace(e));
- }
- }
- }
- }
-
- private FileOutputStream writeImageAsBase64(byte[] decodedImage, String imageFullFilePath)
- throws FileNotFoundException, IOException {
- FileOutputStream osf;
- File of = new File(imageFullFilePath);
- osf = new FileOutputStream(of);
- osf.write(decodedImage);
- osf.flush();
- return osf;
- }
-
- private String constructImageName(OnboardingApp onboardingApp) {
- return "portal" + String.valueOf(onboardingApp.url.hashCode() + "_" + (int) (Math.random() * 100000.0))
- + ".png";
- }
-
- // Don't encrypt or decrypt the password if it is null or the empty string
- private String decryptedPassword(String encryptedAppPwd, EPApp app) {
- String result = "";
- if (encryptedAppPwd != null & encryptedAppPwd.length() > 0) {
- try {
- result = CipherUtil.decrypt(encryptedAppPwd,
- SystemProperties.getProperty(SystemProperties.Decryption_Key));
- } catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "Unable to decrypt, App name = " + app.getName(),
- EcompPortalUtils.getStackTrace(e));
- }
- }
- return result;
- }
-
- private String encryptedPassword(String decryptedAppPwd, EPApp app) {
- String result = "";
- if (decryptedAppPwd != null & decryptedAppPwd.length() > 0) {
- try {
- result = CipherUtil.encrypt(decryptedAppPwd,
- SystemProperties.getProperty(SystemProperties.Decryption_Key));
- } catch (Exception e) {
- logger.error(EELFLoggerDelegate.errorLogger, "Unable to encrypt, App name = " + app,
- EcompPortalUtils.getStackTrace(e));
- }
- }
- return result;
- }
-
- public void writeAppsImagesToDiskCacheIfNecessary() {
- List<EPApp> apps = getAppsFullList();
- for (EPApp app : apps) {
- String imageFullFilePath = ecompportalPath + PATH_SEPARATOR + app.getImageUrl();
- File f = new File(imageFullFilePath);
- if (f.exists() && !f.isDirectory()) {
- continue;// logger.debug("verified existence.");
- }
-
- if (app.getThumbnail() == null) {
- logger.debug(EELFLoggerDelegate.debugLogger,
- "no thumbnail blob available for this app, cannot write to disk " + app.getName());
- continue;
- }
-
- FileOutputStream osf = null;
- try {
- logger.info(EELFLoggerDelegate.debugLogger,
- "Rewriting image for " + app.getName() + " from db to: " + imageFullFilePath);
- osf = writeImageAsBase64(app.getThumbnail(), imageFullFilePath);
- logger.debug(EELFLoggerDelegate.debugLogger, "missing, wrote to disk.");
- } catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger, "failed to save image to " + imageFullFilePath,
- EcompPortalUtils.getStackTrace(e));
- } finally {
- try {
- if (osf != null)
- osf.close();
- } catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger,
- "writeAppsImagesToDiskCacheIfNecessary: failed to close output stream for image "
- + imageFullFilePath,
- EcompPortalUtils.getStackTrace(e));
- }
- }
- }
- }
-
- private void writeAppImageToDiskCacheIfNecessary(EPApp app) {
- if (app == null || app.getImageUrl() == null) {
- return;
- }
-
- String imageFullFilePath = ecompportalPath + PATH_SEPARATOR + app.getImageUrl();
- File f = new File(imageFullFilePath);
-
- // Image file
- if (f.exists() && !f.isDirectory()) {
- return;// logger.debug("verified existence.");
- }
-
- if (app.getThumbnail() == null) {
- logger.debug(EELFLoggerDelegate.debugLogger,
- "no thumbnail blob available for this app, cannot write to disk " + app.getName());
- return;
- }
-
- FileOutputStream osf = null;
- try {
- logger.info(EELFLoggerDelegate.debugLogger,
- "Rewriting image for " + app.getName() + " from db to: " + imageFullFilePath);
- osf = writeImageAsBase64(app.getThumbnail(), imageFullFilePath);
- logger.debug(EELFLoggerDelegate.debugLogger, "missing, wrote to disk.");
- } catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger, "failed to save image to " + imageFullFilePath,
- EcompPortalUtils.getStackTrace(e));
- } finally {
- try {
- if (osf != null)
- osf.close();
- } catch (IOException e) {
- logger.error(EELFLoggerDelegate.errorLogger,
- "writeAppsImagesToDiskCacheIfNecessary: failed to close output stream for image "
- + imageFullFilePath,
- EcompPortalUtils.getStackTrace(e));
- }
- }
- }
-
- @Override
- public List<EPApp> getUserRemoteApps(String id) {
-
- StringBuilder query = new StringBuilder();
-
- query.append("SELECT * FROM FN_APP join FN_USER_ROLE ON FN_USER_ROLE.APP_ID = FN_APP.APP_ID where ");
- query.append(
- "FN_USER_ROLE.USER_ID = " + id + " AND FN_USER_ROLE.ROLE_ID != " + SUPER_ADMIN_ROLE_ID);
- query.append(" AND FN_APP.ENABLED = 'Y'");
-
- TreeSet<EPApp> distinctApps = new TreeSet<EPApp>();
-
- @SuppressWarnings("unchecked")
- List<EPApp> adminApps = dataAccessService.executeSQLQuery(query.toString(), EPApp.class, null);
- for (EPApp app : adminApps) {
- // Write the image to disk in case if it is missing
- writeAppImageToDiskCacheIfNecessary(app);
-
- distinctApps.add(app);
- }
-
- List<EPApp> userApps = new ArrayList<EPApp>();
- userApps.addAll(distinctApps);
- return userApps;
-
- }
-
-}
\ No newline at end of file