package foundation.right; public class RightPool { private static RangePool applicationPool; private static RangePool orgPool; private static RangePool departmentPool; private static RangePool userPool; private static RangePool onlieUserPool; static { applicationPool = new RangePool(Range.Application); orgPool = new RangePool(Range.Org); departmentPool = new RangePool(Range.Department); userPool = new RangePool(Range.User); onlieUserPool = new RangePool(Range.OnlineUser); } public static String getResourceKey(Range range, String category, String instanceCode) { if (range == null) { range = Range.Application; } return range.toString() + "-" + category + "-" + instanceCode; } public static void apply(Range range, String resourceKey, RightAssistant assistant) { if (range == null) { range = Range.Application; } RangePool pool = parsePool(range); if (pool == null) { return; } pool.apply(resourceKey, assistant); } private static RangePool parsePool(Range range) { RangePool pool = null; if (Range.Application == range) { pool = applicationPool; } else if (Range.Org == range) { pool = orgPool; } else if (Range.Department == range) { pool = departmentPool; } else if (Range.User == range) { pool = userPool; } else if (Range.OnlineUser == range) { pool = onlieUserPool; } return pool; } }