github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/show/gen/csv.go (about) 1 // Copyright 2015 unirita Inc. 2 // Created 2015/04/10 shanxia 3 4 package gen 5 6 import ( 7 "bytes" 8 "encoding/csv" 9 "fmt" 10 ) 11 12 // JSON形式のジェネレーター 13 type CsvGenerator struct { 14 } 15 16 func (s CsvGenerator) Generate(out *OutputRoot) (string, error) { 17 var jnBuf, jobBuf bytes.Buffer 18 19 jnWriter := csv.NewWriter(&jnBuf) 20 jnWriter.Write([]string{"#Type", "JobNetwork ID", "JobNetwork Name", "Start Date", "End Date", 21 "Status", "Detail Message", "Create Date", "Update Date"}) 22 jobWriter := csv.NewWriter(&jobBuf) 23 jobWriter.Write([]string{"#Type", "JobNework ID", "Job ID", "Job Name", "Start Date", "End Date", 24 "Status", "Detail Message", "Return Code", "Node", "Port", "Variable", "CreateDate", "Update Date"}) 25 for _, jn := range out.Jobnetworks { 26 if err := jnWriter.Write([]string{"JOBNET", fmt.Sprintf("%d", jn.Id), 27 jn.Jobnetwork, jn.StartDate, jn.EndDate, fmt.Sprintf("%d", jn.Status), 28 jn.Detail, jn.CreateDate, jn.UpdateDate}); err != nil { 29 30 panic(err) 31 } 32 for _, job := range jn.Jobs { 33 if err := jobWriter.Write([]string{"JOB", fmt.Sprintf("%d", jn.Id), job.JobId, job.Jobname, 34 job.StartDate, job.EndDate, fmt.Sprintf("%d", job.Status), job.Detail, 35 fmt.Sprintf("%d", job.Rc), job.Node, 36 fmt.Sprintf("%d", job.Port), job.Variable, job.CreateDate, job.UpdateDate}); err != nil { 37 38 panic(err) 39 } 40 } 41 } 42 jnWriter.Flush() 43 jobWriter.Flush() 44 return jnBuf.String() + jobBuf.String(), nil 45 }