/* 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.riotfamily.forms.factory; import java.util.HashMap; import java.util.Map.Entry; import org.riotfamily.forms.Form; public abstract class AbstractFormRepository implements FormRepository { private HashMap<String, FormFactory> factories = new HashMap<String, FormFactory>(); public boolean containsForm(String id) { return factories.containsKey(id); } public FormFactory getFormFactory(String id) { FormFactory factory = (FormFactory) factories.get(id); if (factory == null) { throw new FormDefinitionException("No such form: " + id); } return factory; } public Form createForm(String id) { Form form = getFormFactory(id).createForm(); form.setId(id); return form; } public Class<?> getBeanClass(String id) { return getFormFactory(id).getBeanClass(); } public String findFormId(Class<?> beanClass) { for (Entry<String, FormFactory> entry : factories.entrySet()) { if (beanClass.equals(entry.getValue().getBeanClass())) { return entry.getKey(); } } return null; } public void registerFormFactory(String id, FormFactory formFactory) { factories.put(id, formFactory); } protected HashMap<String, FormFactory> getFactories() { return this.factories; } }