package com.worklight.location.internal;

import com.worklight.location.api.WLAcquisitionFailureCallbacksConfiguration;
import com.worklight.location.api.WLAcquisitionPolicy;
import com.worklight.location.api.WLDevice;
import com.worklight.location.api.WLDeviceContext;
import com.worklight.location.api.WLLocationServicesConfiguration;
import com.worklight.location.api.geo.WLGeoAcquisitionPolicy;
import com.worklight.location.api.geo.WLGeoCallback;
import com.worklight.location.api.geo.WLGeoFailureCallback;
import com.worklight.location.api.wifi.WLWifiAcquisitionCallback;
import com.worklight.location.api.wifi.WLWifiAcquisitionPolicy;
import com.worklight.location.api.wifi.WLWifiConnectedCallback;
import com.worklight.location.api.wifi.WLWifiFailureCallback;
import com.worklight.location.internal.deviceContextPiggybacker.DeviceContextPiggybacker;
import com.worklight.location.internal.events.EventTransmitter;
import com.worklight.location.internal.events.server.EventServer;
import com.worklight.location.internal.events.server.IWLRequestFactory;
import com.worklight.location.internal.events.storage.IPersistentStorageManager;
import com.worklight.location.internal.geo.EmptyGeoPosition;
import com.worklight.location.internal.geo.GeoAcquisitor;
import com.worklight.location.internal.geo.GeoErrorLinker;
import com.worklight.location.internal.geo.RTCGeoAcquireLinker;
import com.worklight.location.internal.geo.RTCGeoLinker;
import com.worklight.location.internal.wifi.EmptyWifiPosition;
import com.worklight.location.internal.wifi.RTCWifiLinker;
import com.worklight.location.internal.wifi.WifiAcquisitionCallbackConverter;
import com.worklight.location.internal.wifi.WifiAcquisitor;
import com.worklight.location.internal.wifi.WifiConnectedCallbackConverter;
import com.worklight.location.internal.wifi.WifiErrorLinker;
import com.worklight.wlclient.WLRequest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public abstract class DeviceImpl
  implements WLDevice
{
  private static final String GEO_POLICY = "geoPolicy";
  private static final String NEW_CONFIGURATION = "newConfiguration";
  private static final String ON_FAILURE = "onFailure";
  private static final String ON_SUCCESS = "onSuccess";
  private static final String WIFI_POLICY = "wifiPolicy";
  private WLLocationServicesConfiguration configuration;
  protected final DeviceContextImpl deviceContext = new DeviceContextImpl();
  private final EventTransmitter eventTransmitter;
  private ICallbackExecutor executor;
  final GeoAcquisitor geoAcq;
  final RuntimeTriggerContainer rtc;
  private final WifiAcquisitor wifiAcq;

  public DeviceImpl(WifiAcquisitor paramWifiAcquisitor, GeoAcquisitor paramGeoAcquisitor, RuntimeTriggerContainer paramRuntimeTriggerContainer, EventTransmitter paramEventTransmitter, PiggbackRegisterer paramPiggbackRegisterer, ICallbackExecutor paramICallbackExecutor, Object paramObject)
  {
    this.executor = paramICallbackExecutor;
    if (paramWifiAcquisitor == null)
      throw new IllegalArgumentException("wifiAcq is null");
    if (paramEventTransmitter == null)
      throw new IllegalArgumentException("eventTransmitter is null");
    this.eventTransmitter = paramEventTransmitter;
    this.wifiAcq = paramWifiAcquisitor;
    this.rtc = paramRuntimeTriggerContainer;
    this.geoAcq = paramGeoAcquisitor;
    paramPiggbackRegisterer.register(new DeviceContextPiggybacker(this.deviceContext));
  }

  public DeviceImpl(WifiAcquisitor paramWifiAcquisitor, GeoAcquisitor paramGeoAcquisitor, IPersistentStorageManager paramIPersistentStorageManager, IWLRequestFactory paramIWLRequestFactory, ICallbackExecutor paramICallbackExecutor)
  {
    this.executor = paramICallbackExecutor;
    if (paramWifiAcquisitor == null)
      throw new IllegalArgumentException("wifiAcquisitor is null");
    this.wifiAcq = paramWifiAcquisitor;
    this.geoAcq = paramGeoAcquisitor;
    paramIPersistentStorageManager.clearOldPersistentData();
    this.eventTransmitter = new EventTransmitter(new EventServer(paramIWLRequestFactory), this.deviceContext, paramIPersistentStorageManager.createStorage());
    this.rtc = new RuntimeTriggerContainer(this.deviceContext, this.eventTransmitter, paramICallbackExecutor);
    WLRequest.addRequestPiggybacker(new DeviceContextPiggybacker(this.deviceContext));
  }

  private void applyGeoPolicy(List<WLGeoFailureCallback> paramList, WLGeoAcquisitionPolicy paramWLGeoAcquisitionPolicy)
  {
    if (paramWLGeoAcquisitionPolicy == null)
    {
      stopGeo();
      return;
    }
    if (this.deviceContext.getGeoPosition() == null)
      this.deviceContext.setGeoPosition(new EmptyGeoPosition());
    this.geoAcq.startAcquisition(new RTCGeoLinker(this.rtc), new GeoErrorLinker(paramList, this.executor), paramWLGeoAcquisitionPolicy);
  }

  private void applyWifiPolicy(List<WLWifiFailureCallback> paramList, WLWifiAcquisitionPolicy paramWLWifiAcquisitionPolicy)
  {
    if (paramWLWifiAcquisitionPolicy == null)
    {
      stopWifi();
      return;
    }
    if (this.deviceContext.getWifiLocation() == null)
      this.deviceContext.setWifiPosition(new EmptyWifiPosition());
    this.wifiAcq.startAcquisition(new RTCWifiLinker(this.rtc), new WifiErrorLinker(paramList, this.executor), paramWLWifiAcquisitionPolicy);
  }

  private void stopGeo()
  {
    this.geoAcq.stopAcquisition();
    this.deviceContext.clearGeoPosition();
  }

  private void stopWifi()
  {
    this.wifiAcq.stopAcquisition();
    this.deviceContext.clearWifiPosition();
  }

  private void valideParamNotNull(Object paramObject, String paramString)
  {
    if (paramObject == null)
      throw new IllegalArgumentException(paramString + " can't be null");
  }

  public void acquireGeoPosition(WLGeoCallback paramWLGeoCallback, WLGeoFailureCallback paramWLGeoFailureCallback, WLGeoAcquisitionPolicy paramWLGeoAcquisitionPolicy)
  {
    valideParamNotNull(paramWLGeoCallback, "onSuccess");
    valideParamNotNull(paramWLGeoFailureCallback, "onFailure");
    valideParamNotNull(paramWLGeoAcquisitionPolicy, "geoPolicy");
    this.geoAcq.acquirePosition(new RTCGeoAcquireLinker(this, paramWLGeoCallback, paramWLGeoAcquisitionPolicy, this.executor), new GeoErrorLinker(Collections.singletonList(paramWLGeoFailureCallback), this.executor), paramWLGeoAcquisitionPolicy);
  }

  public void acquireWifiVisibleAccessPoints(WLWifiAcquisitionCallback paramWLWifiAcquisitionCallback, WLWifiFailureCallback paramWLWifiFailureCallback, WLWifiAcquisitionPolicy paramWLWifiAcquisitionPolicy)
  {
    valideParamNotNull(paramWLWifiAcquisitionCallback, "onSuccess");
    valideParamNotNull(paramWLWifiFailureCallback, "onFailure");
    valideParamNotNull(paramWLWifiAcquisitionPolicy, "wifiPolicy");
    this.wifiAcq.acquireLocation(new WifiAcquisitionCallbackConverter(paramWLWifiAcquisitionCallback), new WifiErrorLinker(Collections.singletonList(paramWLWifiFailureCallback), this.executor), paramWLWifiAcquisitionPolicy);
  }

  public void getConnectedAccessPoint(WLWifiConnectedCallback paramWLWifiConnectedCallback, WLWifiFailureCallback paramWLWifiFailureCallback)
  {
    valideParamNotNull(paramWLWifiConnectedCallback, "onSuccess");
    valideParamNotNull(paramWLWifiFailureCallback, "onFailure");
    this.wifiAcq.acquireLocation(new WifiConnectedCallbackConverter(paramWLWifiConnectedCallback), new WifiErrorLinker(Collections.singletonList(paramWLWifiFailureCallback), this.executor), null);
  }

  public WLDeviceContext getDeviceContext()
  {
    DeviceContextImpl localDeviceContextImpl = this.deviceContext.clone();
    if (localDeviceContextImpl.isEmpty())
      localDeviceContextImpl = null;
    return localDeviceContextImpl;
  }

  public DeviceContextImpl getDeviceContextImpl()
  {
    return this.deviceContext;
  }

  public EventTransmitter getEventTransmitter()
  {
    return this.eventTransmitter;
  }

  public GeoAcquisitor getGeoAcquisitor()
  {
    return this.geoAcq;
  }

  public WLLocationServicesConfiguration getLocationServicesConfig()
  {
    try
    {
      WLLocationServicesConfiguration localWLLocationServicesConfiguration = this.configuration.clone();
      return localWLLocationServicesConfiguration;
    }
    finally
    {
      localObject = finally;
      throw localObject;
    }
  }

  public RuntimeTriggerContainer getRTC()
  {
    return this.rtc;
  }

  public void startAcquisition(WLLocationServicesConfiguration paramWLLocationServicesConfiguration)
  {
    ArrayList localArrayList1;
    ArrayList localArrayList2;
    try
    {
      valideParamNotNull(paramWLLocationServicesConfiguration, "newConfiguration");
      this.configuration = paramWLLocationServicesConfiguration.clone();
      localArrayList1 = new ArrayList();
      localArrayList2 = new ArrayList();
      Iterator localIterator = paramWLLocationServicesConfiguration.getFailureCallbacks().iterator();
      while (localIterator.hasNext())
      {
        WLAcquisitionFailureCallbacksConfiguration localWLAcquisitionFailureCallbacksConfiguration = (WLAcquisitionFailureCallbacksConfiguration)localIterator.next();
        if (localWLAcquisitionFailureCallbacksConfiguration.getWifiFailureCallback() != null)
          localArrayList1.add(localWLAcquisitionFailureCallbacksConfiguration.getWifiFailureCallback());
        if (localWLAcquisitionFailureCallbacksConfiguration.getGeoFailureCallback() != null)
          localArrayList2.add(localWLAcquisitionFailureCallbacksConfiguration.getGeoFailureCallback());
      }
    }
    finally
    {
    }
    this.rtc.updateConfiguration(this.configuration);
    WLAcquisitionPolicy localWLAcquisitionPolicy = this.configuration.getPolicy();
    if (localWLAcquisitionPolicy == null)
    {
      stopGeo();
      stopWifi();
    }
    while (true)
    {
      return;
      applyWifiPolicy(localArrayList1, localWLAcquisitionPolicy.getWifiPolicy());
      applyGeoPolicy(localArrayList2, localWLAcquisitionPolicy.getGeoPolicy());
    }
  }

  public void stopAcquisition()
  {
    try
    {
      stopWifi();
      stopGeo();
      this.rtc.clear();
      return;
    }
    finally
    {
      localObject = finally;
      throw localObject;
    }
  }
}

/* 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.DeviceImpl
 * JD-Core Version:    0.6.2
 */