package jnpf.bizcommon.audit.service; import com.alibaba.fastjson.JSON; import jnpf.audit.diff.AuditFieldDiff; import jnpf.bizcommon.audit.service.support.AuditHiddenFieldDiffFilter; import java.util.HashMap; import java.util.List; import java.util.Map; public final class AuditHiddenFieldDiffFilterProbe { private AuditHiddenFieldDiffFilterProbe() { } @SuppressWarnings("unchecked") public static void main(String[] args) { Map metadata = new HashMap<>(); metadata.put("secret", meta(true)); metadata.put("childsecret", meta(true)); metadata.put("hiddentable", meta(true)); String diffs = "[{\"field\":\"secret\",\"newData\":\"private\"}," + "{\"field\":\"visible\",\"newData\":\"public\"}," + "{\"field\":\"table\",\"chidField\":[{\"prop\":\"childSecret\"}," + "{\"prop\":\"childVisible\"}],\"chidData\":[{\"childSecret\":\"private\"," + "\"jnpf_old_childSecret\":\"old private\",\"childVisible\":\"public\"}]}," + "{\"field\":\"hiddenTable\",\"chidField\":[{\"prop\":\"visible\"}]," + "\"chidData\":[{\"visible\":\"private\"}]}," + "{\"field\":\"hiddenOnlyChange\",\"chidField\":[{\"prop\":\"childSecret\"}," + "{\"prop\":\"childVisible\"}],\"chidData\":[{\"childSecret\":\"private\"}]}]"; List> result = (List>) JSON.parse( AuditHiddenFieldDiffFilter.filter(diffs, metadata)); check(result.size() == 2, "hidden main field and hidden table removed"); check("visible".equals(result.get(0).get("field")), "visible main field retained"); Map table = result.get(1); List> fields = (List>) table.get("chidField"); List> rows = (List>) table.get("chidData"); check(fields.size() == 1 && "childVisible".equals(fields.get(0).get("prop")), "hidden child column removed"); check(!rows.get(0).containsKey("childSecret") && !rows.get(0).containsKey("jnpf_old_childSecret") && "public".equals(rows.get(0).get("childVisible")), "hidden child values removed; visible value retained"); } private static AuditFieldDiff.FieldMeta meta(boolean hidden) { return new AuditFieldDiff.FieldMeta(null, null, null, null, null, null, null, null, hidden); } private static void check(boolean condition, String message) { if (!condition) { throw new AssertionError(message); } } }