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  }