def METHOD_NAME(user=None, language_id=JAVA, full=False, system_only=False):
    profiles = []
    hook_types = IastStrategyModel.objects.filter(
        Q(
            state__in=["enable"] if not full else ["enable", "disable"],
            user_id__in={1, user.id} if user else [1],
        )
        & (Q(system_type=1) if system_only else Q())
    ).order_by("id")
    hook_types_a = HookType.objects.filter(
        Q(
            language_id=language_id,
            enable__in=[const.HOOK_TYPE_ENABLE] if not full else [const.HOOK_TYPE_ENABLE, const.HOOK_TYPE_DISABLE],
            created_by__in={1, user.id} if user else [1],
            type__in=(1, 2, 3),
        )
        & (Q(system_type=1) if system_only else Q())
    ).order_by("id")
    for hook_type_ in list(hook_types) + list(hook_types_a):
        hook_type = hook_type_
        strategy_details = []
        if isinstance(hook_type, IastStrategyModel):
            hook_type = convert_strategy(hook_type)
        strategies = hook_type.strategies.filter(
            Q(
                language_id=language_id,
                type__in=(1, 2, 3) if not isinstance(hook_type, IastStrategyModel) else [4],
                created_by__in=[1, user.id] if user else [1],
                enable=const.HOOK_TYPE_ENABLE,
            )
            & (Q(system_type=1) if system_only else Q())
        ).order_by("id")
        if full:
            from django.forms.models import model_to_dict
            if not strategies.count():
                continue
            profile = {
                "type": hook_type.type,
                "enable": hook_type.enable,
                "value": hook_type.value,
                "details": sorted(
                    [
                        model_to_dict(
                            i,
                            exclude=[
                                "id",
                                "hooktype",
                                "create_time",
                                "strategy",
                                "update_time",
                            ],
                        )
                        for i in strategies
                    ],
                    key=lambda item: item["value"],
                ),
            }
            profiles.append(profile)
        else:
            strategy_details.extend(
                {
                    "source": strategy.get("source"),
                    "track": strategy.get("track"),
                    "target": strategy.get("target"),
                    "value": strategy.get("value"),
                    "inherit": strategy.get("inherit"),
                    "ignore_blacklist": strategy.get("ignore_blacklist"),
                    "ignore_internal": strategy.get("ignore_internal"),
                    "tags": strategy.get("tags"),
                    "untags": strategy.get("untags"),
                    "command": strategy.get("command"),
                    "stack_blacklist": strategy.get("stack_blacklist"),
                }
                for strategy in strategies.values()
            )
            strategy_details = sorted(strategy_details, key=lambda item: str(item["value"]))
            if not strategy_details:
                continue
            profiles.append(
                {
                    "type": hook_type.type,
                    "enable": hook_type.enable,
                    "value": hook_type.value,
                    "details": strategy_details,
                }
            )
    return sorted(profiles, key=lambda item: (item["value"], item["type"]))