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