package com.worklight.location.internal.geo;

import com.worklight.location.api.geo.WLGeoAcquisitionPolicy;
import com.worklight.location.api.geo.WLGeoCallback;
import com.worklight.location.api.geo.WLGeoError;
import com.worklight.location.api.geo.WLGeoError.WLGeoErrorCodes;
import com.worklight.location.api.geo.WLGeoFailureCallback;
import com.worklight.location.api.geo.WLGeoPosition;
import java.util.Timer;

public class LocationHandler
{
  protected static Timer timer = new Timer();
  protected WLGeoFailureCallback errorCallback;
  private GeoFactory factory;
  protected boolean isWatchRequest;
  protected WLGeoPosition lastSent;
  private NativeLocationListener nativeLocationHandler;
  protected WLGeoAcquisitionPolicy policy;
  protected WLGeoCallback successCallback;
  private TimeoutTimerTask timeoutTask;

  public LocationHandler(GeoFactory paramGeoFactory, WLGeoCallback paramWLGeoCallback, WLGeoFailureCallback paramWLGeoFailureCallback, WLGeoAcquisitionPolicy paramWLGeoAcquisitionPolicy, boolean paramBoolean)
  {
    this.factory = paramGeoFactory;
    this.successCallback = paramWLGeoCallback;
    this.errorCallback = paramWLGeoFailureCallback;
    this.policy = paramWLGeoAcquisitionPolicy;
    this.isWatchRequest = paramBoolean;
  }

  protected long calcAge(WLGeoPosition paramWLGeoPosition)
  {
    return System.currentTimeMillis() - paramWLGeoPosition.getTimestamp().longValue();
  }

  public void cancel()
  {
    try
    {
      if (this.timeoutTask != null)
      {
        this.timeoutTask.cancel();
        this.timeoutTask = null;
      }
      timer.purge();
      this.nativeLocationHandler.cancelNativeAcquisition();
      return;
    }
    finally
    {
    }
  }

  protected void scheduleTimeout()
  {
    try
    {
      long l = this.policy.getTimeout();
      if (l == -1L);
      while (true)
      {
        return;
        if (this.timeoutTask != null)
          this.timeoutTask.cancel();
        timer.purge();
        this.timeoutTask = new TimeoutTimerTask(this);
        timer.schedule(this.timeoutTask, this.policy.getTimeout());
      }
    }
    finally
    {
    }
  }

  public void sendAndSetTimeoutTimer(WLGeoPosition paramWLGeoPosition)
  {
    sendPosition(paramWLGeoPosition);
    if (this.isWatchRequest)
      scheduleTimeout();
  }

  public void sendError(WLGeoError.WLGeoErrorCodes paramWLGeoErrorCodes, String paramString)
  {
    try
    {
      if (this.timeoutTask != null)
        this.timeoutTask.cancel();
      WLGeoError localWLGeoError = new WLGeoError(paramWLGeoErrorCodes, paramString);
      this.errorCallback.execute(localWLGeoError);
      return;
    }
    finally
    {
    }
  }

  protected void sendPosition(WLGeoPosition paramWLGeoPosition)
  {
    try
    {
      this.lastSent = paramWLGeoPosition;
      this.successCallback.execute(paramWLGeoPosition);
      return;
    }
    finally
    {
      localObject = finally;
      throw localObject;
    }
  }

  public void sendTimeout()
  {
    if (this.isWatchRequest)
      scheduleTimeout();
    while (true)
    {
      sendError(WLGeoError.WLGeoErrorCodes.TIMEOUT, "No location update obtained in the given timeout");
      return;
      this.nativeLocationHandler.cancelNativeAcquisition();
    }
  }

  public void start()
  {
    try
    {
      this.nativeLocationHandler = this.factory.createLocationListener(this, this.policy);
      WLGeoPosition localWLGeoPosition = this.nativeLocationHandler.getCachedPosition();
      int i = 0;
      if (localWLGeoPosition != null)
      {
        boolean bool1 = calcAge(localWLGeoPosition) < this.policy.getMaximumAge();
        i = 0;
        if (!bool1)
        {
          sendPosition(localWLGeoPosition);
          i = 1;
        }
      }
      NativeLocationListener localNativeLocationListener;
      if ((i == 0) || (this.isWatchRequest))
      {
        scheduleTimeout();
        localNativeLocationListener = this.nativeLocationHandler;
        if (this.isWatchRequest)
          break label107;
      }
      label107: for (boolean bool2 = true; ; bool2 = false)
      {
        localNativeLocationListener.startNativeAcquisition(bool2);
        return;
      }
    }
    finally
    {
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.worklight.location.internal.geo.LocationHandler
 * JD-Core Version:    0.6.2
 */