def _resolved_new_traits(self, proj_ctx: 'ProjectionContext', current_PAS: '******'):
        resolved_trait_set = ResolvedTraitSet(proj_ctx._projection_directive._res_opt)
        projection_owner_name = proj_ctx._projection_directive._original_source_attribute_name if proj_ctx._projection_directive._original_source_attribute_name is not None else ''

        for trait_ref in self.traits_to_add:
            trait_ref_copy = trait_ref._fetch_resolved_traits(proj_ctx._projection_directive._res_opt).deep_copy()
            self._replace_wildcard_characters(proj_ctx._projection_directive._res_opt, trait_ref_copy, projection_owner_name, current_PAS)
            resolved_trait_set = resolved_trait_set.merge_set(trait_ref_copy)

        return resolved_trait_set
示例#2
0
    def _construct_resolved_traits(self, rtsb: 'ResolvedTraitSetBuilder', res_opt: 'ResolveOptions') -> None:
        from cdm.resolvedmodel import ResolvedTraitSet

        # get only the elevated traits from attributes first, then add in all traits from this definition
        if self.members:
            rts_elevated = ResolvedTraitSet(res_opt)
            for att in self.members:
                rts_att = att._fetch_resolved_traits(res_opt)
                if rts_att and rts_att.has_elevated:
                    rts_elevated = rts_elevated.merge_set(rts_att, True)
            rtsb.merge_traits(rts_elevated)

        self._construct_resolved_traits_def(None, rtsb, res_opt)
示例#3
0
    def _construct_resolved_traits(self, rtsb: 'ResolvedTraitSetBuilder', res_opt: 'ResolveOptions') -> None:
        from cdm.resolvedmodel import ResolvedTraitSet

        base = self.extends_entity
        if base:
            # merge in all from base class
            rtsb.merge_traits(base._fetch_resolved_traits(res_opt))

        if self.attributes:
            rts_elevated = ResolvedTraitSet(res_opt)
            for att in self.attributes:
                rts_att = att._fetch_resolved_traits(res_opt)
                if rts_att and rts_att.has_elevated:
                    rts_elevated = rts_elevated.merge_set(rts_att, True)
            rtsb.merge_traits(rts_elevated)

        self._construct_resolved_traits_def(None, rtsb, res_opt)