private async Task GetContainersForResourceId(ArchivesSpaceService activeService, int resourceId, List <EnumResponseItem> inputList)
        {
            var resourceManager = new ArchivesSpaceResourceManager(activeService);
            var containerList   = await resourceManager.GetAllTopContainersForResourceAsync(resourceId);

            await ProcessContainerList(activeService, containerList, inputList);
        }
        private async Task <CombinedBarcodeResponseItem> FormatTcEntryAsync(TopContainer container,
                                                                            ArchivesSpaceService activeService)
        {
            if (container == null)
            {
                return(new CombinedBarcodeResponseItem());
            }
            var location = await GetContainerLocationDisplayString(container, activeService);

            var resourceManager = new ArchivesSpaceResourceManager(activeService);

            var resource = await resourceManager.GetResourceByIdAsync(container.Collection.First().RefStrippedId);

            var hasSeries      = container.Series.Count > 0;
            var seriesDivision = hasSeries ? container.Series.First().Identifier.FormatSeriesDivision() : "";
            var seriesTitle    = hasSeries ? container.Series.First().DisplayString : "";
            var tcEntry        = new CombinedBarcodeResponseItem
            {
                Origin         = "ArchivesSpace",
                Author         = "",
                BoxNumber      = Helpers.FormatBoxText(container.Indicator),
                CallNumber     = Helpers.FormatCallNumber(container.Collection.First().Identifier),
                Location       = location,
                ResourceTitle  = container.Collection.First().DisplayString,
                ResourceId     = container.Collection.First().RefStrippedId,
                Handle         = resource.EadLocation, //This seems to be null pretty often even if EadId (not a URL) is not
                Restriction    = (container.Restricted ? "Y" : "N"),
                SeriesDivision = seriesDivision,
                SeriesTitle    = seriesTitle
            };

            return(tcEntry);
        }
        private async Task ProcessContainerList(ArchivesSpaceService activeService, ICollection <TopContainer> containerList, List <EnumResponseItem> inputList)
        {
            if (containerList == null || containerList.Count < 1)
            {
                return;
            }
            foreach (var topContainer in containerList)
            {
                var locationTask = GetContainerLocationDisplayString(topContainer, activeService);
                var physDescTask = GetContainerProfileDisplayString(topContainer, activeService);
                await Task.WhenAll(locationTask, physDescTask);

                var responseItem = new EnumResponseItem
                {
                    BoxNumber           = Helpers.FormatBoxText(topContainer.Indicator),
                    CallNumber          = Helpers.GetCallNumberFromTopContainer(topContainer),
                    ItemBarcode         = topContainer.Barcode,
                    Location            = locationTask.Result,
                    PhysicalDescription = physDescTask.Result,
                    Restricted          = topContainer.Restricted ? "Y" : "N",
                    TopContainerId      = topContainer.Id
                };
                inputList.Add(responseItem);
            }
        }
        private async Task  GetContainersForSeriesId(ArchivesSpaceService activeService, int seriesId, List <EnumResponseItem> inputList)
        {
            var archivalObjectManager = new ArchivesSpaceArchivalObjectManager(activeService);
            var containerList         = await archivalObjectManager.GetAllTopContainersForIdAsync(seriesId);

            await ProcessContainerList(activeService, containerList, inputList);
        }
示例#5
0
        public async Task <ArchivesSpaceService> GetArchivesSpaceServiceAsync(string siteName)
        {
            if (_siteMapping.ContainsKey(siteName))
            {
                siteName = _siteMapping[siteName];
            }
            if (_serviceList.Exists(x => x.ActiveRepository.Name == siteName))
            {
                return(_serviceList.FirstOrDefault(x => x.ActiveRepository.Name == siteName));
            }
            else
            {
                try
                {
                    var service = new ArchivesSpaceService(_aSpaceConnectionHandler);
                    await service.SetActiveRepositoryAsync(siteName);

                    _serviceList.Add(service);
                    return(service);
                }
                catch (InvalidOperationException ex)
                {
                    //this means a wrong repository code was given
                    throw;
                }
            }
        }
        private async Task <string> GetContainerProfileDisplayString(TopContainer container,
                                                                     ArchivesSpaceService activeService)
        {
            if (container.ContainerProfile == null)
            {
                return("");
            }
            var profileId = container.ContainerProfile.RefStrippedId;
            var profile   = await activeService.GetContainerProfileAsync(profileId);

            return(profile.Name); //preferred to display string due to brevity
        }
        public static async Task TestRepositories(ArchivesSpaceService aspaceService)
        {
            Console.WriteLine("All repositories: ");
            var allRepos = await aspaceService.GetAllRepositoriesAsync();

            Console.WriteLine(Serialize(allRepos));

            Console.WriteLine("Set repository to BRBL by name");
            aspaceService.SetActiveRepository("BRBL");
            Console.WriteLine(Serialize(aspaceService.ActiveRepository));

            Console.WriteLine("Now set repository to MSSA by ID");
            aspaceService.SetActiveRepository(12);
            Console.WriteLine(Serialize(aspaceService.ActiveRepository));
        }
        public static async Task <List <Tuple <string, long> > > PrintLocations(ArchivesSpaceService aspaceService)
        {
            var sw = new Stopwatch();

            sw.Start();
            Console.WriteLine("Getting all locations:");
            Console.WriteLine(Serialize(await aspaceService.GetAllLocationsAsync()));
            sw.Stop();
            var res        = new Tuple <string, long>("Retrieve all locations", sw.ElapsedMilliseconds);
            var resultList = new List <Tuple <string, long> > {
                res
            };

            return(resultList);
        }
        public static async Task TestAccessions(ArchivesSpaceService aspaceService)
        {
            Console.WriteLine("Getting all accessions:");
            var accessionManager = new ArchivesSpaceAccessionManager(aspaceService);
            var accessionList    = await accessionManager.GetAllAccessionIdsAsync();

            Console.WriteLine(Serialize(accessionList));

            Console.WriteLine("Get a random accession from the list:");
            var randIntGen = new Random();
            var randInt    = randIntGen.Next(0, accessionList.Count - 1);

            Console.WriteLine("Getting accession with ID [ {0} ]", accessionList[randInt]);
            var singleAccession = await accessionManager.GetAccessionByIdAsync(accessionList[randInt]);

            Console.WriteLine(Serialize(singleAccession));
        }
        static async Task MainAsync()
        {
            //Console.WriteLine("Press 'enter' to begin");
            //Console.ReadLine();
            var resultsList = new List <Tuple <string, long> >();
            var sw          = new Stopwatch();

            sw.Start();
            var aspaceService = new ArchivesSpaceService();

            aspaceService.SetActiveRepository("MSSA");
            //aspaceService.SetActiveRepository(19);

            //await TestRepositories(aspaceService);
            //await TestAccessions(aspaceService);
            //await TestResources(aspaceService);
            //await TestResources(aspaceService, 5240);

            //resultsList.AddRange(await TestArchivalObjects(aspaceService, true, 0));

            var targetId = 2087993; //A series-level KSS object resource 5240

            //var targetId = 1954935; //Lindbergh MS325 - correspondence 1911-1974 is a large series resource 4817
            //var targetId = 1173259; //series-level object from sizer papers MS 453, no id
            //var targetId = 2312889; //Test archival object for restrictions
            //var targetId = 2088139; //a bottom level KSS object
            //var targetId = 1204274; //MS1797 inventory, tiny

            //var targetId = 2312904; //added by Mark to test container searching resource 5749 repo 19 - has ID
            //var targetId = 2312903; //added by Mark to test container searching resource 5749 repo 19 - no ID
            resultsList.AddRange(await TestArchivalObjects(aspaceService, false, targetId));
            //resultsList.AddRange(await PrintLocations(aspaceService));

            sw.Stop();
            foreach (var resultEntry in resultsList)
            {
                Console.WriteLine("Task [ {0} ] completed in [ {1} ] ms", resultEntry.Item1, resultEntry.Item2);
            }
            Console.WriteLine("Finished, total execution: [ {0} ] ms", sw.ElapsedMilliseconds);
            Console.ReadLine();
        }
示例#11
0
        private async Task <BarcodeResponseItem> FormatEntry(TopContainer container,
                                                             ArchivesSpaceService activeService)
        {
            if (container == null)
            {
                return(new BarcodeResponseItem());
            }
            var location = await GetContainerLocationDisplayString(container, activeService);

            var tcEntry = new BarcodeResponseItem
            {
                Author     = "",
                BoxNumber  = Helpers.FormatBoxText(container.Indicator),
                CallNumber = Helpers.FormatCallNumber(container.Collection.First().Identifier),
                Location   = location,
                Title      = container.Collection.First().DisplayString,
                ResourceId = container.Collection.First().RefStrippedId
            };

            return(tcEntry);
        }
        public static async Task TestResources(ArchivesSpaceService aspaceService, int resourceId)
        {
            var randIntGen = new Random();

            Console.WriteLine("Getting all resources:");
            var resourceManager = new ArchivesSpaceResourceManager(aspaceService);


            if (resourceId == 0)
            {
                Console.WriteLine("No resource specified, fetching random from list of all resources: ");
                var resourceList = await resourceManager.GetAllResourceIdsAsync();

                Console.WriteLine(Serialize(resourceList));

                var randInt = randIntGen.Next(0, resourceList.Count - 1);

                resourceId = resourceList[randInt];
                Console.WriteLine("ID [ {0} ] selected at random", resourceId);
            }
            Console.WriteLine("Getting resource with ID [ {0} ]", resourceId);
            var singleResource = await resourceManager.GetResourceByIdAsync(resourceId);

            Console.WriteLine(Serialize(singleResource));

            Console.WriteLine("Get the top level series archival objects for this resource:");
            var seriesCollection = await resourceManager.GetTopLevelSeriesArchivalObjects(resourceId);

            Console.WriteLine(Serialize(seriesCollection));


            Console.WriteLine("Fetch the small tree of this resource: ");
            var smallTree = await resourceManager.GetSmallResourceTreeAsync(resourceId);

            Console.WriteLine(Serialize(smallTree));
        }
 public AspaceHelpers(ArchivesSpaceService siteServiceHandler)
 {
     _siteServiceHandler = siteServiceHandler;
 }
示例#14
0
        private async Task <string> GetContainerLocationDisplayString(TopContainer container, ArchivesSpaceService activeService)
        {
            if (container == null || container.ContainerLocations.Count < 1)
            {
                return("");
            }
            var locId    = container.ContainerLocations.First().RefStrippedId;
            var location = await activeService.GetLocationAsync(locId);

            return(location.Title);
        }
 public static async Task TestResources(ArchivesSpaceService aspaceService)
 {
     await TestResources(aspaceService, 0);
 }
示例#16
0
 protected ArchivesSpaceObjectManagerBase(ArchivesSpaceService activeService)
 {
     ArchivesSpaceService = activeService;
 }
        public static async Task <List <Tuple <string, long> > > TestArchivalObjects(ArchivesSpaceService aspaceService, bool getAllObjects, int targetId = 0)
        {
            var randIntGen = new Random();
            var sw         = new Stopwatch();

            sw.Start();
            var returnList = new List <Tuple <string, long> >();

            if (targetId == 0 && !getAllObjects)
            {
                throw new InvalidOperationException("you must get all objects in order to select a random one");
            }

            var archivalObjectManager = new ArchivesSpaceArchivalObjectManager(aspaceService);

            if (getAllObjects)
            {
                sw.Restart();
                Console.WriteLine("Getting all archival objects:");
                var archivalObjectList = await archivalObjectManager.GetAllArchivalObjectIdsAsync();

                returnList.Add(new Tuple <string, long>(String.Format("Retrieve all [ {0} ] archival objects", archivalObjectList.Count), sw.ElapsedMilliseconds));
                Console.WriteLine(Serialize(archivalObjectList));
                if (targetId == 0)
                {
                    Console.WriteLine("Get a random archival object from the list:");
                    var randInt = randIntGen.Next(0, archivalObjectList.Count - 1);
                    targetId = archivalObjectList[randInt];
                }
            }

            /*
             * sw.Restart();
             * var singleArchivalObject = await archivalObjectManager.GetArchivalObjectByIdAsync(targetId);
             * returnList.Add(new Tuple<string, long>(String.Format("Retrieve single archival object with ID [ {0} ]", targetId), sw.ElapsedMilliseconds));
             * Console.WriteLine(Serialize(singleArchivalObject));
             *
             * sw.Restart();
             * Console.WriteLine("Get object's children:");
             * var archivalObjectChildren = await archivalObjectManager.GetArchivalObjectChildrenAsync(targetId);
             * returnList.Add(new Tuple<string, long>(String.Format("Get immediate children of archival object [ {0} ]", targetId), sw.ElapsedMilliseconds));
             * Console.WriteLine(Serialize(archivalObjectChildren));
             *
             * sw.Restart();
             * Console.WriteLine("And get all instances associated with that object:");
             * var archivalObjectInstances = await archivalObjectManager.GetAllInstancesForIdAsync(targetId);
             * returnList.Add(new Tuple<string, long>(String.Format("Get all [ {0} ] instances assocaited with archival object [ {1} ]", archivalObjectInstances.Count, targetId), sw.ElapsedMilliseconds));
             * Console.WriteLine(Serialize(archivalObjectInstances));
             *
             * sw.Restart();
             * Console.WriteLine("And get all containers associated with that object:");
             * var archivalObjectContainers = await archivalObjectManager.GetAllContainersForIdAsync(targetId);
             * sw.Stop();
             * int subContainerCount = 0;
             * foreach (var archivalObjectContainer in archivalObjectContainers)
             * {
             *  subContainerCount = subContainerCount + archivalObjectContainer.SubContainers.Count;
             * }
             * returnList.Add(new Tuple<string, long>(String.Format("Get all [ {0} ] containers and [ {1} ] subcontainers associated with object [ {2} ]", archivalObjectContainers.Count, subContainerCount, targetId), sw.ElapsedMilliseconds));
             * Console.WriteLine(Serialize(archivalObjectContainers));
             */
            sw.Restart();
            Console.WriteLine("And get all top containers associated with that object:");
            var archivalObjectTopContainers = await archivalObjectManager.GetAllTopContainersForIdAsync(targetId);

            returnList.Add(new Tuple <string, long>(String.Format("Get all [ {0} ] top containers associated with object [ {1} ]", archivalObjectTopContainers.Count, targetId), sw.ElapsedMilliseconds));
            Console.WriteLine(Serialize(archivalObjectTopContainers));

            return(returnList);
        }