def gradient(self, gradient):
     ret = handle_object_placement(self.__gradient, gradient, Gradient)
     if ret:
         self.__gradient = ret
     else:
         try:
             loadChecker(type(self).__name__, gradient, ['colors', 'minValue', 'maxValue'], "gradient")
             self.__gradient = Gradient(gradient['colors'], gradient['minValue'], gradient['maxValue'])
         except MissingParameters as e:
             handler(type(self).__name__, 'Gradient {} is missing parameters: '
                                          '{}. Skipping.'
                     .format(gradient, e))
 def versions(self, versions):
     ret = handle_object_placement(self.__versions, versions, Versions)
     if ret:
         self.__versions = ret
     else:
         typeChecker(type(self).__name__, versions, dict, "version")
         attack = UNSETVALUE
         if 'attack' in versions:
             attack = versions['attack']
         try:
             loadChecker(type(self).__name__, versions, ['layer', 'navigator'], "versions")
             self.__versions = Versions(versions['layer'], attack, versions['navigator'])
         except MissingParameters as e:
             handler(type(self).__name__, 'versions {} is missing parameters: '
                                          '{}. Skipping.'
                     .format(versions, e))
 def legendItems(self, legendItems):
     typeChecker(type(self).__name__, legendItems, list, "legendItems")
     self.__legendItems = []
     for entry in legendItems:
         ret = handle_object_placement(self.__legendItems, entry, LegendItem, list=True)
         if ret:
             self.__legendItems = ret
         else:
             try:
                 loadChecker(type(self).__name__, entry, ['label', 'color'], "legendItem")
                 temp = LegendItem(entry['label'], entry['color'])
                 self.__legendItems.append(temp)
             except MissingParameters as e:
                 handler(type(self).__name__, 'Legend Item {} is missing parameters: '
                                              '{}. Skipping.'
                         .format(entry, e))
 def filters(self, filters):
     ret = handle_object_placement(self.__filters, filters, Filter)
     if ret:
         self.__filters = ret
     else:
         temp = Filter(self.domain)
         try:
             loadChecker(type(self).__name__, filters, ['platforms'], "filters")
             # force upgrade to v4
             if 'stages' in filters:
                 print('[Filters] - V3 Field "stages" detected. Upgrading Filters object to V4.')
             temp.platforms = filters['platforms']
             self.__filters = temp
         except MissingParameters as e:
             handler(type(self).__name__, 'Filters {} is missing parameters: '
                                          '{}. Skipping.'
                     .format(filters, e))
    def techniques(self, techniques):
        typeChecker(type(self).__name__, techniques, list, "techniques")
        self.__techniques = []

        for entry in techniques:
            ret = handle_object_placement(self.__techniques, entry, Technique, list=True)
            if ret:
                self.__techniques = ret
            else:
                try:
                    loadChecker(type(self).__name__, entry, ['techniqueID'], "technique")
                    temp = Technique(entry['techniqueID'])
                    temp._loader(entry)
                    self.__techniques.append(temp)
                except MissingParameters as e:
                    handler(type(self).__name__, 'Technique {} is missing parameters: '
                                                 '{}. Skipping.'
                            .format(entry, e))
 def metadata(self, metadata):
     typeChecker(type(self).__name__, metadata, list, "metadata")
     self.__metadata = []
     for entry in metadata:
         ret = handle_object_placement(self.__metadata, entry, Metadata, list=True)
         if ret:
             self.__metadata = ret
         else:
             try:
                 if "divider" in entry:
                     self.__metadata.append(MetaDiv(entry["divider"]))
                 else:
                     loadChecker(type(self).__name__, entry, ['name', 'value'], "metadata")
                     self.__metadata.append(Metadata(entry['name'], entry['value']))
             except MissingParameters as e:
                 handler(
                     type(self).__name__,
                     'Metadata {} is missing parameters: {}. Skipping.'.format(entry, e)
                 )