From b595cf1ac8b81875fa801a44a6016d6b6f7237f7 Mon Sep 17 00:00:00 2001 From: Markus Pesch Date: Sat, 11 Jan 2020 12:10:26 +0100 Subject: [PATCH] fix(pkg/cli): GetSensorIDsByMeasuredValues --- pkg/cli/cli.go | 39 ++++++++++---------------------------- pkg/config/config.go | 15 +++++++++++++-- pkg/types/measuredValue.go | 1 - 3 files changed, 23 insertions(+), 32 deletions(-) diff --git a/pkg/cli/cli.go b/pkg/cli/cli.go index 6907c10..5b8bc78 100644 --- a/pkg/cli/cli.go +++ b/pkg/cli/cli.go @@ -10,32 +10,11 @@ import ( ) // GetSensorsByMeasuredValues returns commulated list of sensors by measured values -func GetSensorsByMeasuredValues(measuredValues []*types.MeasuredValue, cnf *config.Configuration) []*types.Sensor { - sensors := []*types.Sensor{} +func GetSensorIDsByMeasuredValues(measuredValues []*types.MeasuredValue, cnf *config.Configuration) map[string]*types.Sensor { + sensors := make(map[string]*types.Sensor) for _, measuredValue := range measuredValues { - duplicated := false - foundSensor := &types.Sensor{} - for _, cnfSensor := range cnf.Sensors { - if measuredValue.ID == cnfSensor.ID { - foundSensor = cnfSensor - - // compare if id has already been added to list - for _, sensor := range sensors { - if cnfSensor.ID == sensor.ID { - duplicated = true - break - } - } - } - } - if duplicated { - continue - } - if foundSensor != nil { - sensors = append(sensors, foundSensor) - continue - } else { - sensors = append(sensors, &types.Sensor{ID: measuredValue.ID}) + if _, ok := sensors[measuredValue.SensorID]; !ok { + sensors[measuredValue.SensorID] = cnf.GetSensorByID(measuredValue.SensorID) } } return sensors @@ -109,26 +88,28 @@ func PrintSensors(cnf *config.Configuration, w io.Writer) error { // PrintMeasuredValues displays a list of measured values func PrintMeasuredValues(measuredValues []*types.MeasuredValue, cnf *config.Configuration, w io.Writer) { - sensors := GetSensorsByMeasuredValues(measuredValues, cnf) + sensors := GetSensorIDsByMeasuredValues(measuredValues, cnf) // sort measured values for every sensor orderedMeasuredValues := make(map[string][]*types.MeasuredValue) for _, measuredValue := range measuredValues { - orderedMeasuredValues[measuredValue.ID] = append(orderedMeasuredValues[measuredValue.ID], measuredValue) + orderedMeasuredValues[measuredValue.SensorID] = append(orderedMeasuredValues[measuredValue.SensorID], measuredValue) } // declare tabwriter tw := tabwriter.NewWriter(w, 0, 0, 3, ' ', 0) // headlines - for i, sensor := range sensors { + i := 0 + for _, sensor := range sensors { fmt.Fprintf(tw, "%v\t", sensor.FullName()) if i == len(sensors)-1 { fmt.Fprintf(tw, "\n") } + i++ } - // find sensor with maximum temperature values + // find sensor with the most measured values maxLength := 0 for _, orderedMeasuredValue := range orderedMeasuredValues { if len(orderedMeasuredValue) > maxLength { diff --git a/pkg/config/config.go b/pkg/config/config.go index cb20b12..1be2b0a 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -82,8 +82,8 @@ func (c *Configuration) AddSensor(sensor *types.Sensor) error { } // check if sensor has a valid device id - if sensor.ID != c.Device.ID { - sensor.ID = c.Device.ID + if sensor.DeviceID != c.Device.ID { + sensor.DeviceID = c.Device.ID } // overwrite creation date @@ -362,6 +362,17 @@ func (c *Configuration) GetRGBLEDsByName(names []string) []rgbled.RGBLED { return c.convertRGBLEDs(rgbLEDs) } +// GetSensorByID returns a sensor matched by his id. If no sensor has this id, +// the function returns nil +func (c *Configuration) GetSensorByID(id string) *types.Sensor { + for _, sensor := range c.Sensors { + if sensor.ID == id { + return sensor + } + } + return nil +} + // GetSensors returns a list of humidity sensors func (c *Configuration) GetSensors(option Option) []sensor.Sensor { cachedSensors := make([]*types.Sensor, 0) diff --git a/pkg/types/measuredValue.go b/pkg/types/measuredValue.go index 5bccdc8..6a24ae8 100644 --- a/pkg/types/measuredValue.go +++ b/pkg/types/measuredValue.go @@ -37,7 +37,6 @@ func SelectMeasuredValues(measuredValueType MeasuredValueType, measuredValues [] cachedMeasuredValues = append(cachedMeasuredValues, measuredValue) } } - return cachedMeasuredValues }