/// <summary>
        /// Performs input validation and gets activity libraries that match with search 
        /// parameters without including assemblies.
        /// </summary>
        /// <param name="request">GetLibraryAndActivitiesDC.</param>
        /// <returns>GetLibraryAndActivitiesDC object.</returns>
        public static GetAllActivityLibrariesReplyDC GetActivityLibrariesWithoutDlls(GetAllActivityLibrariesRequestDC request)
        {
            ActivityLibraryDC newRequest = null;
            if (request != null)
            {
                newRequest = new ActivityLibraryDC();
                newRequest.Name = null;
                newRequest.VersionNumber = null;
                newRequest.Incaller = request.Incaller;
                newRequest.IncallerVersion = request.IncallerVersion;
            }

            GetAllActivityLibrariesReplyDC reply = new GetAllActivityLibrariesReplyDC();

            try
            {
                // Validates the input and throws ValidationException for any issues found.
                newRequest.ValidateGetRequest();

                // Gets the activity libraries that match search criteria.
                reply.List = ActivityLibraryRepositoryService.GetActivityLibraries(newRequest, false);
            }
            catch (ValidationException e)
            {
                e.HandleException();
            }
            catch (DataAccessException e)
            {
                e.HandleException();
            }

            return reply;
        }
        /// <summary>
        /// Verify GET ALL FROM etblActivityLibraries Table for invalid request object
        /// </summary>
        private void VerifyGetAllActivityLibrariesForInvalidRequestObject()
        {
            getAllActivityLibrariesRequestDC = new GetAllActivityLibrariesRequestDC();
            getAllActivityLibrariesReplyDC = null;

            getAllActivityLibrariesReplyDC = devBranchProxy.GetAllActivityLibraries(getAllActivityLibrariesRequestDC);
        }
        /// <summary>
        /// Verify GET ALL FROM etblActivityLibraries Table
        /// </summary>
        private void GetAllActivityLibraries()
        {
            getAllActivityLibrariesRequestDC = new GetAllActivityLibrariesRequestDC();
            getAllActivityLibrariesReplyDC = null;

            //Populate the request data
            getAllActivityLibrariesRequestDC.Incaller = IN_CALLER;
            getAllActivityLibrariesRequestDC.IncallerVersion = IN_CALLER_VERSION;
            getAllActivityLibrariesRequestDC.InInsertedByUserAlias = USER;
            getAllActivityLibrariesRequestDC.InUpdatedByUserAlias = USER;

            getAllActivityLibrariesReplyDC = devBranchProxy.GetAllActivityLibraries(getAllActivityLibrariesRequestDC);

            Assert.IsNotNull(getAllActivityLibrariesReplyDC, "getAllActivityLibrariesReplyDC is null");
            Assert.IsNotNull(getAllActivityLibrariesReplyDC.List, "getAllActivityLibrariesReplyDC.List is null");
            Assert.AreNotEqual(0, getAllActivityLibrariesReplyDC.List.Count, "getAllActivityLibrariesReplyDC.List is empty");
            Assert.IsTrue(getAllActivityLibrariesReplyDC.List.Count > 1);  // Expecting many items to return.  Better to perform precise initialization and assert the expected count dynamically.
        }
 /// <summary>
 /// Get ActivityLibrary row(s)
 /// </summary>
 /// <param name="request">request object</param>
 /// <returns>ActivityLibraryDC object</returns>
 public GetAllActivityLibrariesReplyDC GetAllActivityLibraries(GetAllActivityLibrariesRequestDC request)
 {
     GetAllActivityLibrariesReplyDC reply = null;
     try
     {
         reply = ActivityLibraryBusinessService.GetActivityLibrariesWithoutDlls(request);
     }
     catch (BusinessException e)
     {
         e.HandleException();
     }
     catch (Exception e)
     {
         // Handles unhandled exception.
         e.HandleException();
     }
     return reply;
 }
        /// <summary>
        /// The initialize.
        /// </summary>
        public void LoadLiveData(IWorkflowsQueryService client)
        {
            GetAllActivityLibrariesReplyDC reply;

            // gets the version for an ActivityAssemblyItem, or an empty string if it is null
            Func<ActivityAssemblyItem, string> getVersion = item => null == item.Version ? string.Empty : item.Version.ToString();

            // checks to see if an ActivityAssemblyItem is already in the ActivityAssemblyItemCollection
            Func<ActivityLibraryDC, bool> isAlreadyInCollection =
                activityLibrary => ActivityAssemblyItemCollection
                                       .Any(activityAssemblyItem => activityAssemblyItem.Name == activityLibrary.Name
                                                                    && getVersion(activityAssemblyItem) == activityLibrary.VersionNumber);

            // Load from local caching
            Caching
                .ActivityAssemblyItems
                .ToList()
                .ForEach(activityAssemblyItem => ActivityAssemblyItemCollection.Add(activityAssemblyItem));

            // Get the list of libraries that are on the server
            try
            {
                var request = new GetAllActivityLibrariesRequestDC
                             {
                                 Incaller = Environment.UserName,
                                 IncallerVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString()
                             };

                reply = client.GetAllActivityLibraries(request);
            }
            catch (FaultException<ServiceFault> ex)
            {
                throw new CommunicationException(ex.Detail.ErrorMessage);
            }
            catch (FaultException<ValidationFault> ex)
            {
                throw new BusinessValidationException(ex.Detail.ErrorMessage);
            }
            catch (Exception ex)
            {
                throw new CommunicationException(ex.Message);
            }

            // Require a pre-check since the list is not reliably instantiated
            // by the WCF service
            if ((null != reply) && (null != reply.List))
            {
                // Each library which isn't already locally cached
                // should show up on the Select screen as a library
                // available on the server
                reply
                    .List
                    .Where(activityLibrary => !string.IsNullOrEmpty(activityLibrary.Name)
                                               && activityLibrary.HasExecutable
                                               && !isAlreadyInCollection(activityLibrary))
                    .ToList()
                    .ForEach(activityLibrary =>
                            {
                                var item = DataContractTranslator.ActivityLibraryDCToActivityAssemblyItem(activityLibrary);

                                item.CachingStatus = CachingStatus.Server;
                                ActivityAssemblyItemCollection.Add(item);
                            });
            }
        }