Exemple #1
0
        public IEnumerable <UniqueId> ImportUniqueIDs(string isoObjectIdRef)
        {
            List <UniqueId> uniqueIDs = new List <UniqueId>();

            //1. Add any matching link in the LinkList.xml
            if (LinkList != null)
            {
                foreach (ISOLinkGroup isoLinkGroup in LinkList.LinkGroups.Where(lg => lg.LinkGroupDesignator != null && !lg.LinkGroupDesignator.Contains("ADAPT_Context_Items")))
                {
                    ISOLink link = isoLinkGroup.Links.FirstOrDefault(l => l.ObjectIdRef == isoObjectIdRef);
                    if (link != null)
                    {
                        UniqueId adaptID = new UniqueId();
                        adaptID.Id     = link.LinkValue;
                        adaptID.Source = link.LinkDesignator;

                        if (isoLinkGroup.LinkGroupType == ISOEnumerations.ISOLinkGroupType.UUID)
                        {
                            adaptID.IdType = IdTypeEnum.UUID;
                        }
                        else if (isoLinkGroup.LinkGroupType == ISOEnumerations.ISOLinkGroupType.UniqueResolvable)
                        {
                            adaptID.IdType = IdTypeEnum.URI;
                        }
                        else if (isoLinkGroup.LinkGroupType == ISOEnumerations.ISOLinkGroupType.ManufacturerProprietary &&
                                 (isoLinkGroup.LinkGroupDesignator != UnclassifiedLinkGroupDesignator ||
                                  isoLinkGroup.ManufacturerGLN != AgGatewayGLN)) //We'll handle the "unclassified" links under AgGateway's GLN below in the else
                        {
                            adaptID.SourceType = IdSourceTypeEnum.GLN;
                            if (!string.IsNullOrEmpty(isoLinkGroup.ManufacturerGLN))
                            {
                                adaptID.Source = isoLinkGroup.ManufacturerGLN; //We'll overwrite the source with the GLN if supplied
                            }
                        }
                        else
                        {
                            adaptID.IdType = IdTypeEnum.String;
                        }
                        uniqueIDs.Add(adaptID);
                    }
                }
            }

            //2. Add a link for the current ISOXML import
            //This temporary reference serves as a mapping back to the imported file
            //The values are omitted from the LinkList.xml during any export.
            uniqueIDs.Add(ImportCurrentISOLink(isoObjectIdRef));

            return(uniqueIDs);
        }
Exemple #2
0
        public IEnumerable <UniqueId> ImportUniqueIDs(string isoObjectIdRef)
        {
            List <UniqueId> uniqueIDs = new List <UniqueId>();

            //1. Add any matching link in the LinkList.xml
            if (LinkList != null)
            {
                foreach (ISOLinkGroup isoLinkGroup in LinkList.LinkGroups)
                {
                    ISOLink link = isoLinkGroup.Links.FirstOrDefault(l => l.ObjectIdRef == isoObjectIdRef);
                    if (link != null)
                    {
                        UniqueId adaptID = new UniqueId();
                        adaptID.Id = link.LinkValue;

                        if (isoLinkGroup.LinkGroupType == ISOEnumerations.ISOLinkGroupType.UUID)
                        {
                            adaptID.IdType = IdTypeEnum.UUID;
                        }
                        else if (isoLinkGroup.LinkGroupType == ISOEnumerations.ISOLinkGroupType.ManufacturerProprietary)
                        {
                            adaptID.SourceType = IdSourceTypeEnum.GLN;
                            adaptID.Source     = isoLinkGroup.ManufacturerGLN;
                        }
                        uniqueIDs.Add(adaptID);
                    }
                }
            }

            //2. Add a link for the current ISOXML import
            //This temporary reference serves as a mapping back to the imported file
            //The values are omitted from the LinkList.xml during any export.
            uniqueIDs.Add(ImportCurrentISOLink(isoObjectIdRef));

            return(uniqueIDs);
        }
Exemple #3
0
        public void ExportUniqueIDs(CompoundIdentifier id, string isoIDRef)
        {
            foreach (UniqueId uid in id.UniqueIds)
            {
                //Find or create the right LinkGroup
                ISOLinkGroup linkGroup = null;
                if (uid.Source == IsoSource)
                {
                    //No need to export temporary ISO ids
                    continue;
                }
                if (uid.IdType == IdTypeEnum.UUID)
                {
                    //Add to global UUID list
                    linkGroup = LinkList.LinkGroups.FirstOrDefault(lg => lg.LinkGroupType == ISOEnumerations.ISOLinkGroupType.UUID);
                    if (linkGroup == null)
                    {
                        linkGroup = new ISOLinkGroup()
                        {
                            LinkGroupType = ISOEnumerations.ISOLinkGroupType.UUID, LinkGroupDesignator = "UUIDs", Links = new List <ISOLink>()
                        };
                        linkGroup.LinkGroupId = BaseMapper.GenerateId(0, "LGP", _lgpID++); //Special ID invocation here due to class relationships
                        LinkList.LinkGroups.Add(linkGroup);
                    }
                }
                else if (uid.IdType == IdTypeEnum.URI)
                {
                    //Add to global URI list
                    linkGroup = LinkList.LinkGroups.FirstOrDefault(lg => lg.LinkGroupType == ISOEnumerations.ISOLinkGroupType.UniqueResolvable);
                    if (linkGroup == null)
                    {
                        linkGroup = new ISOLinkGroup()
                        {
                            LinkGroupType = ISOEnumerations.ISOLinkGroupType.UniqueResolvable, LinkGroupDesignator = "URIs", Links = new List <ISOLink>()
                        };
                        linkGroup.LinkGroupId = BaseMapper.GenerateId(0, "LGP", _lgpID++); //Special ID invocation here due to class relationships
                        LinkList.LinkGroups.Add(linkGroup);
                    }
                }
                else
                {
                    //Save to the AgGateway GLN.    The link source is the designator
                    linkGroup = LinkList.LinkGroups.FirstOrDefault(lg => lg.LinkGroupType == ISOEnumerations.ISOLinkGroupType.ManufacturerProprietary && lg.ManufacturerGLN == AgGatewayGLN);
                    if (linkGroup == null)
                    {
                        linkGroup = new ISOLinkGroup()
                        {
                            LinkGroupType = ISOEnumerations.ISOLinkGroupType.ManufacturerProprietary, ManufacturerGLN = AgGatewayGLN, LinkGroupDesignator = UnclassifiedLinkGroupDesignator, Links = new List <ISOLink>()
                        };
                        linkGroup.LinkGroupId = BaseMapper.GenerateId(0, "LGP", _lgpID++); //Special ID invocation here due to class relationships
                        LinkList.LinkGroups.Add(linkGroup);
                    }
                }

                //Add the link
                ISOLink link = new ISOLink();
                link.ObjectIdRef    = isoIDRef;
                link.LinkValue      = uid.Id;
                link.LinkDesignator = uid.Source;
                linkGroup.Links.Add(link);
            }
        }