package org.robobinding.presentationmodel;
import org.robobinding.function.Functions;
import org.robobinding.function.LazyFunctions;
import org.robobinding.property.Dependencies;
import org.robobinding.property.LazyProperties;
import org.robobinding.property.Properties;
import org.robobinding.property.PropertyWithDependencySupply;
/**
* @since 1.0
* @author Cheng Wei
*
*/
public class PresentationModelAdapterFactory {
public PresentationModelAdapter create(AbstractPresentationModelObject presentationModelObject) {
Class<?> presentationModelClass = presentationModelObject.getPresentationModelClass();
Dependencies dependencies = new Dependencies(presentationModelObject, presentationModelObject.propertyDependencies());
PropertyWithDependencySupply propertyWithDependencySupply = new PropertyWithDependencySupply(
presentationModelClass, presentationModelObject, dependencies);
Properties properties = new LazyProperties(presentationModelClass, presentationModelObject.propertyNames(),
presentationModelObject.dataSetPropertyNames(), propertyWithDependencySupply);
Functions functions = new LazyFunctions(presentationModelClass,
presentationModelObject.eventMethods(), presentationModelObject);
return new PresentationModelAdapterImpl(presentationModelClass, properties, functions);
}
}