# coding: utf-8
from ru.curs.showcase.core.jython import JythonProc, JythonDTO
from ru.curs.showcase.util.xml import XMLUtils
from org.xml.sax.helpers import DefaultHandler
from ru.curs.showcase.util import TextUtils

# init vars
data = None
resultMetadata = None
resultData = None


class myHandler(DefaultHandler):
    def startElement(self, namespaceURI, lname, qname, attrs):
        global resultMetadata
        global resultData
        if (qname == "metadata"):
            resultMetadata = u"{date: %s, minHours: %s, maxHours: %s, dateInterval: '%s', style: '%s', editable: %s, toolbarVisible: %s}" % (attrs.getValue('date'), attrs.getValue('minHours'), attrs.getValue('maxHours'), attrs.getValue('dateInterval'), attrs.getValue('style'), attrs.getValue('editable'), attrs.getValue('toolbarVisible'))
        if (qname == "event"):
            resultData += u"{id: %s, summary: %s, startTime: %s, endTime: %s, allDay: '%s'}," % (attrs.getValue('id'), attrs.getValue('summary'), attrs.getValue('startTime'), attrs.getValue('endTime'), attrs.getValue('allDay'))

class handleCalendar(JythonProc):

    def postProcess(self, context, elId, adata):
        global data
        data = adata
        return mainproc()

def mainproc():
    global resultMetadata
    global resultData
    resultData = u'['
    parser = XMLUtils.createSAXParser()
    stream = TextUtils.stringToStream(data)
    parser.parse(stream, myHandler())
    resultData += u']'
    result = u"{metadata: "+resultMetadata+u", data: "+resultData+u"}"  
    return JythonDTO([result])

if __name__ == "__main__":
    from org.python.core import codecs
    codecs.setDefaultEncoding('utf-8')
    mainproc()