aboutsummaryrefslogtreecommitdiff
path: root/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement
diff options
context:
space:
mode:
authorThomas Lenz <tlenz@iaik.tugraz.at>2015-08-14 13:53:00 +0200
committerThomas Lenz <tlenz@iaik.tugraz.at>2015-08-14 13:53:00 +0200
commit456513332389b2dbb7a6d1461f77dda9b7393050 (patch)
tree4d6799366db46f83bb9eb0f7a611d8a08006b697 /id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement
parent5a15347217fbc8a0b2c1083579f70e527da6f3b5 (diff)
downloadmoa-id-spss-456513332389b2dbb7a6d1461f77dda9b7393050.tar.gz
moa-id-spss-456513332389b2dbb7a6d1461f77dda9b7393050.tar.bz2
moa-id-spss-456513332389b2dbb7a6d1461f77dda9b7393050.zip
use old ConfigTool
Diffstat (limited to 'id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement')
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java370
-rw-r--r--id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java6
2 files changed, 376 insertions, 0 deletions
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java
new file mode 100644
index 000000000..b1bba7289
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/FileBasedUserConfiguration.java
@@ -0,0 +1,370 @@
+package at.gv.egovernment.moa.id.configuration.config.usermanagement;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.commons.collections4.map.HashedMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.components.configuration.api.Configuration;
+import at.gv.egiz.components.configuration.api.ConfigurationException;
+import at.gv.egiz.components.configuration.file.PropertiesBasedConfiguration;
+import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase;
+import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
+import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;
+import at.gv.egovernment.moa.util.MiscUtil;
+
+
+public class FileBasedUserConfiguration
+ implements UserConfiguration {
+
+ private static final Logger logger = LoggerFactory.getLogger(FileBasedUserConfiguration.class);
+ public static final String CONFIG_FILE_PROPERTY = "user.properties";
+
+ private Configuration userconfig;
+
+ public FileBasedUserConfiguration() {
+ String cfgFile = System.getProperty(CONFIG_FILE_PROPERTY);
+ if(cfgFile == null) {
+ throw new RuntimeException("Please configure " + CONFIG_FILE_PROPERTY + " to provide user database");
+ }
+
+ try {
+ userconfig = new PropertiesBasedConfiguration(new File(cfgFile));
+
+ } catch (IOException | ConfigurationException e) {
+ logger.error("Failed to build configuration in user modul!");
+ throw new RuntimeException(e);
+
+ }
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<UserDatabase> getAllUsers() {
+ logger.trace("Get All Users from database.");
+
+ // select userdatabase from UserDatabase userdatabase
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ try {
+ String[] userIDs = userconfig.getConfigurationIdNextLevel(UserDatabase.PREFIX);
+ for (String userID : userIDs) {
+ String[] userKeys = userconfig.findConfigurationId(UserDatabase.PREFIX + "." + userID + ".*");
+ Map<String, String> keyValue = new HashMap<String, String>();
+ if (userKeys.length > 0) {
+ for (String key : userKeys) {
+ keyValue.put(
+ KeyValueUtils.removePrefixFromKey(
+ key, UserDatabase.PREFIX + "." + userID + "."),
+ userconfig.getStringValue(key));
+ }
+ UserDatabase userDAO = new UserDatabase(keyValue);
+ userDAO.setHjid(userID);
+ result.add(userDAO);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+ return null;
+
+ }
+ }
+
+ /**
+ *
+ * @return
+ */
+ public List<UserDatabase> getAllOpenUsersRequests() {
+ logger.trace("Get all new Users from Database");
+
+ // select userdatabase from UserDatabase userdatabase
+ // where userdatabase.userRequestTokken is not null
+ // and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '0'
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ // TODO check result of query "... userdatabase.userRequestTokken is not null" if Tokken is null -> (null, "NULL", "", ... ?)
+ if ((user.getUserRequestTokken() != null && !user.getUserRequestTokken().isEmpty() && !user.getUserRequestTokken().equals("NULL"))
+ && (user.isIsAdminRequest()) && (!user.isIsMailAddressVerified())) {
+ result.add(user);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param tokken
+ * @return
+ */
+ public UserDatabase getNewUserWithTokken(String tokken) {
+ logger.trace("Getting Userinformation with Tokken " + tokken + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken = :tokken
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getUserRequestTokken() != null &&
+ user.getUserRequestTokken().equals(tokken)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public UserDatabase getUsersWithOADBID(long id) {
+ logger.trace("Getting Userinformation with OADBID " + id + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase
+ // inner join userdatabase.onlineApplication oa where oa.hjid = :id
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ boolean quit = false;
+ for (UserDatabase user : nullGuard(allUsers)) {
+
+ for (String oa : user.getOnlineApplication()) {
+
+ if (oa.equals(String.valueOf(id))) {
+ result = user;
+ quit = true;
+ break;
+ }
+ }
+
+ if (quit) {
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param id
+ * @return
+ */
+ public UserDatabase getUserWithID(long id) {
+ logger.trace("Getting Userinformation with ID " + id + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.hjid = :id
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getHjid().equals(String.valueOf(id))) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param username
+ * @return
+ */
+ public UserDatabase getUserWithUserName(String username) {
+ logger.trace("Getting Userinformation with ID " + username + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.username = :username
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getUsername().equals(username)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @param bpkwbpk
+ * @return
+ */
+ public UserDatabase getUserWithUserBPKWBPK(String bpkwbpk) {
+ logger.trace("Getting Userinformation with ID " + bpkwbpk + " from database.");
+
+ // select userdatabase from UserDatabase userdatabase where userdatabase.bpk = :bpk
+ UserDatabase result = null;
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ if (user.getBpk() != null &&
+ user.getBpk().equals(bpkwbpk)) {
+ result = user;
+ break;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * @return
+ */
+ public List<UserDatabase> getAllNewUsers() {
+ List<UserDatabase> result = new ArrayList<UserDatabase>();
+ List<UserDatabase> allUsers = getAllUsers();
+
+ for (UserDatabase user : nullGuard(allUsers)) {
+ // TODO check result of query "... userdatabase.userRequestTokken is not null" if Tokken is null -> (null, "NULL", "", ... ?)
+ if (((user.getUserRequestTokken() == null || user.getUserRequestTokken().isEmpty() || user.getUserRequestTokken().equals("NULL")))
+ && (user.isIsAdminRequest()) && (user.isIsMailAddressVerified())) {
+ result.add(user);
+ }
+ }
+
+ if (result.size() == 0) {
+ logger.trace("No entries found.");
+ return null;
+ }
+
+ return result;
+ }
+
+
+ /**
+ * @param user
+ */
+ public void saveOrUpdate(UserDatabase user) throws MOADatabaseException{
+ List<UserDatabase> allUsers = getAllUsers();
+
+ if (allUsers == null) {
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue())) {
+ userconfig.setStringValue(UserDatabase.PREFIX + ".0." + el.getKey(),
+ el.getValue());
+ }
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + ".0." + el.getKey(), e);
+ }
+
+ }
+
+
+ } else {
+ boolean isUpdated = false;
+ for (UserDatabase dbUser : allUsers) {
+ if (dbUser.getHjid().equals(user.getHjid())) {
+ logger.debug("User is already stored -> start update process ...");
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue()))
+ userconfig.setStringValue(UserDatabase.PREFIX + "." + user.getHjid() + "." + el.getKey(),
+ el.getValue());
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + "." + user.getHjid() + "." + el.getKey(), e);
+ }
+
+ }
+ isUpdated = true;
+ break;
+ }
+ }
+ if (!isUpdated) {
+ try {
+ String[] temp = userconfig.findConfigurationId(UserDatabase.PREFIX + ".*." + UserDatabase.ISACTIVE);
+ int newID = KeyValueUtils.findNextFreeListCounter(temp, UserDatabase.PREFIX);
+
+ logger.debug("Add new User with ID:" + String.valueOf(newID));
+ Set<Entry<String, String>> keySet = user.getKeyValuePairs().entrySet();
+ for (Entry<String, String> el : keySet) {
+ try {
+ if (MiscUtil.isNotEmpty(el.getValue()))
+ userconfig.setStringValue(UserDatabase.PREFIX + "." + String.valueOf(newID) + "." + el.getKey(),
+ el.getValue());
+
+ } catch (ConfigurationException e) {
+ logger.error("Can not store Userentry with key: " + UserDatabase.PREFIX + "." + String.valueOf(newID) + "." + el.getKey(), e);
+ }
+
+ }
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+
+ }
+ }
+ }
+
+ try {
+ userconfig.synchronize();
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserDatabase FAILED", e);
+ }
+
+ }
+
+ /**
+ * @param dbuser
+ */
+ public void delete(UserDatabase dbuser) {
+ try {
+ logger.debug("Delete User with ID: " + dbuser.getHjid());
+ userconfig.deleteIds(UserDatabase.PREFIX + "." + dbuser.getHjid() + "*");
+ userconfig.synchronize();
+
+ } catch (ConfigurationException e) {
+ logger.error("Access UserManagement Database FAILED!", e);
+
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends Iterable<?>> T nullGuard(T item) {
+ if (item == null) {
+ return (T) Collections.emptyList();
+ } else {
+ return item;
+ }
+
+ }
+
+}
diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java
new file mode 100644
index 000000000..f894b510b
--- /dev/null
+++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/config/usermanagement/UserConfiguration.java
@@ -0,0 +1,6 @@
+package at.gv.egovernment.moa.id.configuration.config.usermanagement;
+
+
+public interface UserConfiguration {
+
+}