/**
* Copyright 2006-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.mybatis.generator.eclipse.tests.harness.summary;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class AbstractSummary {
private Map<String, AnnotationSummary> annotationSummaries = new HashMap<String, AnnotationSummary>();
private Map<String, ClassSummary> classSummaries = new HashMap<String, ClassSummary>();
private Map<String, EnumSummary> enumSummaries = new HashMap<String, EnumSummary>();
private Map<String, InterfaceSummary> interfaceSummaries = new HashMap<String, InterfaceSummary>();
public ClassSummary getClassSummary(String name) {
return classSummaries.get(name);
}
public int getClassCount() {
return classSummaries.size();
}
public InterfaceSummary getInterfaceSummary(String name) {
return interfaceSummaries.get(name);
}
public int getInterfaceCount() {
return interfaceSummaries.size();
}
public EnumSummary getEnumSummary(String name) {
return enumSummaries.get(name);
}
public int getEnumCount() {
return enumSummaries.size();
}
public AnnotationSummary getAnnotationSummary(String name) {
return annotationSummaries.get(name);
}
public int getAnnotationCount() {
return annotationSummaries.size();
}
protected abstract static class AbstractSummaryBuilder<T extends AbstractSummaryBuilder<T>> {
protected T withAnnotationSummaries(List<AnnotationSummary> annotationSummaries) {
fillMap(annotationSummaries, summary().annotationSummaries);
return getThis();
}
protected T withClassSummaries(List<ClassSummary> classSummaries) {
fillMap(classSummaries, summary().classSummaries);
return getThis();
}
protected T withEnumSummaries(List<EnumSummary> enumSummaries) {
fillMap(enumSummaries, summary().enumSummaries);
return getThis();
}
protected T withInterfaceSummaries(List<InterfaceSummary> interfaceSummaries) {
fillMap(interfaceSummaries, summary().interfaceSummaries);
return getThis();
}
private <S extends AbstractBodyElementSummary> void fillMap(List<S> items, Map<String, S> map) {
for (S item : items) {
map.put(item.getName(), item);
}
}
protected abstract AbstractSummary summary();
protected abstract T getThis();
}
}