/* * � Copyright IBM Corp. 2016 * * 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 com.ibm.xsp.extlib.designer.bluemix.preference; import static com.ibm.xsp.extlib.designer.bluemix.preference.PreferenceKeys.*; import com.ibm.commons.util.StringUtil; import com.ibm.designer.domino.preferences.DominoPreferenceManager; import com.ibm.xsp.extlib.designer.bluemix.BluemixLogger; /** * @author Gary Marjoram * */ public class HybridProfile implements Cloneable { public static final int MAX_HYBRID_PROFILES = 20; private static final DominoPreferenceManager _prefMgr = DominoPreferenceManager.getInstance(); private String _name; private String _remoteServerAddress; private String _remoteServerName; private String _runtimeServerName; private String _runtimeServerIdFile; private String _runtimeServerIdPassword; private boolean _daEnabled; private String _daDomainName; private String _daDominoDirectory; public HybridProfile() { loadProfile(0, true); } private HybridProfile(int index) { loadProfile(index, false); } private void loadProfile(int index, boolean def) { // Read the profile from the preferences _name = _prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_PROFILE_NAME, index), def); _remoteServerAddress = _prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_SERVER_ADDR, index), def); _remoteServerName = _prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_SERVER_NAME, index), def); _runtimeServerName = _prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_SERVER_NAME, index), def); _runtimeServerIdFile = _prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_ID_FILE, index), def); _daEnabled = _prefMgr.getBooleanValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_ENABLE, index), def); _daDomainName = _prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_DOMAIN, index), def); _daDominoDirectory = _prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_DIR_FILENAME, index), def); // Server ID password is stored in the secure preferences if (def) { _runtimeServerIdPassword = ""; } else { _runtimeServerIdPassword = PreferencePage.getSecurePreference(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_ID_PW, index), ""); } } public void save(int index) { _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_PROFILE_NAME, index), _name); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_SERVER_ADDR, index), _remoteServerAddress); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_SERVER_NAME, index), _remoteServerName); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_SERVER_NAME, index), _runtimeServerName); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_ID_FILE, index), _runtimeServerIdFile); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_ENABLE, index), Boolean.toString(_daEnabled)); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_DOMAIN, index), _daDomainName); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_DIR_FILENAME, index), _daDominoDirectory); // Server ID password is stored in the secure preferences PreferencePage.setSecurePreference(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_ID_PW, index), _runtimeServerIdPassword); } public String getName() { return _name; } public void setName(String name) { _name = name; } public String getRemoteServerAddress() { return _remoteServerAddress; } public void setRemoteServerAddress(String remoteServerAddress) { _remoteServerAddress = remoteServerAddress; } public String getRemoteServerName() { return _remoteServerName; } public void setRemoteServerName(String remoteServerName) { _remoteServerName = remoteServerName; } public String getRuntimeServerName() { return _runtimeServerName; } public void setRuntimeServerName(String runtimeServerName) { _runtimeServerName = runtimeServerName; } public String getRuntimeServerIdFile() { return _runtimeServerIdFile; } public void setRuntimeServerIdFile(String runtimeServerIdFile) { _runtimeServerIdFile = runtimeServerIdFile; } public String getRuntimeServerIdPassword() { return _runtimeServerIdPassword; } public void setRuntimeServerIdPassword(String runtimeServerIdPassword) { _runtimeServerIdPassword = runtimeServerIdPassword; } public boolean isDaEnabled() { return _daEnabled; } public void setDaEnabled(boolean daEnabled) { _daEnabled = daEnabled; } public String getDaDomainName() { return _daDomainName; } public void setDaDomainName(String daDomainName) { _daDomainName = daDomainName; } public String getDaDominoDirectory() { return _daDominoDirectory; } public void setDaDominoDirectory(String daDominoDirectory) { _daDominoDirectory = daDominoDirectory; } @Override public Object clone() { try { return super.clone(); } catch (Exception e) { if (BluemixLogger.BLUEMIX_LOGGER.isErrorEnabled()) { BluemixLogger.BLUEMIX_LOGGER.errorp(this, "clone", e, "Failed to clone"); // $NON-NLS-1$ $NLE-HybridProfile.Failedtoclone-2$ } return null; } } public static HybridProfile load(int index) { if (exists(index)) { return new HybridProfile(index); } return null; } public static void delete(int index) { if (exists(index)) { _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_PROFILE_NAME, index), ""); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_SERVER_ADDR, index), ""); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_SERVER_NAME, index), ""); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_SERVER_NAME, index), ""); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_ID_FILE, index), ""); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_ENABLE, index), ""); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_DOMAIN, index), ""); _prefMgr.setValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_DA_DIR_FILENAME, index), ""); // Server ID password is stored in the secure preferences PreferencePage.setSecurePreference(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_RUNTIME_ID_PW, index), ""); } } public static boolean exists(int index) { return (StringUtil.isNotEmpty(_prefMgr.getValue(getIndexedPrefKey(KEY_BLUEMIX_HYBRID_PROFILE_NAME, index), false))); } private static String getIndexedPrefKey(String prefKey, int index) { if (index == 0) { return prefKey; } return prefKey + "_" + index; } }