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); }
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); }
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); } }