package com.worklight.location.internal;

import com.worklight.common.Logger;
import com.worklight.location.api.WLAcquisitionPolicy;
import com.worklight.location.api.WLLocationServicesConfiguration;
import com.worklight.location.api.WLTriggerCallback;
import com.worklight.location.api.WLTriggersConfiguration;
import com.worklight.location.api.geo.WLGeoPosition;
import com.worklight.location.api.geo.triggers.WLGeoTrigger;
import com.worklight.location.api.wifi.WLWifiAcquisitionPolicy;
import com.worklight.location.api.wifi.triggers.WLWifiTrigger;
import com.worklight.location.internal.events.EventTransmitter;
import com.worklight.location.internal.geo.triggerEvaluators.GeoTriggerEvaluator;
import com.worklight.location.internal.wifi.triggerEvaluators.WifiInternalLocation;
import com.worklight.location.internal.wifi.triggerEvaluators.WifiTriggerEvaluator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class RuntimeTriggerContainer
{
  private static Logger logger = Logger.getInstance("RuntimeTriggerContainer");
  private final TriggerEvaluatorBuilder builder;
  private final DeviceContextImpl deviceContext;
  private final EventTransmitter eventTransmitter;
  private final ICallbackExecutor executor;
  private Map<String, GeoTriggerEvaluator> geoTriggerEvaluators = new HashMap();
  private Map<String, WifiTriggerEvaluator> wifiTriggerEvaluators = new HashMap();

  public RuntimeTriggerContainer(DeviceContextImpl paramDeviceContextImpl, EventTransmitter paramEventTransmitter, ICallbackExecutor paramICallbackExecutor)
  {
    this(paramDeviceContextImpl, paramEventTransmitter, new TriggerEvaluatorBuilder(), paramICallbackExecutor);
  }

  RuntimeTriggerContainer(DeviceContextImpl paramDeviceContextImpl, EventTransmitter paramEventTransmitter, TriggerEvaluatorBuilder paramTriggerEvaluatorBuilder, ICallbackExecutor paramICallbackExecutor)
  {
    if (paramDeviceContextImpl == null)
      throw new IllegalArgumentException("deviceContext is null");
    this.deviceContext = paramDeviceContextImpl;
    if (paramEventTransmitter == null)
      throw new IllegalArgumentException("eventTransmitter is null");
    this.eventTransmitter = paramEventTransmitter;
    if (paramTriggerEvaluatorBuilder == null)
      throw new IllegalArgumentException("builder is null");
    this.builder = paramTriggerEvaluatorBuilder;
    if (paramICallbackExecutor == null)
      throw new IllegalArgumentException("executor is null");
    this.executor = paramICallbackExecutor;
  }

  private Map<String, GeoTriggerEvaluator> buildGeoMap(Map<String, WLGeoTrigger> paramMap)
  {
    HashMap localHashMap = new HashMap();
    if (paramMap == null);
    while (true)
    {
      return localHashMap;
      Iterator localIterator = paramMap.entrySet().iterator();
      while (localIterator.hasNext())
      {
        Map.Entry localEntry = (Map.Entry)localIterator.next();
        localHashMap.put(localEntry.getKey(), this.builder.buildGeoTrigger((WLGeoTrigger)localEntry.getValue()));
      }
    }
  }

  private Map<String, WifiTriggerEvaluator> buildWifiMap(Map<String, WLWifiTrigger> paramMap)
  {
    HashMap localHashMap = new HashMap();
    if (paramMap == null);
    while (true)
    {
      return localHashMap;
      Iterator localIterator = paramMap.entrySet().iterator();
      while (localIterator.hasNext())
      {
        Map.Entry localEntry = (Map.Entry)localIterator.next();
        localHashMap.put(localEntry.getKey(), this.builder.buildWifiTrigger((WLWifiTrigger)localEntry.getValue()));
      }
    }
  }

  private Map<String, WLGeoTrigger> getGeoTriggers(WLLocationServicesConfiguration paramWLLocationServicesConfiguration)
  {
    if (paramWLLocationServicesConfiguration.getTriggers() == null)
      return null;
    return paramWLLocationServicesConfiguration.getTriggers().getGeoTriggers();
  }

  private List<AbstractTriggerEvaluator> getGeoTriggersEvalutedToTrue(WLGeoPosition paramWLGeoPosition)
  {
    ArrayList localArrayList = new ArrayList();
    Iterator localIterator = this.geoTriggerEvaluators.values().iterator();
    while (localIterator.hasNext())
    {
      GeoTriggerEvaluator localGeoTriggerEvaluator = (GeoTriggerEvaluator)localIterator.next();
      if (localGeoTriggerEvaluator.evaluate(paramWLGeoPosition))
        localArrayList.add(localGeoTriggerEvaluator);
    }
    return localArrayList;
  }

  private Map<String, WLWifiTrigger> getWifiTriggers(WLLocationServicesConfiguration paramWLLocationServicesConfiguration)
  {
    if (paramWLLocationServicesConfiguration.getTriggers() == null)
      return null;
    return paramWLLocationServicesConfiguration.getTriggers().getWifiTriggers();
  }

  private List<AbstractTriggerEvaluator> getWifiTriggersEvalutedToTrue(WifiInternalLocation paramWifiInternalLocation)
  {
    ArrayList localArrayList = new ArrayList();
    Iterator localIterator = this.wifiTriggerEvaluators.values().iterator();
    while (localIterator.hasNext())
    {
      WifiTriggerEvaluator localWifiTriggerEvaluator = (WifiTriggerEvaluator)localIterator.next();
      if (localWifiTriggerEvaluator.evaluate(paramWifiInternalLocation))
        localArrayList.add(localWifiTriggerEvaluator);
    }
    return localArrayList;
  }

  private void handleTriggersEvalutedToTrue(List<? extends AbstractTriggerEvaluator> paramList)
  {
    ArrayList localArrayList1 = new ArrayList();
    boolean bool = false;
    ArrayList localArrayList2 = new ArrayList();
    Iterator localIterator1 = paramList.iterator();
    while (localIterator1.hasNext())
    {
      AbstractTrigger localAbstractTrigger = ((AbstractTriggerEvaluator)localIterator1.next()).getTriggerDefinition();
      if (localAbstractTrigger.getEvent() != null)
      {
        localArrayList1.add(localAbstractTrigger.getEvent());
        bool |= localAbstractTrigger.isTransmitImmediately();
      }
      if (localAbstractTrigger.getCallback() != null)
        localArrayList2.add(localAbstractTrigger.getCallback());
    }
    if (!localArrayList1.isEmpty())
      this.eventTransmitter.transmitEvents(localArrayList1, bool);
    Iterator localIterator2 = localArrayList2.iterator();
    while (localIterator2.hasNext())
    {
      WLTriggerCallback localWLTriggerCallback = (WLTriggerCallback)localIterator2.next();
      this.executor.executeTriggerCallback(localWLTriggerCallback, this.deviceContext.clone());
    }
  }

  private static void validateWifiPolicy(WLWifiAcquisitionPolicy paramWLWifiAcquisitionPolicy, Map<String, WLWifiTrigger> paramMap)
  {
    if (paramMap == null);
    while (true)
    {
      return;
      Iterator localIterator = paramMap.entrySet().iterator();
      while (localIterator.hasNext())
      {
        Map.Entry localEntry = (Map.Entry)localIterator.next();
        if (!((WLWifiTrigger)localEntry.getValue()).validate(paramWLWifiAcquisitionPolicy))
          logger.error("The WIFI trigger" + localEntry + "will have no affect, since its network do not appear in WIFI acquisition policy");
      }
    }
  }

  public void clear()
  {
    Iterator localIterator1 = this.geoTriggerEvaluators.values().iterator();
    while (localIterator1.hasNext())
      ((GeoTriggerEvaluator)localIterator1.next()).preDestroy();
    Iterator localIterator2 = this.wifiTriggerEvaluators.values().iterator();
    while (localIterator2.hasNext())
      ((WifiTriggerEvaluator)localIterator2.next()).preDestroy();
    this.geoTriggerEvaluators.clear();
    this.wifiTriggerEvaluators.clear();
  }

  public void geoLocationAcquired(WLGeoPosition paramWLGeoPosition)
  {
    if (paramWLGeoPosition == null)
      throw new IllegalArgumentException("position is null");
    this.deviceContext.setGeoPosition(paramWLGeoPosition);
    handleTriggersEvalutedToTrue(getGeoTriggersEvalutedToTrue(paramWLGeoPosition));
  }

  public void updateConfiguration(WLLocationServicesConfiguration paramWLLocationServicesConfiguration)
  {
    if (paramWLLocationServicesConfiguration == null)
      throw new IllegalArgumentException("config is null");
    validateWifiPolicy(paramWLLocationServicesConfiguration.getPolicy().getWifiPolicy(), getWifiTriggers(paramWLLocationServicesConfiguration));
    Map localMap1 = buildGeoMap(getGeoTriggers(paramWLLocationServicesConfiguration));
    Map localMap2 = buildWifiMap(getWifiTriggers(paramWLLocationServicesConfiguration));
    Iterator localIterator1 = this.geoTriggerEvaluators.entrySet().iterator();
    while (localIterator1.hasNext())
    {
      Map.Entry localEntry2 = (Map.Entry)localIterator1.next();
      if (localMap1.containsKey(localEntry2.getKey()))
        localMap1.put(localEntry2.getKey(), localEntry2.getValue());
      else
        ((GeoTriggerEvaluator)localEntry2.getValue()).preDestroy();
    }
    Iterator localIterator2 = this.wifiTriggerEvaluators.entrySet().iterator();
    while (localIterator2.hasNext())
    {
      Map.Entry localEntry1 = (Map.Entry)localIterator2.next();
      if (localMap2.containsKey(localEntry1.getKey()))
        localMap2.put(localEntry1.getKey(), localEntry1.getValue());
      else
        ((WifiTriggerEvaluator)localEntry1.getValue()).preDestroy();
    }
    this.geoTriggerEvaluators = localMap1;
    this.wifiTriggerEvaluators = localMap2;
    Iterator localIterator3 = this.geoTriggerEvaluators.values().iterator();
    while (localIterator3.hasNext())
      ((GeoTriggerEvaluator)localIterator3.next()).notifyOfConfigurationUpdate(paramWLLocationServicesConfiguration);
    Iterator localIterator4 = this.wifiTriggerEvaluators.values().iterator();
    while (localIterator4.hasNext())
      ((WifiTriggerEvaluator)localIterator4.next()).notifyOfConfigurationUpdate(paramWLLocationServicesConfiguration);
  }

  public void wifiLocationAcquired(WifiInternalLocation paramWifiInternalLocation)
  {
    if (paramWifiInternalLocation == null)
      throw new IllegalArgumentException("position is null");
    this.deviceContext.setWifiPosition(paramWifiInternalLocation.getPublicVersion());
    handleTriggersEvalutedToTrue(getWifiTriggersEvalutedToTrue(paramWifiInternalLocation));
  }
}

/* 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.RuntimeTriggerContainer
 * JD-Core Version:    0.6.2
 */