/**
 * Extend this class when the new class needs to generate an xml file
 * @private
 */
Ext.define('Ext.exporter.file.ooxml.Xml', {
    extend: 'Ext.exporter.file.ooxml.Base',
 
    requires: [
        'Ext.exporter.file.ooxml.Relationship',
        'Ext.exporter.file.ooxml.ContentType'
    ],
 
    config: {
        /**
         * @cfg {String}
         *
         * Full path of the file inside the zip package
         */
        path: null,
 
        relationship: null,
 
        contentType: null
    },
 
    tplNonAttributes: [
        'path', 'relationship', 'contentType'
    ],
 
    destroy: function(){
        this.setRelationship(null);
        this.setContentType(null);
        this.callParent();
    },
 
    applyRelationship: function(data){
        if(!data || data.isRelationship){
            return data;
        }
        return new Ext.exporter.file.ooxml.Relationship(data);
    },
 
    updateRelationship: function(data, oldData){
        Ext.destroy(oldData);
    },
 
    applyContentType: function(data){
        if(!data || data.isContentType){
            return data;
        }
        return new Ext.exporter.file.ooxml.ContentType(data);
    },
 
    updateContentType: function(data, oldData){
        Ext.destroy(oldData);
    },
 
    /**
     * Collect all files that are part of the final zip file
     * @param {Object} files Object key is the path to the file and object value is the content
     * @param {Ext.exporter.file.ooxml.ContentType[]} types
     */
    collectFiles: Ext.emptyFn
 
});