コード例 #1
0
ファイル: Execution.cs プロジェクト: maurbone/DocSuitePA
        private async Task CreateBiblosDSArchiveAsync(UDSEntity uds, UDSStorageFacade udsStorageFacade, bool isMainDocument = false)
        {
            try
            {
                await udsStorageFacade.GenerateStorageAsync(async (udsArchive, attributeGroups, attributeModes) =>
                {
                    BiblosDS.BiblosDSManagement.AttributeMode attributeMode_ReadOnly          = attributeModes.Single(f => f.IdMode == 0);
                    BiblosDS.BiblosDSManagement.AttributeMode attributeMode_ModifyAlways      = attributeModes.Single(f => f.IdMode == 3);
                    BiblosDS.BiblosDSManagement.AttributeMode attributeMode_ModifyNotArchived = attributeModes.Single(f => f.IdMode == 2);

                    BiblosDS.BiblosDSManagement.AttributeGroup attributeGroup_chain   = attributeGroups.SingleOrDefault(a => a.GroupType.Equals(BiblosDS.BiblosDSManagement.AttributeGroupType.Chain));
                    BiblosDS.BiblosDSManagement.AttributeGroup attributeGroup_default = attributeGroups.SingleOrDefault(a => a.GroupType.Equals(BiblosDS.BiblosDSManagement.AttributeGroupType.Undefined));

                    await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_default, attributeMode_ReadOnly, AttributeHelper.AttributeName_Signature, "System.String", true);
                    await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_default, attributeMode_ReadOnly, AttributeHelper.AttributeName_Filename, "System.String", true);
                    await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_default, attributeMode_ModifyAlways, AttributeHelper.AttributeName_PrivacyLevel, "System.Int64", false);
                    await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_default, attributeMode_ModifyAlways, AttributeHelper.AttributeName_SignModels, "System.String", false);

                    if (isMainDocument)
                    {
                        await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_chain, attributeMode_ModifyNotArchived, "Subject", "System.String", false);
                        await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_chain, attributeMode_ReadOnly, "Year", "System.Int64", true);
                        await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_chain, attributeMode_ReadOnly, "Number", "System.Int64", true);
                        await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_chain, attributeMode_ReadOnly, "Date", "System.DateTime", true, isMainDate: true);

                        foreach (Metadata metadata in uds.MetaData)
                        {
                            await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_chain,
                                                                             metadata.Required ? attributeMode_ReadOnly : attributeMode_ModifyNotArchived,
                                                                             metadata.PropertyName, metadata.BiblosPropertyType.FullName, metadata.Required);
                        }
                    }
                }, BiblosDS_Storage_MainPath, BiblosDS_Storage_StorageType, isMainDocument);
            }
            catch (Exception ex)
            {
                _logger.WriteError(ex, LogCategories);
                throw ex;
            }
        }
コード例 #2
0
        public async Task <BiblosDS.BiblosDSManagement.Attribute> GenerateBiblosDSAttribute(BiblosDS.BiblosDSManagement.Archive archive,
                                                                                            BiblosDS.BiblosDSManagement.AttributeGroup attributeGroup, BiblosDS.BiblosDSManagement.AttributeMode attributeMode,
                                                                                            string attributeName, string attributeType, bool isRequired, bool isMainDate = false)
        {
            BiblosDS.BiblosDSManagement.Attribute attribute = new BiblosDS.BiblosDSManagement.Attribute
            {
                IdAttribute               = Guid.NewGuid(),
                Archive                   = archive,
                AttributeGroup            = attributeGroup,
                AttributeType             = attributeType,
                Disabled                  = false,
                IsAutoInc                 = false,
                IsChainAttribute          = attributeGroup.GroupType == BiblosDS.BiblosDSManagement.AttributeGroupType.Chain,
                IsEnumerator              = false,
                IsMainDate                = isMainDate,
                IsRequired                = isRequired,
                IsRequiredForPreservation = false,
                IsSectional               = false,
                IsUnique                  = false,
                IsVisible                 = true,
                IsVisibleForUser          = true,
                Name = attributeName,
                Mode = attributeMode
            };
            _logger.WriteInfo(new LogMessage(string.Concat("Creating biblosds attribute ", attribute.Name)), LogCategories);
            await _administrationClient.AddAttributeAsync(attribute);

            return(attribute);
        }
コード例 #3
0
ファイル: Execution.cs プロジェクト: maurbone/DocSuitePA
        private async Task UpdateArchiveAsync(UDSEntity uds, UDSStorageFacade udsStorageFacade, bool isMainDocument = false)
        {
            _logger.WriteInfo(new LogMessage("starting update archive"), LogCategories);

            if (udsStorageFacade.UDS.Model.Documents != null)
            {
                IList <BiblosDS.BiblosDSManagement.Archive> archives = _administrationClient.GetArchives().ToList();
                string miscellaneousArchiveName = string.Concat("Archive_UDS_Miscellaneous_", udsStorageFacade.UDS.Model.Title);
                BiblosDS.BiblosDSManagement.Archive miscellaneousArchive = new BiblosDS.BiblosDSManagement.Archive
                {
                    Name = miscellaneousArchiveName
                };

                if (udsStorageFacade.UDS.Model.Documents.Document != null)
                {
                    BiblosDS.BiblosDSManagement.Archive udsArchive = archives.SingleOrDefault(a => a.Name.Equals(udsStorageFacade.UDS.Model.Documents.Document.BiblosArchive));
                    if (udsArchive == null)
                    {
                        if (udsStorageFacade.UDS.Model.Documents.Document.CreateBiblosArchive)
                        {
                            await CreateBiblosDSArchiveAsync(uds, udsStorageFacade, true);

                            _logger.WriteInfo(new LogMessage("Archive created successfully"), LogCategories);
                        }
                        else
                        {
                            _logger.WriteError(new LogMessage(string.Format("Archive {0} to update not found", udsStorageFacade.UDS.Model.Documents.Document.BiblosArchive)), LogCategories);
                        }
                    }
                    else
                    {
                        BiblosDS.BiblosDSManagement.Attribute[]            attributes                      = _administrationClient.GetAttributesFromArchive(udsArchive.IdArchive);
                        Task <BiblosDS.BiblosDSManagement.AttributeMode[]> task_attributeModes             = _administrationClient.GetAttributeModesAsync();
                        BiblosDS.BiblosDSManagement.AttributeMode[]        attributeModes                  = await task_attributeModes;
                        BiblosDS.BiblosDSManagement.AttributeMode          attributeMode_ReadOnly          = attributeModes.Single(f => f.IdMode == 0);
                        BiblosDS.BiblosDSManagement.AttributeMode          attributeMode_ModifyAlways      = attributeModes.Single(f => f.IdMode == 3);
                        BiblosDS.BiblosDSManagement.AttributeMode          attributeMode_ModifyNotArchived = attributeModes.Single(f => f.IdMode == 2);

                        Metadata[] addedMetadata = uds.MetaData.Where(m => !attributes.Any(a => a.Name.Equals(m.PropertyName))).ToArray();

                        string[] requiredAttributes = { AttributeHelper.AttributeName_Signature, AttributeHelper.AttributeName_Filename,  AttributeHelper.AttributeName_UDSSubject,
                                                        AttributeHelper.AttributeName_UDSYear,   AttributeHelper.AttributeName_UDSNumber, AttributeHelper.AttributeName_Date, AttributeHelper.AttributeName_SignModels };
                        BiblosDS.BiblosDSManagement.Attribute[] dynamicAttributes   = attributes.Where(a => !requiredAttributes.Any(r => r.Equals(a.Name))).ToArray();
                        BiblosDS.BiblosDSManagement.Attribute[] deprecatedAttribute = dynamicAttributes.Where(a => !uds.MetaData.Any(m => m.PropertyName.Equals(a.Name))).ToArray();

                        //creo i nuovi attributi aggiunti all'archivio
                        foreach (Metadata metadata in addedMetadata)
                        {
                            BiblosDS.BiblosDSManagement.Attribute      attribute            = attributes.FirstOrDefault(a => a.AttributeGroup.GroupType == BiblosDS.BiblosDSManagement.AttributeGroupType.Chain);
                            BiblosDS.BiblosDSManagement.AttributeGroup attributeGroup_chain = attribute.AttributeGroup;
                            await udsStorageFacade.GenerateBiblosDSAttribute(udsArchive, attributeGroup_chain, attributeMode_ModifyAlways,
                                                                             metadata.PropertyName, metadata.BiblosPropertyType.FullName, metadata.Required);
                        }
                        //disabilito gli attributi tolti dall'archivio
                        foreach (BiblosDS.BiblosDSManagement.Attribute item in deprecatedAttribute)
                        {
                            item.IsRequired       = false;
                            item.IsVisible        = false;
                            item.IsVisibleForUser = false;
                            item.Mode             = attributeMode_ReadOnly;
                            _logger.WriteInfo(new LogMessage(string.Concat("Updating biblosds attribute ", item.Name)), LogCategories);
                            await _administrationClient.UpdateAttributeAsync(item);
                        }
                    }
                }

                if (udsStorageFacade.UDS.Model.Documents.DocumentAttachment != null && udsStorageFacade.UDS.Model.Documents.DocumentAttachment.CreateBiblosArchive)
                {
                    BiblosDS.BiblosDSManagement.Archive udsAttachmentArchive = archives.SingleOrDefault(a => a.Name.Equals(udsStorageFacade.UDS.Model.Documents.DocumentAttachment.BiblosArchive));

                    if (udsAttachmentArchive == null)
                    {
                        udsStorageFacade.UDS.Model.Documents.DocumentAttachment.BiblosArchive = miscellaneousArchiveName;
                        if (!archives.Any(a => a.Name.Equals(miscellaneousArchiveName)))
                        {
                            await CreateBiblosDSArchiveAsync(uds, udsStorageFacade);

                            archives.Add(miscellaneousArchive);
                            _logger.WriteInfo(new LogMessage("Archive Miscellaneous created successfully"), LogCategories);
                        }
                    }
                }

                if (udsStorageFacade.UDS.Model.Documents.DocumentAnnexed != null && udsStorageFacade.UDS.Model.Documents.DocumentAnnexed.CreateBiblosArchive)
                {
                    BiblosDS.BiblosDSManagement.Archive udsAnnexedArchive = archives.SingleOrDefault(a => a.Name.Equals(udsStorageFacade.UDS.Model.Documents.DocumentAnnexed.BiblosArchive));

                    if (udsAnnexedArchive == null)
                    {
                        udsStorageFacade.UDS.Model.Documents.DocumentAnnexed.BiblosArchive = miscellaneousArchiveName;
                        if (!archives.Any(a => a.Name.Equals(miscellaneousArchiveName)))
                        {
                            await CreateBiblosDSArchiveAsync(uds, udsStorageFacade);

                            archives.Add(miscellaneousArchive);
                            _logger.WriteInfo(new LogMessage("Archive Miscellaneous created successfully"), LogCategories);
                        }
                    }
                }

                if ((udsStorageFacade.UDS.Model.Documents.Document != null && udsStorageFacade.UDS.Model.Documents.Document.DematerialisationEnabled) ||
                    (udsStorageFacade.UDS.Model.Documents.DocumentAttachment != null && udsStorageFacade.UDS.Model.Documents.DocumentAttachment.DematerialisationEnabled) ||
                    (udsStorageFacade.UDS.Model.Documents.DocumentAnnexed != null && udsStorageFacade.UDS.Model.Documents.DocumentAnnexed.DematerialisationEnabled))
                {
                    if (!archives.Any(a => a.Name.Equals(miscellaneousArchiveName)))
                    {
                        await CreateBiblosDSArchiveAsync(uds, udsStorageFacade);

                        archives.Add(miscellaneousArchive);
                        _logger.WriteInfo(new LogMessage("Archive Miscellaneous created successfully"), LogCategories);
                    }

                    if (udsStorageFacade.UDS.Model.Documents.DocumentDematerialisation == null || !udsStorageFacade.UDS.Model.Documents.DocumentDematerialisation.Instances.Any())
                    {
                        udsStorageFacade.AddDocumentDematerialisation(udsStorageFacade.UDS.Model.Documents, miscellaneousArchiveName);
                    }
                }
            }
        }
コード例 #4
0
        public async Task GenerateStorageAsync(Func <BiblosDS.BiblosDSManagement.Archive, BiblosDS.BiblosDSManagement.AttributeGroup[], BiblosDS.BiblosDSManagement.AttributeMode[], Task> funcMapBiblosAttributes,
                                               string StorageMainPath, string StorageType, bool isMainDocument = false)
        {
            try
            {
                _logger.WriteInfo(new LogMessage("Creating biblosds archives"), LogCategories);
                Task <BiblosDS.BiblosDSManagement.StorageType[]>   task_storagesTypes  = _administrationClient.GetStoragesTypeAsync();
                Task <BiblosDS.BiblosDSManagement.AttributeMode[]> task_attributeModes = _administrationClient.GetAttributeModesAsync();
                BiblosDS.BiblosDSManagement.Storage        storage                = new BiblosDS.BiblosDSManagement.Storage();
                BiblosDS.BiblosDSManagement.StorageArea    storageArea            = new BiblosDS.BiblosDSManagement.StorageArea();
                BiblosDS.BiblosDSManagement.Archive        archive                = new BiblosDS.BiblosDSManagement.Archive();
                BiblosDS.BiblosDSManagement.AttributeGroup attributeGroup_default = new BiblosDS.BiblosDSManagement.AttributeGroup();
                BiblosDS.BiblosDSManagement.AttributeGroup attributeGroup_chain   = new BiblosDS.BiblosDSManagement.AttributeGroup();

                archive.IdArchive              = Guid.NewGuid();
                archive.Name                   = isMainDocument ? string.Concat("Archive_UDS_", Builder.UDSName) : string.Concat("Archive_UDS_Miscellaneous_", Builder.UDSName);
                archive.AuthorizationAssembly  = string.Empty;
                archive.AuthorizationClassName = string.Empty;
                archive.AutoVersion            = false;
                archive.EnableSecurity         = false;
                archive.FiscalDocumentType     = string.Empty;
                archive.FullSignEnabled        = false;
                archive.IsLegal                = false;
                archive.LastIdBiblos           = 0;
                archive.LowerCache             = 512 * (1024 * 1024);
                archive.MaxCache               = 1024 * (1024 * 1024);
                archive.PathCache              = string.Empty;
                archive.PathPreservation       = string.Empty;
                archive.PathTransito           = string.Empty;
                archive.PdfConversionEmabled   = false;
                archive.ThumbnailEmabled       = false;
                archive.TransitoEnabled        = false;
                archive.UpperCache             = 768 * (1024 * 1024);
                _logger.WriteInfo(new LogMessage(string.Concat("Creating biblosds archive ", archive.Name)), LogCategories);
                archive.IdArchive = await _administrationClient.AddArchiveAsync(archive);

                storage.IdStorage              = Guid.NewGuid();
                storage.IsVisible              = true;
                storage.AuthenticationKey      = string.Empty;
                storage.AuthenticationPassword = string.Empty;
                storage.EnableFulText          = false;
                storage.MainPath             = Path.Combine(StorageMainPath, string.Concat("UDS", Builder.UDSName.Replace(" ", ""), isMainDocument ? null : "Miscellaneous"));
                storage.Name                 = isMainDocument ? string.Concat("Storage_UDS_", Builder.UDSName) : string.Concat("Storage_UDS_Miscellaneous_", Builder.UDSName);
                storage.StorageRuleAssembly  = string.Empty;
                storage.StorageRuleClassName = string.Empty;
                BiblosDS.BiblosDSManagement.StorageType[] storagesTypes = await task_storagesTypes;
                storage.StorageType = storagesTypes.Single(f => f.Type.Equals(StorageType, StringComparison.InvariantCultureIgnoreCase));
                _logger.WriteInfo(new LogMessage(string.Concat("Creating biblosds storage name ", storage.Name)), LogCategories);
                await _administrationClient.AddStorageAsync(storage);

                BiblosDS.BiblosDSManagement.Archive[] archives   = _administrationClient.GetArchives();
                BiblosDS.BiblosDSManagement.Storage[] storages   = _administrationClient.GetAllStorages();
                BiblosDS.BiblosDSManagement.Archive   udsArchive = archives.SingleOrDefault(a => a.Name.Equals(archive.Name));
                BiblosDS.BiblosDSManagement.Storage   udsStorage = storages.SingleOrDefault(a => a.Name.Equals(storage.Name));
                if (udsArchive == null)
                {
                    throw new Exception(string.Format("Archive not found. Archive Name: {0}", archive.Name));
                }
                if (udsStorage == null)
                {
                    throw new Exception(string.Format("Storage not found. Storage Name: {0}", storage.Name));
                }
                storageArea.IdStorageArea = Guid.NewGuid();
                storageArea.Enable        = true;
                storageArea.MaxFileNumber = 4096;
                storageArea.MaxSize       = Convert.ToInt64(4096) * (1024 * 1024);
                storageArea.Name          = isMainDocument ? string.Concat("StorageArea_UDS_", Builder.UDSName) : string.Concat("StorageArea_UDS_Miscellaneous_", Builder.UDSName);
                storageArea.Path          = "DVD";
                storageArea.Priority      = 0;
                storageArea.Storage       = udsStorage;
                storageArea.Archive       = udsArchive;
                _logger.WriteInfo(new LogMessage(string.Concat("Creating biblosds storage area", storageArea.Name)), LogCategories);
                await _administrationClient.AddStorageAreaAsync(storageArea);

                BiblosDS.BiblosDSManagement.ArchiveStorage archiveStorage = new BiblosDS.BiblosDSManagement.ArchiveStorage
                {
                    Active  = true,
                    Archive = udsArchive,
                    Storage = udsStorage
                };
                _logger.WriteInfo(new LogMessage("Creating biblosds archive_storage"), LogCategories);
                await _administrationClient.AddArchiveStorageAsync(archiveStorage);

                attributeGroup_default.IdAttributeGroup = Guid.NewGuid();
                attributeGroup_default.Description      = "default document attributes";
                attributeGroup_default.GroupType        = BiblosDS.BiblosDSManagement.AttributeGroupType.Undefined;
                attributeGroup_default.IdArchive        = udsArchive.IdArchive;
                attributeGroup_default.IsVisible        = true;
                _logger.WriteInfo(new LogMessage("Creating biblosds attributeGroup_default"), LogCategories);
                await _administrationClient.AddAttributeGroupAsync(attributeGroup_default);

                attributeGroup_chain.IdAttributeGroup = Guid.NewGuid();
                attributeGroup_chain.Description      = "UDS chain attributes";
                attributeGroup_chain.GroupType        = BiblosDS.BiblosDSManagement.AttributeGroupType.Chain;
                attributeGroup_chain.IdArchive        = udsArchive.IdArchive;
                attributeGroup_chain.IsVisible        = true;
                _logger.WriteInfo(new LogMessage("Creating biblosds attributeGroup_chain"), LogCategories);
                await _administrationClient.AddAttributeGroupAsync(attributeGroup_chain);

                BiblosDS.BiblosDSManagement.AttributeMode[]  attributeModes  = await task_attributeModes;
                BiblosDS.BiblosDSManagement.AttributeGroup[] attributeGroups = { attributeGroup_default, attributeGroup_chain };
                await funcMapBiblosAttributes(archive, attributeGroups, attributeModes);

                if (isMainDocument)
                {
                    UDS.Model.Documents.Document.BiblosArchive = archive.Name;
                    return;
                }

                if (UDS.Model.Documents.DocumentAttachment != null && UDS.Model.Documents.DocumentAttachment.CreateBiblosArchive)
                {
                    UDS.Model.Documents.DocumentAttachment.BiblosArchive = archive.Name;
                }

                if (UDS.Model.Documents.DocumentAnnexed != null && UDS.Model.Documents.DocumentAnnexed.CreateBiblosArchive)
                {
                    UDS.Model.Documents.DocumentAnnexed.BiblosArchive = archive.Name;
                }

                //aggiungo il blocco riguardante la Dematerializzazione se questa è prevista
                if ((UDS.Model.Documents.Document != null && UDS.Model.Documents.Document.DematerialisationEnabled) ||
                    (UDS.Model.Documents.DocumentAttachment != null && UDS.Model.Documents.DocumentAttachment.DematerialisationEnabled) ||
                    (UDS.Model.Documents.DocumentAnnexed != null && UDS.Model.Documents.DocumentAnnexed.DematerialisationEnabled))
                {
                    AddDocumentDematerialisation(UDS.Model.Documents, archive.Name);
                }
            }
            catch (Exception ex)
            {
                _logger.WriteError(ex, LogCategories);
                throw ex;
            }
        }