Пример #1
0
        // 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());
        }
Пример #2
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);
            }
        }
Пример #3
0
 public ParserException(CompoundIdentifier identifier, string message)
     : this(message, identifier.Filename, identifier.LineNumber, identifier.LinePosition)
 {
 }
Пример #4
0
 protected bool ImportIDs(CompoundIdentifier id, string isoIDRef)
 {
     id.UniqueIds.AddRange(UniqueIDMapper.ImportUniqueIDs(isoIDRef));
     return(TaskDataMapper.InstanceIDMap.Add(id.ReferenceId, isoIDRef));
 }
Пример #5
0
 public ValuePresentation()
 {
     Id = new CompoundIdentifier(0);
 }