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

203 lines
5.6 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 extended_properties
import (
"encoding/xml"
"log"
)
type Properties struct {
CT_Properties
}
func NewProperties() *Properties {
ret := &Properties{}
ret.CT_Properties = *NewCT_Properties()
return ret
}
func (m *Properties) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if m == nil {
return nil
}
start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "xmlns"}, Value: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"})
start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "xmlns:d"}, Value: "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"})
start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "xmlns:xml"}, Value: "http://www.w3.org/XML/1998/namespace"})
start.Name.Local = "Properties"
return m.CT_Properties.MarshalXML(e, start)
}
func (m *Properties) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
// initialize to default
m.CT_Properties = *NewCT_Properties()
lProperties:
for {
tok, err := d.Token()
if err != nil {
return err
}
switch el := tok.(type) {
case xml.StartElement:
switch el.Name.Local {
case "Template":
m.Template = new(string)
if err := d.DecodeElement(m.Template, &el); err != nil {
return err
}
case "Manager":
m.Manager = new(string)
if err := d.DecodeElement(m.Manager, &el); err != nil {
return err
}
case "Company":
m.Company = new(string)
if err := d.DecodeElement(m.Company, &el); err != nil {
return err
}
case "Pages":
m.Pages = new(int32)
if err := d.DecodeElement(m.Pages, &el); err != nil {
return err
}
case "Words":
m.Words = new(int32)
if err := d.DecodeElement(m.Words, &el); err != nil {
return err
}
case "Characters":
m.Characters = new(int32)
if err := d.DecodeElement(m.Characters, &el); err != nil {
return err
}
case "PresentationFormat":
m.PresentationFormat = new(string)
if err := d.DecodeElement(m.PresentationFormat, &el); err != nil {
return err
}
case "Lines":
m.Lines = new(int32)
if err := d.DecodeElement(m.Lines, &el); err != nil {
return err
}
case "Paragraphs":
m.Paragraphs = new(int32)
if err := d.DecodeElement(m.Paragraphs, &el); err != nil {
return err
}
case "Slides":
m.Slides = new(int32)
if err := d.DecodeElement(m.Slides, &el); err != nil {
return err
}
case "Notes":
m.Notes = new(int32)
if err := d.DecodeElement(m.Notes, &el); err != nil {
return err
}
case "TotalTime":
m.TotalTime = new(int32)
if err := d.DecodeElement(m.TotalTime, &el); err != nil {
return err
}
case "HiddenSlides":
m.HiddenSlides = new(int32)
if err := d.DecodeElement(m.HiddenSlides, &el); err != nil {
return err
}
case "MMClips":
m.MMClips = new(int32)
if err := d.DecodeElement(m.MMClips, &el); err != nil {
return err
}
case "ScaleCrop":
m.ScaleCrop = new(bool)
if err := d.DecodeElement(m.ScaleCrop, &el); err != nil {
return err
}
case "HeadingPairs":
m.HeadingPairs = NewCT_VectorVariant()
if err := d.DecodeElement(m.HeadingPairs, &el); err != nil {
return err
}
case "TitlesOfParts":
m.TitlesOfParts = NewCT_VectorLpstr()
if err := d.DecodeElement(m.TitlesOfParts, &el); err != nil {
return err
}
case "LinksUpToDate":
m.LinksUpToDate = new(bool)
if err := d.DecodeElement(m.LinksUpToDate, &el); err != nil {
return err
}
case "CharactersWithSpaces":
m.CharactersWithSpaces = new(int32)
if err := d.DecodeElement(m.CharactersWithSpaces, &el); err != nil {
return err
}
case "SharedDoc":
m.SharedDoc = new(bool)
if err := d.DecodeElement(m.SharedDoc, &el); err != nil {
return err
}
case "HyperlinkBase":
m.HyperlinkBase = new(string)
if err := d.DecodeElement(m.HyperlinkBase, &el); err != nil {
return err
}
case "HLinks":
m.HLinks = NewCT_VectorVariant()
if err := d.DecodeElement(m.HLinks, &el); err != nil {
return err
}
case "HyperlinksChanged":
m.HyperlinksChanged = new(bool)
if err := d.DecodeElement(m.HyperlinksChanged, &el); err != nil {
return err
}
case "DigSig":
m.DigSig = NewCT_DigSigBlob()
if err := d.DecodeElement(m.DigSig, &el); err != nil {
return err
}
case "Application":
m.Application = new(string)
if err := d.DecodeElement(m.Application, &el); err != nil {
return err
}
case "AppVersion":
m.AppVersion = new(string)
if err := d.DecodeElement(m.AppVersion, &el); err != nil {
return err
}
case "DocSecurity":
m.DocSecurity = new(int32)
if err := d.DecodeElement(m.DocSecurity, &el); err != nil {
return err
}
default:
log.Printf("skipping unsupported element %v", el.Name)
if err := d.Skip(); err != nil {
return err
}
}
case xml.EndElement:
break lProperties
case xml.CharData:
}
}
return nil
}
func (m *Properties) Validate() error {
return m.ValidateWithPath("Properties")
}
func (m *Properties) ValidateWithPath(path string) error {
if err := m.CT_Properties.ValidateWithPath(path); err != nil {
return err
}
return nil
}