private IEnumerable <string> ExtractTags(MeasurementField measurementField) { try { if (!string.IsNullOrWhiteSpace(measurementField.StringValue)) { return(measurementField.StringValue.Split(new[] { ',', ';', ' ' }, StringSplitOptions.RemoveEmptyEntries)); } } catch (Exception ex) { _logger.LogError(ex, "Error extracting tags."); // and sink } return(new List <string>()); }
private MeasurementField MapOldApiField(MeasurementField field, User device) { string fieldId = field.Name.ToLower().Replace("field", ""); int fieldIdValue; if (int.TryParse(fieldId, out fieldIdValue)) { var fieldDescriptor = device.FieldDescriptors.FirstOrDefault(x => x.Index == fieldIdValue - 1); if (fieldDescriptor != null) { // Change the field name to reflect the mapped field. field.Name = fieldDescriptor.Name; } } // No match then return the existing field. return(field); }
private void TryExtractMetaData(Measurement measurement, MeasurementField measurementField) { if (string.IsNullOrEmpty(measurementField.Name)) { return; } try { switch (measurementField.Name.ToLower()) { case "sampleid": measurement.SampleId = measurementField.StringValue; break; case "operatorid": measurement.OperatorId = measurementField.StringValue; break; case "soc": // stage of charge (expect %) case "ps-soc": // (stage of charge) to match photon battery shield. case "battery": case "batterylevel": case "batterylevelpercentage": measurement.BatteryLevel = measurementField.Value; measurement.BatteryLevelPercentage = Convert.ToInt32(measurementField.Value); break; case "rf": case "rfstrength": measurement.RfStrength = Convert.ToInt32(measurementField.Value); break; case "lat": case "latitude": measurement.Location = measurement.Location ?? new LocationDetails(); measurement.Location.Latitude = Convert.ToDouble(measurementField.Value); break; case "long": case "longitude": measurement.Location = measurement.Location ?? new LocationDetails(); measurement.Location.Longitude = Convert.ToDouble(measurementField.Value); break; case "elevation": case "altitude": measurement.Location = measurement.Location ?? new LocationDetails(); measurement.Location.Elevation = Convert.ToDouble(measurementField.Value); break; case "g": case "gps": case "latlong": case "location": measurement.Location = GetLocation(measurementField.StringValue); break; case "tag": case "tags": measurement.Tags.AddRange(ExtractTags(measurementField)); break; } } catch (Exception ex) { _logger.LogError(ex, "Failed to extract field metadata."); // and sink, metadata is not overly critical } }