private void ProcessAttributes(AFAttributes attributes, string prefix) { foreach (AFAttribute attr in attributes) { if (attr == fDataReference.Attribute) { continue; } string attrName = prefix + "|" + attr.Name; if (TransformerCore.IsNumericVal(attr.Type)) { cmbSourceAttribute.Items.Add(attrName); } ProcessAttributes(attr.Attributes, attrName); } }
private AFValue Calculate(AFValues inputValues) { MethodEnum method; if (!Enum.TryParse(ConvertMethod, out method)) { throw new ArgumentException(Resources.ERR_NoBitSpecified); } if (inputValues == null || inputValues.Count == 0) { throw new ArgumentException(Resources.ERR_NoInputValues); } AFValue inVal = inputValues[0]; AFDatabase db = inVal.Attribute.Database; if (db == null) { throw new ArgumentException("No db found"); } object objVal = inVal.Value; if (inVal.IsGood && objVal != null) { if (TransformerCore.IsNumericVal(objVal)) { AFValue newVal; switch (method) { default: case MethodEnum.None: newVal = new AFValue(objVal, inVal.Timestamp, inVal.UOM); break; case MethodEnum.Simple: var targetUOMAttrS = AFAttribute.FindAttribute("UOM", Attribute); newVal = Convert(inVal, db, targetUOMAttrS); break; case MethodEnum.Full: var sourceUOMAttr = AFAttribute.FindAttribute("UOM", inVal.Attribute); newVal = Convert(inVal, db, sourceUOMAttr); var targetUOMAttrF = AFAttribute.FindAttribute("UOM", Attribute); newVal = Convert(newVal, db, targetUOMAttrF); break; } return(newVal); } else { throw new ArgumentException(Resources.ERR_SourceAttributeMustBeAnIntegerType); } } else { return(AFValue.CreateSystemStateValue(Attribute, AFSystemStateCode.BadInput, inVal.Timestamp)); } }