/**
* Copyright (c) 2013-2016 Angelo ZERR.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package tern.angular.modules;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class AbstractAngularModulesRegistry implements
IAngularModulesRegistry {
private final Map<String, Module> modules;
public AbstractAngularModulesRegistry() {
this.modules = new HashMap<String, Module>();
}
public void addModule(Module module) {
modules.put(module.getName(), module);
}
public Collection<Module> getModules() {
return modules.values();
}
public Module getModule(String name) {
return modules.get(name);
}
public void collectDirectives(String tagName, String directiveName,
IDirectiveSyntax syntax, List<Directive> existingDirectives,
Restriction restriction, IDirectiveCollector collector) {
// collect directives of each modules.
Collection<Module> modules = getModules();
for (Module module : modules) {
module.collectDirectives(tagName, directiveName, syntax,
existingDirectives, restriction, collector);
}
}
public Directive getDirective(String tagName, String name,
Restriction restriction) {
Collection<Module> modules = getModules();
for (Module module : modules) {
Directive directive = module.getDirective(tagName, name, restriction);
if (directive != null) {
return directive;
}
}
return null;
}
public void clear() {
this.modules.clear();
}
}