Package javango.contrib.compat

Source Code of javango.contrib.compat.Javango

package javango.contrib.compat;

import java.io.Serializable;

import javango.db.Manager;
import javango.db.ManagerException;
import javango.forms.Form;
import javango.forms.fields.Field;
import javango.http.Http404;
import javango.http.Http500;
import javango.http.HttpException;

import com.google.inject.Inject;
import com.google.inject.Injector;

public class Javango {

  private Injector injector;
 
  @Inject
  public Javango(Injector injector) {
    super();
    this.injector = injector;
  }

  public javango.db.Managers Managers() {
    return injector.getInstance(javango.db.Managers.class);
  }
 
  public javango.forms.Forms Forms() {
    return injector.getInstance(javango.forms.Forms.class);
  }
 
  public <T> Manager<T> newManager(Class<T> model) {
    return Managers().forClass(model);
  }
 
  public <T extends Form> T newForm(Class<T> formClass) {
    return Forms().newForm(formClass);
  }
 
  public <T extends Field<?>> T newField(Class<T> fieldClass) {
    return injector.getInstance(fieldClass);
  }
 
  public <T> T getObject(Class<T> model, Serializable key) throws ManagerException {
    Manager<T> manager = Managers().forClass(model);
   
    try {
      return manager.get(key);
    } catch (ManagerException e) {
      throw new ManagerException(String.format("A database eror occurred while getting an instance of '%s' with key '%s'", model.getName(), key));
    }
  }

  public <T> T getObject(Class<T> model, String field, Object value) throws ManagerException {
    Manager<T> manager = Managers().forClass(model);
   
    try {
      return manager.filter(field, value).get();
    } catch (ManagerException e) {
      throw new ManagerException(String.format("A database eror occurred while getting an instance of '%s' with %s='%s'", model.getName(), field, value));
    }
  }

  public <T> T getObjectOr404(Class<T> model, Serializable key) throws HttpException {
    try {
      T object = getObject(model, key);
      if (object == null) {
        //   TODO Make the error message a little cleaner,  maybe don't use the full class name.
        throw new Http404(String.format("Unable to find '%s' instance with key '%s'", model.getName(), key));     
      }
      return object;
    } catch (ManagerException e) {
      throw new Http500(e.getMessage());
    }
   
  }

  public <T> T getObjectOr404(Class<T> model, String field, Object value) throws HttpException {
    Manager<T> manager = Managers().forClass(model);
   
    try {
      T object = manager.filter(field, value).get();
      if (object == null) {
        //   TODO Make the error message a little cleaner,  maybe don't use the full class name.
        throw new Http404(String.format("Unable to find '%s' instance with '%s' of '%s'", model.getName(), field, value));     
      }
      return object;
    } catch (ManagerException e) {
      throw new Http500(e.getMessage());
    }
  }

   
}
TOP

Related Classes of javango.contrib.compat.Javango

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.