// ToDo: Create a LinkList file for each workRecord! /* LinkList idea: * For each GUID: all the uniqueIds + as 'checksum' the ADAPT ReferenceId * In WebAPI could be an URL to save bytes in file */ public static Guid GetUniqueGuid(CompoundIdentifier id, string preferredSource = null) { if (id.UniqueIds.Count == 0) { // ToDo: log that there are no UniqueId for that ADAPT entity and that there has been created a new one return(Guid.NewGuid()); } Guid guid; // 1st: preferredSource if (preferredSource != null) { if (GetUniqueIdFromSource(id, preferredSource, out guid)) { return(guid); } if (preferredSource == UniqueIdSourceCNH) { if (GetUniqueIdFromCNHId(id, out guid)) { return(guid); } } } // 2nd: if idType is UUID if (GetUniqueId(id.UniqueIds.Where(ui => ui.IdType == IdTypeEnum.UUID), out guid)) { return(guid); } // 3rd: if idType is String if (GetUniqueId(id.UniqueIds.Where(ui => ui.IdType == IdTypeEnum.String), out guid)) { return(guid); } // 4rd: if idType is LongInt // ToDo: [AgGateway] Ask AgGateway if IdTypeEnum.LongInt is int32 if (GetUniqueGuidFromLong(id.UniqueIds, out guid)) { return(guid); } // 5th: try LongInt as string if (GetUniqueId(id.UniqueIds.Where(ui => ui.IdType == IdTypeEnum.LongInt), out guid)) { return(guid); } // 5th: if idType is URI if (GetUniqueId(id.UniqueIds.Where(ui => ui.IdType == IdTypeEnum.URI), out guid)) { return(guid); } // not succesfull, generate new GUID // ToDo: need to save all UniqueIds in the DTO return(Guid.NewGuid()); }
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); } }
public ParserException(CompoundIdentifier identifier, string message) : this(message, identifier.Filename, identifier.LineNumber, identifier.LinePosition) { }
protected bool ImportIDs(CompoundIdentifier id, string isoIDRef) { id.UniqueIds.AddRange(UniqueIDMapper.ImportUniqueIDs(isoIDRef)); return(TaskDataMapper.InstanceIDMap.Add(id.ReferenceId, isoIDRef)); }
public ValuePresentation() { Id = new CompoundIdentifier(0); }