Package com.services.otg.db

Source Code of com.services.otg.db.TrackingTemplate

package com.services.otg.db;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.ws.rs.core.MultivaluedMap;

import org.apache.commons.collections.map.MultiValueMap;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.jdbc.support.rowset.SqlRowSet;

import com.services.otg.dom.OtgObject;

public class TrackingTemplate extends AbstractTemplate {
 
  public OtgObject insertTrackingAction(String devId, String action, Map<String,String> detail) {
    getTemplate();
    String sql = "{call sp_tracking_insert_action(?,?)}";   
   
    SqlRowSet rs = jdbc.queryForRowSet(sql, devId, action);
    long sessionId = 0;
    long trackingId = 0;
    while (rs.next()) {
      sessionId = rs.getLong("session_id");
      trackingId = rs.getLong("tracking_id");
    }
    String resp = "";
    if ( null!= detail && !detail.isEmpty()) {
      for (Iterator it = detail.entrySet().iterator(); it.hasNext(); ) {
        Map.Entry pairs = (Map.Entry)it.next();
        //pairs.getKey() + " = " + pairs.getValue();
        String success= insertTrackingDetail(trackingId, action, pairs.getKey().toString(),pairs.getValue().toString());
        if (null != success) resp+= success;
        it.remove();
     
      }
    }
    if (resp.length() > 1 ) return new OtgObject(resp);
    return new OtgObject();
  }
 
  private String insertTrackingDetail(long trackingId, String action, String key,String detail) {
   
    String sql = "{call sp_tracking_insert_details("+trackingId+",'"+action+"','"+key+"','"+detail+"')}";   
    try {
      jdbc.execute(sql);
    } catch (Exception e) {
      e.printStackTrace();
      return e.getMessage();
    }
   
    return null;
  }
  public OtgObject insertTrackingAction(MultivaluedMap<String,String> req) {
    List<String> jsonArray = new ArrayList<String>(req.keySet());
    StringBuilder json = new StringBuilder();
    for (int i = 0; i < jsonArray.size(); i++ ) {
      String k = jsonArray.get(i);
      System.out.print("\njson["+i+"] key: " + k);
      json.append(k);
      if (k.indexOf('}') < 1) {
        String v = req.getFirst(k);
        System.out.print("json["+i+"] value: " + v);
        json.append("=" + v);
      }
    }
   
    System.out.println("\n----- replaced json: "+ json.toString());
    String devId = null;
    String action = null;
    HashMap<String,String> details = new HashMap<String, String>();
    try{     
      JSONParser p = new JSONParser();
      Object obj = p.parse(json.toString());
      
      JSONObject jsonObject = (JSONObject) obj;
  
      devId = (String) jsonObject.get("deviceId");
      action = (String) jsonObject.get("action");
      Iterator<String> iterator = new ArrayList<String>(jsonObject.keySet()).iterator();
      while (iterator.hasNext()) {
        String key = iterator.next();
        if ("deviceId".equalsIgnoreCase(key) || "action".equalsIgnoreCase(key)) {
          continue;
        }
        details.put(key, jsonObject.get(key).toString());
      }
    } catch (Exception e) {
      e.printStackTrace();
      return new OtgObject(e.getLocalizedMessage());
    }
   
    return insertTrackingAction(devId, action, details);
  }
  public OtgObject insertTrackingError(MultivaluedMap<String,String> req) {
    getTemplate();
    System.out.println("Tracking Error: " + req);
    Map<String,String> m = getJsonForError(req);
   
    String devId = m.get("deviceId");
    String errorTxt = m.get("errorTxt");
   
    String sql = "{CALL sp_insert_error_text('"+devId + "','"+ errorTxt +"')}";
    try {
      jdbc.execute(sql);
    } catch (Exception e) {
      e.printStackTrace();
      return new OtgObject(e.getMessage());
    }

    return new OtgObject();

  }
  public OtgObject insertTrackingError(String devId, String errorTxt) {
    getTemplate();
    System.out.println("---- form params: "+devId+":"+errorTxt);
    String sql = "{sp_insert_error_text("+devId + ","+ errorTxt +")}";
    try {
      jdbc.execute(sql);
    } catch (Exception e) {
      e.printStackTrace();
      return new OtgObject(e.getMessage());
    }

    return new OtgObject();

  }

  private Map<String,String> getJsonFromMap(MultivaluedMap<String,String> req) {
    System.out.println("\n----- in getJsonFromMap");
    List<String> jsonArray = new ArrayList<String>(req.keySet());
    System.out.println("\n----- array: " + jsonArray.toString());
    StringBuilder json = new StringBuilder();
    HashMap<String,String> map = new HashMap<String, String>();
    for (int i = 0; i < jsonArray.size(); i++ ) {
      String key = jsonArray.get(i);
      //System.out.print("\njson["+i+"] key: " + k);
      //json.append(k);
      if (key.indexOf('}') < 1) {
        String value = req.getFirst(key);
        //System.out.print("json["+i+"] value: " + v);
        //json.append("=" + v);
        map.put(key, value);
       
      }
    }
    return map;
  }
  private Map<String,String> getJsonForError(MultivaluedMap<String,String> req) {
    List<String> jsonArray = new ArrayList<String>(req.keySet());
    StringBuilder json = new StringBuilder();
    for (int i = 0; i < jsonArray.size(); i++ ) {
      String k = jsonArray.get(i);
      System.out.print("\njson["+i+"] key: " + k);
      json.append(k);
      if (k.indexOf('}') < 1) {
        String v = req.getFirst(k);
        System.out.print("json["+i+"] value: " + v);
        json.append("=" + v);
      }
    }
    HashMap<String,String> details = new HashMap<String, String>();
    try{     
      JSONParser p = new JSONParser();
      Object obj = p.parse(json.toString());
      
      JSONObject jsonObject = (JSONObject) obj;
  
      String devId = (String) jsonObject.get("deviceId");
      String errorText = (String) jsonObject.get("errorTxt");
      details.put("deviceId", devId);
      details.put("errorTxt", errorText);
    } catch (Exception e) {
      e.printStackTrace();
      return new HashMap<String,String>();
    }

    return details;
  }
}
TOP

Related Classes of com.services.otg.db.TrackingTemplate

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.