Package com.breezejs.hib

Source Code of com.breezejs.hib.SaveService

package com.breezejs.hib;

import javax.ws.rs.core.Response;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.jboss.logging.Logger;

import com.breezejs.save.ContextProvider;
import com.breezejs.save.SaveResult;
import com.breezejs.util.Json;

/**
* Class to receive JSON save bundles and save them to Hibernate
* @author Steve
*
*/
public class SaveService {

  public static final Logger log = Logger.getLogger(SaveService.class);
  private SessionFactory sessionFactory;
  private Metadata metadata;
 
  public SaveService(SessionFactory sessionFactory, Metadata metadata) {
    this.sessionFactory = sessionFactory;
    this.metadata = metadata;
  }
 
  /**
   * Save the changes and return a response indicated the updated entities
   * or errors
   * @param source
   * @return
   */
  public Response saveChanges(String source) {
    log.debugv("saveChanges", "source={0}", source);
    Response response;
    Session session = sessionFactory.openSession();
    try {
      ContextProvider context = new HibernateContext(session, metadata);
      SaveResult sr = context.saveChanges(source);
     
      String json = Json.toJson(sr);
      log.debugv("saveChanges: SaveResult={0}", json);
      if (sr.hasErrors()) {
        response = Response.status(Response.Status.FORBIDDEN).entity(json).build();
      } else {
        response = Response.ok(json).build();
      }
    }
      catch (Exception e) {
        log.errorv(e, "saveChanges: source={0}", source);
        String json = Json.toJson(e);
      response = Response.serverError().entity(json).build();
      }
      finally {
        session.close();
      }     
    return response;
  }
 
  /**
   * For debugging
   */
    public static void main(String[] args) throws Exception {
      SaveService ss = new SaveService(StaticConfigurator.getSessionFactory(), StaticConfigurator.getMetadata());
     
//      String saveBundle = "{'entities':[{'customerID':'04fa5e78-f2cb-d74d-a7de-083ee17b6ad2','rowVersion':3,'customerID_OLD':'ALFKI','companyName':'Alfreds Futterkiste','contactName':'Maria K. Anders','contactTitle':'Sales Representativ','address':'Obere Str. 57','city':'Berlin','region':'Ost','postalCode':'12209','country':'Germany','phone':'030-0074321','fax':'030-0076545','entityAspect':{'entityTypeName':'Customer:#northwind.model','defaultResourceName':'Customers','entityState':'Modified','originalValuesMap':{'contactTitle':'Sales Representative','rowVersion':2},'autoGeneratedKey':{'propertyName':'customerID','autoGeneratedKeyType':'KeyGenerator'}}}],'saveOptions':{}}";
//      String saveBundle = "{'entities':[{'customerID':'857b40ea-21a3-ba4a-bcd8-af44d3d37418','rowVersion':3,'customerID_OLD':'BERGS','companyName':'Berglunds snabbk�p','contactName':'Error Message?','contactTitle':'Order Administrator','address':'Berguvsv�gen  8','city':'Lule�','region':null,'postalCode':'S-958 22','country':'Sweden','phone':'0921-12 34 65','fax':'0921-12 34 67','entityAspect':{'entityTypeName':'Customer:#northwind.model','defaultResourceName':'Customers','entityState':'Modified','originalValuesMap':{'contactName':'Error message','rowVersion':10},'autoGeneratedKey':{'propertyName':'customerID','autoGeneratedKeyType':'KeyGenerator'}}}],'saveOptions':{}}";
      String saveBundle = "{ 'entities': [ { 'rowVersion': 0, 'orderID': -1, 'productID': 1, 'unitPrice': 0, 'quantity': 5, 'discount': 0, 'entityAspect': { 'entityTypeName': 'OrderDetail:#northwind.model', 'defaultResourceName': 'OrderDetails', 'entityState': 'Added', 'originalValuesMap': { }, 'autoGeneratedKey': null } }, { 'orderID': -1, 'rowVersion': 0, 'customerID': '785efa04-cbf2-4dd7-a7de-083ee17b6ad2', 'employeeID': 1, 'orderDate': null, 'requiredDate': null, 'shippedDate': null, 'freight': null, 'shipName': 'Test 2014-01-16T20:50:50.942Z', 'shipAddress': null, 'shipCity': null, 'shipRegion': null, 'shipPostalCode': null, 'shipCountry': null, 'entityAspect': { 'entityTypeName': 'Order:#northwind.model', 'defaultResourceName': 'Orders', 'entityState': 'Added', 'originalValuesMap': { }, 'autoGeneratedKey': { 'propertyName': 'orderID', 'autoGeneratedKeyType': 'Identity' } } } ], 'saveOptions': { } }";

      Response response = ss.saveChanges(saveBundle);
      SaveService.log.info(response);
      SaveService.log.info(response.getEntity());
     
    }
   
 
}
TOP

Related Classes of com.breezejs.hib.SaveService

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.