/**
   * Method called when a request is received from the server. Parse the JSON data and delivers it
   * to the properly activity according to the route request and the status code.
   *
   * @param route
   * @param statusCode
   * @param jObject
   * @param jArray
   */
  public synchronized void requestFinished(
      String route, int statusCode, JSONObject jObject, JSONArray jArray) {
    try {
      if (statusCode == HttpStatusCode.REQUEST_TIMEOUT) {
        throw new Exception();
      }

      if (route.matches("collections/" + Regex.INTEGER)) {
        // GET <URLbase>/collections/{idCollection}
        if (jObject != null) {
          // get language code
          String lang = LocalStorage.getInstance().getLocaleLanguage(activity);
          // collection
          Collection collection = new Collection(jObject, lang);

          if (activity instanceof ProductActivity) {
            ProductActivity productActivity = (ProductActivity) activity;
            productActivity.collectionReceived(collection);
          }
        }
      }

    } catch (Exception e) {
      if (!RESTClient.isOnline(activity)) {
        Toast.makeText(
                activity,
                activity.getResources().getString(R.string.toast_problem_internetconnection),
                Toast.LENGTH_SHORT)
            .show();
      } else {
        Toast.makeText(
                activity,
                activity.getResources().getString(R.string.toast_problem_request),
                Toast.LENGTH_SHORT)
            .show();
      }
      activity.finish();
    }
  }
 /**
  * Get collection
  *
  * @param idCollection
  */
 public void getCollection(int idCollection) {
   // GET <URLbase>/collections/{idCollection}
   client.getCollection(this, idCollection);
 }
 /**
  * Collections controller constructor
  *
  * @param activity
  */
 public CollectionsController(Activity activity) {
   this.activity = activity;
   client = RESTClient.getInstance();
 }