package ch.vorburger.blueprints.data; import java.util.LinkedList; import java.util.List; import ch.vorburger.blueprints.data.meta.Type; /** * DataObjectFactory which internally tries different registered other DataObjectFactories. * * @author Michael Vorburger */ public class ChainedDataObjectFactory implements DataObjectFactory { private final List<DataObjectFactory> list = new LinkedList<DataObjectFactory>(); public void register(DataObjectFactory dataObjectFactory) { list.add(dataObjectFactory); } @Override public DataObject create(String typeURI) { for (DataObjectFactory dataObjectFactory : list) { DataObject dataObject = dataObjectFactory.create(typeURI); if (dataObject != null) { return dataObject; } } return null; } @Override public DataObject create(Type type) { for (DataObjectFactory dataObjectFactory : list) { DataObject dataObject = dataObjectFactory.create(type); if (dataObject != null) { return dataObject; } } return null; } // @Override // public <T> T create(Class<T> klass) { // for (DataObjectFactory dataObjectFactory : list) { // T dataObject = dataObjectFactory.create(klass); // if (dataObject != null) { // return dataObject; // } // } // return null; // } }