/// <summary>
        /// Adds a user into the data layer.
        /// </summary>
        /// <param name="userIdentifier">A unique identifier for the user.</param>
        public void AddUser(String userIdentifier)
        {
            // Throw an exception is the user identifier is blank
            if (userIdentifier.Trim() == "")
            {
                throw new ArgumentException("Parameter 'userIdentifier' cannot be blank.", "userIdentifier");
            }

            // Throw an exception if the user identifier already exists in the data repository
            if (userDataRepository.ContainsKey(userIdentifier) == true)
            {
                throw new ArgumentException("User identifier '" + userIdentifier + "' already exists.", "userIdentifier");
            }

            OraclePermissionGeneratorDataInterfaceLayer userDataInterfaceLayer = new OraclePermissionGeneratorDataInterfaceLayer();
            // Setup default object type to permission maps
            // TODO: Eventually the ability to modify the object type to permission maps should be exposed through the web service API
            userDataInterfaceLayer.AddObjectTypeToPermissionMap("Table", "SELECT");
            userDataInterfaceLayer.AddObjectTypeToPermissionMap("Table", "INSERT");
            userDataInterfaceLayer.AddObjectTypeToPermissionMap("Table", "UPDATE");
            userDataInterfaceLayer.AddObjectTypeToPermissionMap("Table", "DELETE");
            userDataInterfaceLayer.AddObjectTypeToPermissionMap("View", "SELECT");
            userDataInterfaceLayer.AddObjectTypeToPermissionMap("Stored Procedure", "EXECUTE");

            userDataRepository.Add(userIdentifier, userDataInterfaceLayer);
        }
 /// <summary>
 /// Creates PermissionScriptGenerator object from the inputted OraclePermissionGeneratorDataInterfaceLayer.
 /// </summary>
 /// <param name="dataInterfaceLayer">The OraclePermissionGeneratorDataInterfaceLayer to use to build the PermissionScriptGenerator</param>
 /// <returns>A PermissionScriptGenerator object.</returns>
 protected PermissionScriptGenerator BuildPermissionScriptGenerator(OraclePermissionGeneratorDataInterfaceLayer dataInterfaceLayer)
 {
     // Constructor for PermissionScriptGenerator requires GenerateableOracleObjectPermissionSetCollection, but this is not directly available from the inputted data interface layer, hence need to create it
     GenerateableOracleObjectPermissionSetCollection collection = new GenerateableOracleObjectPermissionSetCollection();
     foreach (IGenerateableOracleObjectPermissionSet currentPermissionSet in dataInterfaceLayer.GetObjects())
     {
         collection.Add(currentPermissionSet);
     }
     PermissionScriptGenerator permissionScriptGenerator = new PermissionScriptGenerator(dataInterfaceLayer.GetMasterRoleToUserMapCollection(), collection);
     return permissionScriptGenerator;
 }