private void initializeFieldData() { SchemaElementDefinition orderRouteFields = emsxService.GetEventDefinition("OrderRouteFields"); SchemaTypeDefinition typeDef = orderRouteFields.TypeDefinition; for (int i = 0; i < typeDef.NumElementDefinitions; i++) { SchemaElementDefinition e = typeDef.GetElementDefinition(i); String name = e.Name.ToString(); // Workaround for schema field naming if (name.Equals("EMSX_ORD_REF_ID")) { name = "EMSX_ORDER_REF_ID"; } // End of Workaround SchemaFieldDefinition f = new SchemaFieldDefinition(name); f.status = e.Status.ToString(); f.type = e.TypeDefinition.Datatype.ToString(); f.min = e.MinValues; f.max = e.MaxValues; f.description = e.Description; Log.LogMessage(LogLevels.DETAILED, "Adding field: " + name); if (f.isOrderField()) { orderFields.Add(f); } if (f.isRouteField()) { routeFields.Add(f); } } }
internal void populateFields(Message message, bool dynamicFieldsOnly) { Log.LogMessage(LogLevels.BASIC, "Populate fields"); CurrentToOldValues(); int fieldCount = message.NumElements; Element e = message.AsElement; fieldChanges = new List <FieldChange>(); for (int i = 0; i < fieldCount; i++) { Boolean load = true; Element f = e.GetElement(i); String fieldName = f.Name.ToString(); // Workaround for schema field nameing if (fieldName.Equals("EMSX_ORD_REF_ID")) { fieldName = "EMSX_ORDER_REF_ID"; } if (dynamicFieldsOnly) { SchemaFieldDefinition sfd = null; if (owner is Order) { Order o = (Order)owner; sfd = findSchemaFieldByName(fieldName, o.parent.emsxapi.orderFields); } else if (owner is Route) { Route r = (Route)owner; sfd = findSchemaFieldByName(fieldName, r.parent.emsxapi.routeFields); } if (sfd != null && sfd.isStatic()) { load = false; } } if (load) { Field fd = field(fieldName); if (fd == null) { fd = new Field(this); } fd.setName(fieldName); // set the CURRENT value NOT the new_value. new_value is only set by client side. fd.setCurrentValue(f.GetValueAsString()); FieldChange fc = fd.getFieldChanged(); if (fc != null) { fieldChanges.Add(fc); } } } }