NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

campaign_parameters.py (11378B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\campaigns\client\v2\data_model\campaign_parameters.py
      2 import campaigns.client.v2.data_model.flatbuffer.event_matcher_definitions_generated as definitions_fb
      3 from campaigns.client.v2.data_model.ui_definition import UIDefinition
      4 from eveProto.generated.eve_public.campaign.parameter.parameter_pb2 import Definition
      5 
      6 class ParameterDefinition(object):
      7 
      8     def __init__(self, key, ui_definition, parameter):
      9         self._key = key
     10         self._ui_definition = ui_definition
     11         self._parameter = parameter
     12 
     13     @property
     14     def key(self):
     15         return self._key
     16 
     17     @property
     18     def ui_definition(self):
     19         return self._ui_definition
     20 
     21     @property
     22     def parameter(self):
     23         return self._parameter
     24 
     25     @classmethod
     26     def from_proto(cls, definition):
     27         key = definition.key
     28         ui_definition = UIDefinition.from_proto(definition.ui)
     29         parameter_class = definition.WhichOneof('class')
     30         if parameter_class == 'single_value':
     31             parameter = SingleValueParameterDefinition(definition.single_value.value_type)
     32         elif parameter_class == 'set':
     33             parameter = SetParameterDefinition(definition.set.value_type)
     34         elif parameter_class == 'multi_value_type_set':
     35             values = [ value for value in definition.multi_value_type_set.accepted_value_types ]
     36             parameter = MultiValueTypeParameterDefinition(values)
     37         else:
     38             raise NotImplementedError
     39         return ParameterDefinition(key, ui_definition, parameter)
     40 
     41     def to_flatbuffer(self, builder):
     42         key_offset = builder.CreateString(self.key)
     43         ui_definition_offset = self.ui_definition.to_flatbuffer(builder)
     44         if isinstance(self.parameter, SingleValueParameterDefinition):
     45             value_offset = builder.CreateString(self.parameter.value_type)
     46             definitions_fb.ParameterStartValuesVector(builder, 1)
     47             builder.PrependUOffsetTRelative(value_offset)
     48             values_offset = builder.EndVector()
     49             values_type = definitions_fb.ParameterType.SingleValue
     50         elif isinstance(self.parameter, MultiValueTypeParameterDefinition):
     51             value_offsets = [ builder.CreateString(value_type) for value_type in self.parameter.value_types ]
     52             definitions_fb.ParameterStartValuesVector(builder, len(value_offsets))
     53             for value_offset in reversed(value_offsets):
     54                 builder.PrependUOffsetTRelative(value_offset)
     55 
     56             values_offset = builder.EndVector()
     57             values_type = definitions_fb.ParameterType.MultiValue
     58         elif isinstance(self.parameter, SetParameterDefinition):
     59             value_offset = builder.CreateString(self.parameter.value_type)
     60             definitions_fb.ParameterStartValuesVector(builder, 1)
     61             builder.PrependUOffsetTRelative(value_offset)
     62             values_offset = builder.EndVector()
     63             values_type = definitions_fb.ParameterType.Set
     64         else:
     65             raise NotImplementedError
     66         definitions_fb.ParameterStart(builder)
     67         definitions_fb.ParameterAddKey(builder, key_offset)
     68         definitions_fb.ParameterAddUi(builder, ui_definition_offset)
     69         definitions_fb.ParameterAddType(builder, values_type)
     70         definitions_fb.ParameterAddValues(builder, values_offset)
     71         return definitions_fb.ParameterEnd(builder)
     72 
     73     @classmethod
     74     def from_flatbuffer(cls, parameter_fb):
     75         key = parameter_fb.Key()
     76         ui = UIDefinition.from_flatbuffer(parameter_fb.Ui())
     77         parameter_type = parameter_fb.Type()
     78         if parameter_type == definitions_fb.ParameterType.SingleValue:
     79             value = parameter_fb.Values(0)
     80             parameter = SingleValueParameterDefinition(value.decode('utf-8'))
     81         elif parameter_type == definitions_fb.ParameterType.Set:
     82             value = parameter_fb.Values(0)
     83             parameter = SetParameterDefinition(value.decode('utf-8'))
     84         elif parameter_type == definitions_fb.ParameterType.MultiValue:
     85             values = []
     86             for index in range(parameter_fb.ValuesLength()):
     87                 value = parameter_fb.Values(index)
     88                 values.append(value.decode('utf-8'))
     89 
     90             parameter = MultiValueTypeParameterDefinition(values)
     91         else:
     92             raise ValueError('Unsupported parameter type')
     93         return ParameterDefinition(key, ui, parameter)
     94 
     95     def __eq__(self, other):
     96         if not isinstance(other, ParameterDefinition):
     97             raise NotImplementedError
     98         return self.key == other.key and self.ui_definition == other.ui_definition and self.parameter == other.parameter
     99 
    100     def __ne__(self, other):
    101         return not self.__eq__(other)
    102 
    103     def __repr__(self):
    104         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    105 
    106 
    107 class SingleValueParameterDefinition(object):
    108 
    109     def __init__(self, value_type):
    110         self._value_type = value_type
    111 
    112     @property
    113     def value_type(self):
    114         return self._value_type
    115 
    116     def __eq__(self, other):
    117         if not isinstance(other, SingleValueParameterDefinition):
    118             raise NotImplementedError
    119         return self.value_type == other.value_type
    120 
    121     def __ne__(self, other):
    122         return not self.__eq__(other)
    123 
    124     def __repr__(self):
    125         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    126 
    127 
    128 class SetParameterDefinition(object):
    129 
    130     def __init__(self, value_type):
    131         self._value_type = value_type
    132 
    133     @property
    134     def value_type(self):
    135         return self._value_type
    136 
    137     def __eq__(self, other):
    138         if not isinstance(other, SetParameterDefinition):
    139             raise NotImplementedError
    140         return self.value_type == other.value_type
    141 
    142     def __ne__(self, other):
    143         return not self.__eq__(other)
    144 
    145     def __repr__(self):
    146         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    147 
    148 
    149 class MultiValueTypeParameterDefinition(object):
    150 
    151     def __init__(self, value_types):
    152         self._value_types = value_types
    153 
    154     @property
    155     def value_types(self):
    156         return self._value_types
    157 
    158     def __eq__(self, other):
    159         if not isinstance(other, MultiValueTypeParameterDefinition):
    160             raise NotImplementedError
    161         return self.value_types == other.value_types
    162 
    163     def __ne__(self, other):
    164         return not self.__eq__(other)
    165 
    166     def __repr__(self):
    167         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    168 
    169 
    170 class ParameterConfiguration(object):
    171 
    172     def __init__(self, key, parameter):
    173         self._key = key
    174         self._parameter = parameter
    175 
    176     @property
    177     def key(self):
    178         return self._key
    179 
    180     @property
    181     def parameter(self):
    182         return self._parameter
    183 
    184     @classmethod
    185     def from_proto(cls, configuration):
    186         parameter_class = configuration.WhichOneof('class')
    187         if parameter_class == 'single_value':
    188             parameter = SingleValueParameterConfiguration.from_proto(configuration.single_value)
    189         elif parameter_class == 'set_value':
    190             parameter = SetParameterConfiguration.from_proto(configuration.set_value)
    191         elif parameter_class == 'multi_value_type_set_value':
    192             parameter = MultiValueTypeParameterConfiguration.from_proto(configuration.multi_value_type_set_value)
    193         else:
    194             raise NotImplementedError('Unknown parameter configuration class: %s' % parameter_class)
    195         return ParameterConfiguration(configuration.key, parameter)
    196 
    197     def __eq__(self, other):
    198         if not isinstance(other, ParameterConfiguration):
    199             raise NotImplementedError
    200         return self.key == other.key and self.parameter == other.parameter
    201 
    202     def __ne__(self, other):
    203         return not self.__eq__(other)
    204 
    205     def __repr__(self):
    206         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    207 
    208 
    209 class ParameterValue(object):
    210 
    211     def __init__(self, literal = None, wildcard = False):
    212         self._literal = literal
    213         self._wildcard = wildcard
    214 
    215     @property
    216     def literal(self):
    217         return self._literal
    218 
    219     @property
    220     def wildcard(self):
    221         return self._wildcard
    222 
    223     @classmethod
    224     def from_proto(cls, value):
    225         value_class = value.WhichOneof('value')
    226         if value_class == 'literal':
    227             return ParameterValue(literal=value.literal)
    228         if value_class == 'wildcard':
    229             return ParameterValue(wildcard=value.wildcard)
    230         raise NotImplementedError('Unknown parameter value class: %s' % value_class)
    231 
    232     def __eq__(self, other):
    233         if not isinstance(other, ParameterValue):
    234             raise NotImplementedError
    235         return self.literal == other.literal and self.wildcard == other.wildcard
    236 
    237     def __ne__(self, other):
    238         return not self.__eq__(other)
    239 
    240     def __repr__(self):
    241         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    242 
    243 
    244 class SingleValueParameterConfiguration(object):
    245 
    246     def __init__(self, value_type, value):
    247         self._value_type = value_type
    248         self._value = value
    249 
    250     @property
    251     def value_type(self):
    252         return self._value_type
    253 
    254     @property
    255     def value(self):
    256         return self._value
    257 
    258     @classmethod
    259     def from_proto(cls, single_value):
    260         return SingleValueParameterConfiguration(single_value.value_type, ParameterValue.from_proto(single_value.value))
    261 
    262     def __eq__(self, other):
    263         if not isinstance(other, SingleValueParameterConfiguration):
    264             raise NotImplementedError
    265         return self.value_type == other.value_type and self.value == other.value
    266 
    267     def __ne__(self, other):
    268         return not self.__eq__(other)
    269 
    270     def __repr__(self):
    271         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    272 
    273 
    274 class SetParameterConfiguration(object):
    275 
    276     def __init__(self, value_type, values):
    277         self._value_type = value_type
    278         self._values = values
    279 
    280     @property
    281     def value_type(self):
    282         return self._value_type
    283 
    284     @property
    285     def values(self):
    286         return self._values
    287 
    288     @classmethod
    289     def from_proto(cls, set_value):
    290         return SetParameterConfiguration(set_value.value_type, [ ParameterValue.from_proto(value) for value in set_value.values ])
    291 
    292     def __eq__(self, other):
    293         if not isinstance(other, SetParameterConfiguration):
    294             raise NotImplementedError
    295         return self.value_type == other.value_type and self.values == other.values
    296 
    297     def __ne__(self, other):
    298         return not self.__eq__(other)
    299 
    300     def __repr__(self):
    301         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    302 
    303 
    304 class MultiValueTypeParameterConfiguration(object):
    305 
    306     def __init__(self, value_sets):
    307         self._value_sets = value_sets
    308 
    309     @property
    310     def value_sets(self):
    311         return self._value_sets
    312 
    313     @classmethod
    314     def from_proto(cls, multi_value_type_set_value):
    315         return MultiValueTypeParameterConfiguration([ SetParameterConfiguration.from_proto(value_set) for value_set in multi_value_type_set_value.values ])
    316 
    317     def __eq__(self, other):
    318         if not isinstance(other, MultiValueTypeParameterConfiguration):
    319             raise NotImplementedError
    320         return self.value_sets == other.value_sets
    321 
    322     def __ne__(self, other):
    323         return not self.__eq__(other)
    324 
    325     def __repr__(self):
    326         return '<%s %r>' % (self.__class__.__name__, self.__dict__)