All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.casbin.adapter.CasbinRule Maven / Gradle / Ivy

package org.casbin.adapter;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.casbin.jcasbin.model.Model;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @author fangzhengjin
 * @version V1.0
 * @title: CasbinRule
 * @package org.casbin.adapter
 * @description:
 * @date 2019/4/4 17:16
 */
@Data
@EqualsAndHashCode
class CasbinRule {
    private String ptype;
    private String v0;
    private String v1;
    private String v2;
    private String v3;
    private String v4;
    private String v5;

    public ArrayList toPolicy() {
        ArrayList policy = new ArrayList<>();
        policy.add(ptype);
        if (!StringUtils.isEmpty(v0)) {
            policy.add(v0);
        }
        if (!StringUtils.isEmpty(v1)) {
            policy.add(v1);
        }
        if (!StringUtils.isEmpty(v2)) {
            policy.add(v2);
        }
        if (!StringUtils.isEmpty(v3)) {
            policy.add(v3);
        }
        if (!StringUtils.isEmpty(v4)) {
            policy.add(v4);
        }
        if (!StringUtils.isEmpty(v5)) {
            policy.add(v5);
        }
        return policy;
    }

    /**
     * 将model转换为CasbinRule
     * 转换过程将会合并重复数据
     */
    public static List transformToCasbinRule(Model model) {
        Set casbinRules = new HashSet<>();
        model.model.values().forEach(x -> x.values().forEach(y -> y.policy.forEach(z -> {
            if (z.isEmpty()) return;
            int size = z.size();
            CasbinRule casbinRule = new CasbinRule();
            casbinRule.setPtype(y.key);
            casbinRule.setV0(z.get(0));
            if (size >= 2) {
                casbinRule.setV1(z.get(1));
            }
            if (size >= 3) {
                casbinRule.setV2(z.get(2));
            }
            if (size >= 4) {
                casbinRule.setV3(z.get(3));
            }
            if (size >= 5) {
                casbinRule.setV4(z.get(4));
            }
            if (size >= 6) {
                casbinRule.setV5(z.get(5));
            }
            casbinRules.add(casbinRule);
        })));
        return new ArrayList<>(casbinRules);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy