/** * Copyright (c) 2011 Stefan Henss. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Stefan Henss - initial API and implementation. */ package org.eclipse.recommenders.apidocs; import java.util.Map; import java.util.Objects; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.eclipse.recommenders.utils.Checks; import org.eclipse.recommenders.utils.names.IMethodName; import org.eclipse.recommenders.utils.names.ITypeName; public final class ClassOverrideDirectives { public String _id; public String _rev; private final String providerId = getClass().getSimpleName(); private ITypeName type; private int numberOfSubclasses; private Map<IMethodName, Integer> overrides; public static ClassOverrideDirectives create(final ITypeName type, final int numberOfSubclasses, final Map<IMethodName, Integer> overriddenMethods) { final ClassOverrideDirectives res = new ClassOverrideDirectives(); res.type = type; res.numberOfSubclasses = numberOfSubclasses; res.overrides = overriddenMethods; return res; } public int getNumberOfSubclasses() { return numberOfSubclasses; } public Map<IMethodName, Integer> getOverrides() { return overrides; } public void validate() { Checks.ensureIsTrue("ClassOverrideDirectives".equals(providerId)); //$NON-NLS-1$ Objects.requireNonNull(type); Checks.ensureIsGreaterOrEqualTo(numberOfSubclasses, 1, null); Checks.ensureIsFalse(overrides.isEmpty(), "empty overrides not allowed."); //$NON-NLS-1$ } public ITypeName getType() { return type; } @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } }