Package acme.dataapp

Source Code of acme.dataapp.MyFlights

package acme.dataapp;

import java.io.InputStream;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.wink.json4j.JSONArray;
import org.apache.wink.json4j.JSONException;
import org.apache.wink.json4j.JSONObject;

public class MyFlights {
    private static Logger log = java.util.logging.Logger.getAnonymousLogger();
  JSONObject myFlights = null;
  static MyFlights fs = null;

  final static String FLIGHTS = "myflights.json";

  /**
   * private constructor
   */
  private MyFlights() {
    InputStream is = this.getClass().getResourceAsStream(FLIGHTS);
    load(is);
  }

  /**
   * get instance
   *
   * @return
   */
  public static MyFlights getInstance() {
    if (fs == null) {
      fs = new MyFlights();
    }
    return fs;
  }

  /**
   * loads the JSONObject from a local resource
   *
   * @param is
   */
  public void load(InputStream is) {
    try {
      myFlights = new JSONObject(is);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * adds a current flight to the flights list
   *
   * @param flightId
   * @param userId
   * @param approverId
   * @param reason
   */
  public void addMyFlight(String flightId, String userId, String approverId,
      String reason) {
    try {
      JSONArray flts = (JSONArray) myFlights.get("myflights");
      JSONObject o = new JSONObject();
      o.put("FlightId", flightId);
      o.put("UserId", userId);
      o.put("ApproverId", approverId);
      o.put("Reason", reason);
      o.put("state", "started");
      flts.put(o);
     
      myFlights.remove("myflights");
      myFlights.put("myflights", flts);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   *
   * @param userId
   *            should be from the request.getUserPrincipal
   */
  public JSONObject getMyFlights(String userId) {
    JSONObject res = new JSONObject();
    JSONArray arr = new JSONArray();
    try {
      JSONArray flts = (JSONArray) myFlights.get("myflights");

      @SuppressWarnings("rawtypes")
      Iterator iter = flts.iterator();
      while (iter.hasNext()) {
        JSONObject o = (JSONObject) iter.next();
        String uId = o.getString("UserId");

        // Checks to see if the uid exists
        if (uId.equalsIgnoreCase(userId)) {
          arr.put(o);
        }

      }

      res.put("myflights", arr);

    } catch (Exception e) {
      e.printStackTrace();
    }

    return res;
  }

    /**
     *
     * @param flightId
     *           
     */
    public JSONArray getUsers(String flightId) {
        JSONArray arr = new JSONArray();
        try {
            JSONArray flts = (JSONArray) myFlights.get("myflights");

            @SuppressWarnings("rawtypes")
            Iterator iter = flts.iterator();
            while (iter.hasNext()) {
                JSONObject o = (JSONObject) iter.next();
                String fId = o.getString("FlightId");

                // Checks to see if the fid exists
                if (fId.equalsIgnoreCase(flightId)) {
                    String uId = o.getString("UserId");
                    arr.put(uId);
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return arr;
    }

  /**
   * removes a flight from the schedule
   *
   * @param userId
   * @param flightId
   */
  public void removeMyFlights(String userId, String flightId) {
    try {
      JSONArray flts = (JSONArray) myFlights.get("myflights");

      @SuppressWarnings("rawtypes")
      Iterator iter = flts.iterator();
      while (iter.hasNext()) {
        JSONObject o = (JSONObject) iter.next();
        String fId = o.getString("UserId");
        String uId = o.getString("FlightId");

        // Checks to see if the flight id and uid exist
        if (fId.compareTo(flightId) == 0 && uId.compareTo(userId) == 0) {
          flts.remove(o);
        }

      }

      flts.remove(flightId);

      myFlights.remove("myflights");
      myFlights.put("myflights", flts);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * approves a flight only when the give approverId has approved it
   *
   * @param userId
   * @param flightId
   * @param approverId
   */
  public void approveMyFlight(String userId, String flightId,
      String approverId) {
    try {
      JSONArray flts = (JSONArray) myFlights.get("myflights");

      @SuppressWarnings("rawtypes")
      Iterator iter = flts.iterator();
      while (iter.hasNext()) {
        JSONObject o = (JSONObject) iter.next();
        String fId = o.getString("UserId");
        String uId = o.getString("FlightId");
        String aId = o.getString("ApproverId");

        // Checks to see if the flight id and uid and aId exist
        if (fId.compareTo(flightId) == 0 && uId.compareTo(userId) == 0
            && aId.compareTo(approverId) == 0) {
          flts.remove(o);
          o.put("state", "approved");
          flts.put(o);
        }

      }

      flts.remove(flightId);

      myFlights.remove("myflights");
      myFlights.put("myflights", flts);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * updates a flight only when non approved
   *
   * @param userId
   * @param flightId
   * @param approverid
   * @param reason
   * @param state
   * @throws JSONException
   */
  public JSONObject updateMyFlight(String userId, String flightId,
      String approverId, String reason,String state) throws JSONException {
      this.removeMyFlights(userId, flightId);
      JSONArray flts = (JSONArray) myFlights.get("myflights");
      Iterator<JSONObject> iter = flts.iterator();
      while(iter.hasNext()) {
          JSONObject flight = iter.next();
          String oldFlightId = flight.getString("FlightId");
          String oldUserId = flight.getString("UserId");
          if(oldFlightId.equalsIgnoreCase(flightId) && oldUserId.equalsIgnoreCase(userId)) {
              flts.remove(flight);
              break;
          }
      }
      JSONObject o = new JSONObject();
      o.put("FlightId", flightId);
      o.put("UserId", userId);
      o.put("ApproverId", approverId);
      o.put("Reason", reason);
      o.put("state", state);
      flts.put(o);

      myFlights.remove("myflights");
      myFlights.put("myflights", flts);
      return o;

   
  }

  /**
   * gets the list of customers on a flight
   *
   * @param flightId
   * @return
   */
  public JSONObject getCustomersByFlight(String flightId) {
    JSONObject res = new JSONObject();
    JSONArray array = new JSONArray();
    try {
      JSONArray flts = (JSONArray) myFlights.get("myflights");

      @SuppressWarnings("rawtypes")
      Iterator iter = flts.iterator();
      while (iter.hasNext()) {
        JSONObject i = (JSONObject) iter.next();

        String flight = i.getString("FlightId");
        if (flightId.compareTo(flight) == 0) {
          array.put(i);
        }
      }

      res.put("customers", array);

    } catch (Exception e) {
      e.printStackTrace();
    }

    return res;
  }

  /**
   * gets the list of all travel
   *
   * @return
   */
  public JSONObject getAll() {
    return myFlights;
  }

  /**
   * gets the reason for a travel request and the associated title with the
   * travel request gets the approvers id as well
   *
   * @param userId
   * @param flightId
   * @return
   */
  public JSONObject getReasonForTravel(String userId, String flightId) {
    JSONObject res = new JSONObject();
    String r = "";
    try {
      JSONArray flts = (JSONArray) myFlights.get("myflights");

      @SuppressWarnings("rawtypes")
      Iterator iter = flts.iterator();
      boolean found = false;
      while (iter.hasNext() && !found) {
        JSONObject i = (JSONObject) iter.next();
       
        String flight = i.getString("FlightId");
        String user = i.getString("UserId");
        if (flightId.compareTo(flight) == 0 && user.compareTo(userId)==0) {
          r = i.getString("Reason");
          res.put("reason", r);
          found = true;
        }
      }

    } catch (Exception e) {
      e.printStackTrace();
    }

    return res;
  }

  /**
   * Gets a specific flight user's flight;
   * @param userId The user id.
   * @param flightId The flight id.
   * @return The flight.
   */
    public JSONObject getFlight(String userId, String flightId) {
        final String method = "getFlight";
        JSONObject res = new JSONObject();
        JSONObject resObject = this.getMyFlights(userId);
        try {
            JSONArray flts = resObject.getJSONArray("myflights");
            Iterator<JSONObject> iter = flts.iterator();
            while(iter.hasNext()) {
                JSONObject flt = iter.next();
                if(flt.getString("FlightId").equalsIgnoreCase(flightId)){
                    res = flt;
                    break;
                }
            }
           
        } catch (JSONException e) {
            log.logp(Level.SEVERE, MyFlights.class.getName(), method, e.getMessage(), e);
        }
        return res;
    }
}
TOP

Related Classes of acme.dataapp.MyFlights

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.