/** * Creates a type representing a level. * * @param dimension Dimension which values of this type must belong to, or null if not known * @param hierarchy Hierarchy which values of this type must belong to, or null if not known * @param level Level which values of this type must belong to, or null if */ public LevelType(Dimension dimension, Hierarchy hierarchy, Level level) { this.dimension = dimension; this.hierarchy = hierarchy; this.level = level; if (level != null) { Util.assertPrecondition(hierarchy != null, "hierarchy != null"); Util.assertPrecondition( level.getHierarchy() == hierarchy, "level.getHierarchy() == hierarchy"); } if (hierarchy != null) { Util.assertPrecondition(dimension != null, "dimension != null"); Util.assertPrecondition( hierarchy.getDimension() == dimension, "hierarchy.getDimension() == dimension"); } StringBuilder buf = new StringBuilder("LevelType<"); if (level != null) { buf.append("level=").append(level.getUniqueName()); } else if (hierarchy != null) { buf.append("hierarchy=").append(hierarchy.getUniqueName()); } else if (dimension != null) { buf.append("dimension=").append(dimension.getUniqueName()); } buf.append(">"); this.digest = buf.toString(); }
public static LevelType forLevel(Level level) { return new LevelType(level.getDimension(), level.getHierarchy(), level); }