コード例 #1
0
        private static byte[] GetFullDataIdField(byte[] indexId, IItem item, FullDataIdField fullDataIdField)
        {
            byte[] retVal = null;

            // If FullDataIdFieldList present on the FullDataIdField process that
            if (fullDataIdField.FullDataIdFieldList != null && fullDataIdField.FullDataIdFieldList.Count > 0)
            {
                retVal = GetFullDataIdList(indexId, item, fullDataIdField.FullDataIdFieldList);
            }
            else // Process rest of the fullDataIdField
            {
                switch (fullDataIdField.FullDataIdType)
                {
                case FullDataIdType.IndexId:
                    retVal = indexId;
                    break;

                case FullDataIdType.ItemId:
                    retVal = item.ItemId;
                    break;

                case FullDataIdType.Tag:
                    if (!item.TryGetTagValue(fullDataIdField.TagName, out retVal))
                    {
                        throw new Exception("Tag missing required to generate FullDataId");
                    }
                    break;
                }
            }
            return(retVal);
        }
コード例 #2
0
        private FullDataIdField ProcessFullDataIdPart(FullDataIdPart fullDataIdPart)
        {
            FullDataIdField fullDataIdField = new FullDataIdField
            {
                FullDataIdPartFormat = String.IsNullOrEmpty(fullDataIdPart.Format)
                ? FullDataIdPartFormat.Sequential
                : (FullDataIdPartFormat)Enum.Parse(typeof(FullDataIdPartFormat), fullDataIdPart.Format, true)
            };

            if (fullDataIdPart.FullDataIdPartCollection != null && fullDataIdPart.FullDataIdPartCollection.Count > 0)
            {
                fullDataIdField.FullDataIdFieldList = ProcessFullDataIdPartCollection(fullDataIdPart.FullDataIdPartCollection);
            }
            else
            {
                fullDataIdField.Count    = fullDataIdPart.Count;
                fullDataIdField.Offset   = fullDataIdPart.Offset;
                fullDataIdField.DataType = string.IsNullOrEmpty(fullDataIdPart.DataType)
                                               ? DataType.ByteArray
                                               : (DataType)Enum.Parse(typeof(DataType), fullDataIdPart.DataType, true);


                int dataTypeSize = DataTypeSize.Size[fullDataIdField.DataType];
                if (dataTypeSize > -1 && dataTypeSize != fullDataIdField.Count)
                {
                    string expStr = string.Format("TypeId - {0}, FullDataIdPart.PartName : {1}, FullDataIdPart.DataType :  {2}, DataTypeSize = {3} does not match (FullDataIdPart.Count ({4}) - FullDataIdPart.Offset ({5}))",
                                                  TypeId, fullDataIdPart.PartName, fullDataIdField.DataType, dataTypeSize, fullDataIdField.Count, fullDataIdField.Offset);
                    LoggingUtil.Log.Error(expStr);
                    throw new Exception(expStr);
                }

                if (fullDataIdPart.IsTag)
                {
                    fullDataIdField.FullDataIdType = FullDataIdType.Tag;
                    fullDataIdField.TagName        = fullDataIdPart.PartName;
                }
                else if (String.Compare(fullDataIdPart.PartName, "IndexId", true) == 0)
                {
                    fullDataIdField.FullDataIdType = FullDataIdType.IndexId;
                }
                else if (String.Compare(fullDataIdPart.PartName, "ItemId", true) == 0)
                {
                    fullDataIdField.FullDataIdType = FullDataIdType.ItemId;
                }
                else
                {
                    string expStr = string.Format("TypeId - {0}, Invalid FullDataIdPart.PartName : {1} in the configuration", TypeId, fullDataIdPart.PartName);
                    LoggingUtil.Log.Error(expStr);
                    throw new Exception(expStr);
                }
            }
            return(fullDataIdField);
        }