2017-08-29 15:06:08 -05:00

266 lines
6.8 KiB
Go

// Copyright 2017 Baliance. All rights reserved.
//
// Use of this source code is governed by the terms of the Affero GNU General
// Public License version 3.0 as published by the Free Software Foundation and
// appearing in the file LICENSE included in the packaging of this file. A
// commercial license can be purchased by contacting sales@baliance.com.
package spreadsheetml
import (
"encoding/xml"
"fmt"
"log"
)
type CT_Revisions struct {
// Revision Row Column Insert Delete
Rrc []*CT_RevisionRowColumn
// Revision Cell Move
Rm []*CT_RevisionMove
// Revision Custom View
Rcv []*CT_RevisionCustomView
// Revision Sheet Name
Rsnm []*CT_RevisionSheetRename
// Revision Insert Sheet
Ris []*CT_RevisionInsertSheet
// Revision Cell Change
Rcc []*CT_RevisionCellChange
// Revision Format
Rfmt []*CT_RevisionFormatting
// Revision AutoFormat
Raf []*CT_RevisionAutoFormatting
// Revision Defined Name
Rdn []*CT_RevisionDefinedName
// Revision Cell Comment
Rcmt []*CT_RevisionComment
// Revision Query Table
Rqt []*CT_RevisionQueryTableField
// Revision Merge Conflict
Rcft []*CT_RevisionConflict
}
func NewCT_Revisions() *CT_Revisions {
ret := &CT_Revisions{}
return ret
}
func (m *CT_Revisions) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if m == nil {
return nil
}
e.EncodeToken(start)
start.Attr = nil
if m.Rrc != nil {
serrc := xml.StartElement{Name: xml.Name{Local: "x:rrc"}}
e.EncodeElement(m.Rrc, serrc)
}
if m.Rm != nil {
serm := xml.StartElement{Name: xml.Name{Local: "x:rm"}}
e.EncodeElement(m.Rm, serm)
}
if m.Rcv != nil {
sercv := xml.StartElement{Name: xml.Name{Local: "x:rcv"}}
e.EncodeElement(m.Rcv, sercv)
}
if m.Rsnm != nil {
sersnm := xml.StartElement{Name: xml.Name{Local: "x:rsnm"}}
e.EncodeElement(m.Rsnm, sersnm)
}
if m.Ris != nil {
seris := xml.StartElement{Name: xml.Name{Local: "x:ris"}}
e.EncodeElement(m.Ris, seris)
}
if m.Rcc != nil {
sercc := xml.StartElement{Name: xml.Name{Local: "x:rcc"}}
e.EncodeElement(m.Rcc, sercc)
}
if m.Rfmt != nil {
serfmt := xml.StartElement{Name: xml.Name{Local: "x:rfmt"}}
e.EncodeElement(m.Rfmt, serfmt)
}
if m.Raf != nil {
seraf := xml.StartElement{Name: xml.Name{Local: "x:raf"}}
e.EncodeElement(m.Raf, seraf)
}
if m.Rdn != nil {
serdn := xml.StartElement{Name: xml.Name{Local: "x:rdn"}}
e.EncodeElement(m.Rdn, serdn)
}
if m.Rcmt != nil {
sercmt := xml.StartElement{Name: xml.Name{Local: "x:rcmt"}}
e.EncodeElement(m.Rcmt, sercmt)
}
if m.Rqt != nil {
serqt := xml.StartElement{Name: xml.Name{Local: "x:rqt"}}
e.EncodeElement(m.Rqt, serqt)
}
if m.Rcft != nil {
sercft := xml.StartElement{Name: xml.Name{Local: "x:rcft"}}
e.EncodeElement(m.Rcft, sercft)
}
e.EncodeToken(xml.EndElement{Name: start.Name})
return nil
}
func (m *CT_Revisions) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
// initialize to default
lCT_Revisions:
for {
tok, err := d.Token()
if err != nil {
return err
}
switch el := tok.(type) {
case xml.StartElement:
switch el.Name.Local {
case "rrc":
tmp := NewCT_RevisionRowColumn()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rrc = append(m.Rrc, tmp)
case "rm":
tmp := NewCT_RevisionMove()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rm = append(m.Rm, tmp)
case "rcv":
tmp := NewCT_RevisionCustomView()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rcv = append(m.Rcv, tmp)
case "rsnm":
tmp := NewCT_RevisionSheetRename()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rsnm = append(m.Rsnm, tmp)
case "ris":
tmp := NewCT_RevisionInsertSheet()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Ris = append(m.Ris, tmp)
case "rcc":
tmp := NewCT_RevisionCellChange()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rcc = append(m.Rcc, tmp)
case "rfmt":
tmp := NewCT_RevisionFormatting()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rfmt = append(m.Rfmt, tmp)
case "raf":
tmp := NewCT_RevisionAutoFormatting()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Raf = append(m.Raf, tmp)
case "rdn":
tmp := NewCT_RevisionDefinedName()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rdn = append(m.Rdn, tmp)
case "rcmt":
tmp := NewCT_RevisionComment()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rcmt = append(m.Rcmt, tmp)
case "rqt":
tmp := NewCT_RevisionQueryTableField()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rqt = append(m.Rqt, tmp)
case "rcft":
tmp := NewCT_RevisionConflict()
if err := d.DecodeElement(tmp, &el); err != nil {
return err
}
m.Rcft = append(m.Rcft, tmp)
default:
log.Printf("skipping unsupported element %v", el.Name)
if err := d.Skip(); err != nil {
return err
}
}
case xml.EndElement:
break lCT_Revisions
case xml.CharData:
}
}
return nil
}
func (m *CT_Revisions) Validate() error {
return m.ValidateWithPath("CT_Revisions")
}
func (m *CT_Revisions) ValidateWithPath(path string) error {
for i, v := range m.Rrc {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rrc[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rm {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rm[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rcv {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rcv[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rsnm {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rsnm[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Ris {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Ris[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rcc {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rcc[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rfmt {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rfmt[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Raf {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Raf[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rdn {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rdn[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rcmt {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rcmt[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rqt {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rqt[%d]", path, i)); err != nil {
return err
}
}
for i, v := range m.Rcft {
if err := v.ValidateWithPath(fmt.Sprintf("%s/Rcft[%d]", path, i)); err != nil {
return err
}
}
return nil
}