mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-29 13:49:10 +08:00
311 lines
9.2 KiB
Go
311 lines
9.2 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 wordprocessingml
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"log"
|
|
)
|
|
|
|
type CT_MailMerge struct {
|
|
// Source Document Type
|
|
MainDocumentType *CT_MailMergeDocType
|
|
// Query Contains Link to External Query File
|
|
LinkToQuery *CT_OnOff
|
|
// Data Source Type
|
|
DataType *CT_MailMergeDataType
|
|
// Data Source Connection String
|
|
ConnectString *CT_String
|
|
// Query For Data Source Records To Merge
|
|
Query *CT_String
|
|
// Data Source File Path
|
|
DataSource *CT_Rel
|
|
// Header Definition File Path
|
|
HeaderSource *CT_Rel
|
|
// Remove Blank Lines from Merged Documents
|
|
DoNotSuppressBlankLines *CT_OnOff
|
|
// Merged Document Destination
|
|
Destination *CT_MailMergeDest
|
|
// Column Containing E-mail Address
|
|
AddressFieldName *CT_String
|
|
// Merged E-mail or Fax Subject Line
|
|
MailSubject *CT_String
|
|
// Merged Document To E-Mail Attachment
|
|
MailAsAttachment *CT_OnOff
|
|
// View Merged Data Within Document
|
|
ViewMergedData *CT_OnOff
|
|
// Record Currently Displayed In Merged Document
|
|
ActiveRecord *CT_DecimalNumber
|
|
// Mail Merge Error Reporting Setting
|
|
CheckErrors *CT_DecimalNumber
|
|
// Office Data Source Object Settings
|
|
Odso *CT_Odso
|
|
}
|
|
|
|
func NewCT_MailMerge() *CT_MailMerge {
|
|
ret := &CT_MailMerge{}
|
|
ret.MainDocumentType = NewCT_MailMergeDocType()
|
|
ret.DataType = NewCT_MailMergeDataType()
|
|
return ret
|
|
}
|
|
func (m *CT_MailMerge) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
|
|
if m == nil {
|
|
return nil
|
|
}
|
|
e.EncodeToken(start)
|
|
start.Attr = nil
|
|
semainDocumentType := xml.StartElement{Name: xml.Name{Local: "w:mainDocumentType"}}
|
|
e.EncodeElement(m.MainDocumentType, semainDocumentType)
|
|
if m.LinkToQuery != nil {
|
|
selinkToQuery := xml.StartElement{Name: xml.Name{Local: "w:linkToQuery"}}
|
|
e.EncodeElement(m.LinkToQuery, selinkToQuery)
|
|
}
|
|
sedataType := xml.StartElement{Name: xml.Name{Local: "w:dataType"}}
|
|
e.EncodeElement(m.DataType, sedataType)
|
|
if m.ConnectString != nil {
|
|
seconnectString := xml.StartElement{Name: xml.Name{Local: "w:connectString"}}
|
|
e.EncodeElement(m.ConnectString, seconnectString)
|
|
}
|
|
if m.Query != nil {
|
|
sequery := xml.StartElement{Name: xml.Name{Local: "w:query"}}
|
|
e.EncodeElement(m.Query, sequery)
|
|
}
|
|
if m.DataSource != nil {
|
|
sedataSource := xml.StartElement{Name: xml.Name{Local: "w:dataSource"}}
|
|
e.EncodeElement(m.DataSource, sedataSource)
|
|
}
|
|
if m.HeaderSource != nil {
|
|
seheaderSource := xml.StartElement{Name: xml.Name{Local: "w:headerSource"}}
|
|
e.EncodeElement(m.HeaderSource, seheaderSource)
|
|
}
|
|
if m.DoNotSuppressBlankLines != nil {
|
|
sedoNotSuppressBlankLines := xml.StartElement{Name: xml.Name{Local: "w:doNotSuppressBlankLines"}}
|
|
e.EncodeElement(m.DoNotSuppressBlankLines, sedoNotSuppressBlankLines)
|
|
}
|
|
if m.Destination != nil {
|
|
sedestination := xml.StartElement{Name: xml.Name{Local: "w:destination"}}
|
|
e.EncodeElement(m.Destination, sedestination)
|
|
}
|
|
if m.AddressFieldName != nil {
|
|
seaddressFieldName := xml.StartElement{Name: xml.Name{Local: "w:addressFieldName"}}
|
|
e.EncodeElement(m.AddressFieldName, seaddressFieldName)
|
|
}
|
|
if m.MailSubject != nil {
|
|
semailSubject := xml.StartElement{Name: xml.Name{Local: "w:mailSubject"}}
|
|
e.EncodeElement(m.MailSubject, semailSubject)
|
|
}
|
|
if m.MailAsAttachment != nil {
|
|
semailAsAttachment := xml.StartElement{Name: xml.Name{Local: "w:mailAsAttachment"}}
|
|
e.EncodeElement(m.MailAsAttachment, semailAsAttachment)
|
|
}
|
|
if m.ViewMergedData != nil {
|
|
seviewMergedData := xml.StartElement{Name: xml.Name{Local: "w:viewMergedData"}}
|
|
e.EncodeElement(m.ViewMergedData, seviewMergedData)
|
|
}
|
|
if m.ActiveRecord != nil {
|
|
seactiveRecord := xml.StartElement{Name: xml.Name{Local: "w:activeRecord"}}
|
|
e.EncodeElement(m.ActiveRecord, seactiveRecord)
|
|
}
|
|
if m.CheckErrors != nil {
|
|
secheckErrors := xml.StartElement{Name: xml.Name{Local: "w:checkErrors"}}
|
|
e.EncodeElement(m.CheckErrors, secheckErrors)
|
|
}
|
|
if m.Odso != nil {
|
|
seodso := xml.StartElement{Name: xml.Name{Local: "w:odso"}}
|
|
e.EncodeElement(m.Odso, seodso)
|
|
}
|
|
e.EncodeToken(xml.EndElement{Name: start.Name})
|
|
return nil
|
|
}
|
|
func (m *CT_MailMerge) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
|
|
// initialize to default
|
|
m.MainDocumentType = NewCT_MailMergeDocType()
|
|
m.DataType = NewCT_MailMergeDataType()
|
|
lCT_MailMerge:
|
|
for {
|
|
tok, err := d.Token()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
switch el := tok.(type) {
|
|
case xml.StartElement:
|
|
switch el.Name.Local {
|
|
case "mainDocumentType":
|
|
if err := d.DecodeElement(m.MainDocumentType, &el); err != nil {
|
|
return err
|
|
}
|
|
case "linkToQuery":
|
|
m.LinkToQuery = NewCT_OnOff()
|
|
if err := d.DecodeElement(m.LinkToQuery, &el); err != nil {
|
|
return err
|
|
}
|
|
case "dataType":
|
|
if err := d.DecodeElement(m.DataType, &el); err != nil {
|
|
return err
|
|
}
|
|
case "connectString":
|
|
m.ConnectString = NewCT_String()
|
|
if err := d.DecodeElement(m.ConnectString, &el); err != nil {
|
|
return err
|
|
}
|
|
case "query":
|
|
m.Query = NewCT_String()
|
|
if err := d.DecodeElement(m.Query, &el); err != nil {
|
|
return err
|
|
}
|
|
case "dataSource":
|
|
m.DataSource = NewCT_Rel()
|
|
if err := d.DecodeElement(m.DataSource, &el); err != nil {
|
|
return err
|
|
}
|
|
case "headerSource":
|
|
m.HeaderSource = NewCT_Rel()
|
|
if err := d.DecodeElement(m.HeaderSource, &el); err != nil {
|
|
return err
|
|
}
|
|
case "doNotSuppressBlankLines":
|
|
m.DoNotSuppressBlankLines = NewCT_OnOff()
|
|
if err := d.DecodeElement(m.DoNotSuppressBlankLines, &el); err != nil {
|
|
return err
|
|
}
|
|
case "destination":
|
|
m.Destination = NewCT_MailMergeDest()
|
|
if err := d.DecodeElement(m.Destination, &el); err != nil {
|
|
return err
|
|
}
|
|
case "addressFieldName":
|
|
m.AddressFieldName = NewCT_String()
|
|
if err := d.DecodeElement(m.AddressFieldName, &el); err != nil {
|
|
return err
|
|
}
|
|
case "mailSubject":
|
|
m.MailSubject = NewCT_String()
|
|
if err := d.DecodeElement(m.MailSubject, &el); err != nil {
|
|
return err
|
|
}
|
|
case "mailAsAttachment":
|
|
m.MailAsAttachment = NewCT_OnOff()
|
|
if err := d.DecodeElement(m.MailAsAttachment, &el); err != nil {
|
|
return err
|
|
}
|
|
case "viewMergedData":
|
|
m.ViewMergedData = NewCT_OnOff()
|
|
if err := d.DecodeElement(m.ViewMergedData, &el); err != nil {
|
|
return err
|
|
}
|
|
case "activeRecord":
|
|
m.ActiveRecord = NewCT_DecimalNumber()
|
|
if err := d.DecodeElement(m.ActiveRecord, &el); err != nil {
|
|
return err
|
|
}
|
|
case "checkErrors":
|
|
m.CheckErrors = NewCT_DecimalNumber()
|
|
if err := d.DecodeElement(m.CheckErrors, &el); err != nil {
|
|
return err
|
|
}
|
|
case "odso":
|
|
m.Odso = NewCT_Odso()
|
|
if err := d.DecodeElement(m.Odso, &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 lCT_MailMerge
|
|
case xml.CharData:
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
func (m *CT_MailMerge) Validate() error {
|
|
return m.ValidateWithPath("CT_MailMerge")
|
|
}
|
|
func (m *CT_MailMerge) ValidateWithPath(path string) error {
|
|
if err := m.MainDocumentType.ValidateWithPath(path + "/MainDocumentType"); err != nil {
|
|
return err
|
|
}
|
|
if m.LinkToQuery != nil {
|
|
if err := m.LinkToQuery.ValidateWithPath(path + "/LinkToQuery"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if err := m.DataType.ValidateWithPath(path + "/DataType"); err != nil {
|
|
return err
|
|
}
|
|
if m.ConnectString != nil {
|
|
if err := m.ConnectString.ValidateWithPath(path + "/ConnectString"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.Query != nil {
|
|
if err := m.Query.ValidateWithPath(path + "/Query"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.DataSource != nil {
|
|
if err := m.DataSource.ValidateWithPath(path + "/DataSource"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.HeaderSource != nil {
|
|
if err := m.HeaderSource.ValidateWithPath(path + "/HeaderSource"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.DoNotSuppressBlankLines != nil {
|
|
if err := m.DoNotSuppressBlankLines.ValidateWithPath(path + "/DoNotSuppressBlankLines"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.Destination != nil {
|
|
if err := m.Destination.ValidateWithPath(path + "/Destination"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.AddressFieldName != nil {
|
|
if err := m.AddressFieldName.ValidateWithPath(path + "/AddressFieldName"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.MailSubject != nil {
|
|
if err := m.MailSubject.ValidateWithPath(path + "/MailSubject"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.MailAsAttachment != nil {
|
|
if err := m.MailAsAttachment.ValidateWithPath(path + "/MailAsAttachment"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.ViewMergedData != nil {
|
|
if err := m.ViewMergedData.ValidateWithPath(path + "/ViewMergedData"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.ActiveRecord != nil {
|
|
if err := m.ActiveRecord.ValidateWithPath(path + "/ActiveRecord"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.CheckErrors != nil {
|
|
if err := m.CheckErrors.ValidateWithPath(path + "/CheckErrors"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if m.Odso != nil {
|
|
if err := m.Odso.ValidateWithPath(path + "/Odso"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|