def parse_encrypt_factors(topic: Topic) -> List[EncryptFactorGroup]: groups = ArrayHelper(topic.factors) \ .filter(lambda x: x.encrypt is not None and x.encrypt != FactorEncryptMethod.NONE) \ .map(lambda x: EncryptFactor(x)) \ .filter(lambda x: is_not_blank(x.factorName)) \ .group_by(lambda x: x.names[0]) return ArrayHelper(list(groups.items())) \ .map(lambda x: EncryptFactorGroup(name=x[0], factors=x[1])).to_list()
def parse_date_or_time_factors(topic: Topic) -> List[DateOrTimeFactorGroup]: groups = ArrayHelper(topic.factors) \ .filter(is_date_or_time) \ .map(lambda x: DateOrTimeFactor(x)) \ .filter(lambda x: is_not_blank(x.factorName)) \ .group_by(lambda x: x.names[0]) return ArrayHelper(list(groups.items())) \ .map(lambda x: DateOrTimeFactorGroup(name=x[0], factors=x[1])).to_list()
def __init__(self, name: str, factors: List[DateOrTimeFactor]): self.name = name # in reality, zero or one factor. # if there is one, name is same as group's, and will not contain group anymore self.factors = ArrayHelper(factors).filter(lambda x: len(x.names) == 1).to_list() groups = ArrayHelper(factors).filter(lambda x: len(x.names) > 1) \ .each(lambda x: x.pop_first_name()) \ .group_by(lambda x: x.names[0]) self.groups = ArrayHelper(list(groups.items())) \ .map(lambda x: DateOrTimeFactorGroup(name=x[0], factors=x[1])).to_list()
def parse_default_value_factors(topic: Topic) -> List[DefaultValueFactorGroup]: if ask_ignore_default_on_raw(): return [] groups = ArrayHelper(topic.factors) \ .filter(lambda x: x.defaultValue is not None) \ .map(lambda x: DefaultValueFactor(x)) \ .filter(lambda x: is_not_blank(x.factorName)) \ .group_by(lambda x: x.names[0]) return ArrayHelper(list(groups.items())) \ .map(lambda x: DefaultValueFactorGroup(name=x[0], factors=x[1])).to_list()