# -*- coding: utf-8 -*-

"""
***************************************************************************
    workspace.py
    ---------------------
    Date                 : November 2012
    Copyright            : (C) 2012 by David Winslow
    Email                : dwins at opengeo dot com
***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************
"""

__author__ = 'David Winslow'
__date__ = 'November 2012'
__copyright__ = '(C) 2012, David Winslow'

# This will get replaced with a git SHA1 when you do a git archive

__revision__ = '$Format:%H$'

from processing.admintools.geoserver.support import xml_property, write_bool, \
    ResourceInfo, url


def workspace_from_index(catalog, node):
    name = node.find('name')
    return Workspace(catalog, name.text)


class Workspace(ResourceInfo):

    resource_type = 'workspace'

    def __init__(self, catalog, name):
        super(Workspace, self).__init__()
        self.catalog = catalog
        self.name = name

    @property
    def href(self):
        return url(self.catalog.service_url, ['workspaces', self.name + '.xml'
                   ])

    @property
    def coveragestore_url(self):
        return url(self.catalog.service_url, ['workspaces', self.name,
                   'coveragestores.xml'])

    @property
    def datastore_url(self):
        return url(self.catalog.service_url, ['workspaces', self.name,
                   'datastores.xml'])

    enabled = xml_property('enabled', lambda x: x.lower() == 'true')
    writers = dict(enabled=write_bool('enabled'))

    def __repr__(self):
        return '%s @ %s' % (self.name, self.href)
