gobm65.go
changeset 14 be004d8634e1
parent 13 72f6336c1167
child 15 009c05621fba
equal deleted inserted replaced
13:72f6336c1167 14:be004d8634e1
    44 // Read a JSON file and display average of the last 3 records:
    44 // Read a JSON file and display average of the last 3 records:
    45 // % gobm65 -i data_u2.json -l 3 --average
    45 // % gobm65 -i data_u2.json -l 3 --average
    46 // % gobm65 -i data_u2.json -l 3 --stats
    46 // % gobm65 -i data_u2.json -l 3 --stats
    47 // Read a JSON file, merge with device records, and save to another file:
    47 // Read a JSON file, merge with device records, and save to another file:
    48 // % gobm65 -i data_u2.json --merge -o data_u2-new.json
    48 // % gobm65 -i data_u2.json --merge -o data_u2-new.json
       
    49 //
       
    50 // Data from several JSON files can be merged, files are separated with a ';':
       
    51 // % gobm65 -i "data_u0.json;data_u1.json;data_u2.json"
    49 
    52 
    50 import (
    53 import (
    51 	"encoding/json"
    54 	"encoding/json"
    52 	"fmt"
    55 	"fmt"
    53 	"io"
    56 	"io"
    54 	"io/ioutil"
    57 	"io/ioutil"
    55 	"log"
    58 	"log"
    56 	"math"
    59 	"math"
    57 	"sort"
    60 	"sort"
       
    61 	"strings"
    58 	"time"
    62 	"time"
    59 
    63 
    60 	flag "github.com/docker/docker/pkg/mflag"
    64 	flag "github.com/docker/docker/pkg/mflag"
    61 	"github.com/tarm/serial"
    65 	"github.com/tarm/serial"
    62 )
    66 )
   193 		return items, err
   197 		return items, err
   194 	}
   198 	}
   195 
   199 
   196 	err = json.Unmarshal(data, &items)
   200 	err = json.Unmarshal(data, &items)
   197 	return items, err
   201 	return items, err
       
   202 }
       
   203 
       
   204 func loadFromJSONFiles(files string) (items []measurement, err error) {
       
   205 	filenames := strings.Split(files, ";")
       
   206 
       
   207 	for _, f := range filenames {
       
   208 		if f == "" {
       
   209 			continue
       
   210 		}
       
   211 		records, err := loadFromJSONFile(f)
       
   212 		if err != nil {
       
   213 			return items, err
       
   214 		}
       
   215 		items = mergeItems(records, items)
       
   216 	}
       
   217 
       
   218 	return
   198 }
   219 }
   199 
   220 
   200 func mergeItems(newItems, oldItems []measurement) []measurement {
   221 func mergeItems(newItems, oldItems []measurement) []measurement {
   201 	var result []measurement
   222 	var result []measurement
   202 
   223 
   433 			log.Fatal(err)
   454 			log.Fatal(err)
   434 		}
   455 		}
   435 	} else {
   456 	} else {
   436 		// Read from file
   457 		// Read from file
   437 		var fileItems []measurement
   458 		var fileItems []measurement
   438 		if fileItems, err = loadFromJSONFile(*inFile); err != nil {
   459 		if fileItems, err = loadFromJSONFiles(*inFile); err != nil {
   439 			log.Fatal(err)
   460 			log.Fatal(err)
   440 		}
   461 		}
   441 		if *merge {
   462 		if *merge {
   442 			if items, err = fetchData(*device); err != nil {
   463 			if items, err = fetchData(*device); err != nil {
   443 				log.Fatal(err)
   464 				log.Fatal(err)