Environment.java :  » App » augmented-reality-android-diploma-thesis » cz » papezzde » model » Android Open Source

Android Open Source » App » augmented reality android diploma thesis 
augmented reality android diploma thesis » cz » papezzde » model » Environment.java
package cz.papezzde.model;


import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;

import android.content.SharedPreferences;

import com.google.android.maps.GeoPoint;

import cz.papezzde.collection.FilterStrategy;

public class Environment {

  /**
   * LinkedHashMap has predictable order; use insertion-ordered
   */
  private LinkedHashMap<String, Category> categoryHashMap = new LinkedHashMap<String, Category>();
  
  private GeoPoint myLocation;

  private FilterStrategy filterStrategy;

  private String streetName;
  private List<List<GeoPoint>> streetNetwork;

  public ArrayList<ExtendedOverlayItem> getOverlayItemsByLayerName(String layerName) {
    ArrayList<ExtendedOverlayItem> arr;
    
    for(Category cat : categoryHashMap.values()){
      if((arr = cat.getOverlayItemsByLayerID(layerName)) != null){
        return arr;
      }
    }
    return null;
  }

  
  public ArrayList<ExtendedOverlayItem> getAllVisibleOverlayItems(){
    ArrayList<ExtendedOverlayItem> items = new ArrayList<ExtendedOverlayItem>();
    for(Category cat : categoryHashMap.values()){
      if(cat.isVisible()){
        items.addAll(cat.getAllVisibleOverlayItems());
      }
    }    
    return items;
  }
  
  public ArrayList<ExtendedOverlayItem> getAllVisibleOverlayItemsFromCategory(
      String catNameID) {
    
    Category cat = categoryHashMap.get(catNameID);
    if(cat != null){
      return cat.getAllVisibleOverlayItems();
    }else{
      return null;
    }
    
  }
  
  
  public Collection<Layer> getAllLayersFromVisibleCategories(){
    Collection<Layer> items = new ArrayList<Layer>();
    for(Category cat : categoryHashMap.values()){
      if(cat.isVisible()){
        items.addAll(cat.getAllLayers());
      }
    }
    return items;
  }
  
  
  public Collection<Layer> getAllLayersFromCategory(String catName) {
    Category cat = categoryHashMap.get(catName);
    if (cat != null) {
      return cat.getAllLayers();
    }
    return null;
  }
  
  public void loadAirDistanceAndDirection() {
        for(Category c : categoryHashMap.values()){
                c.refreshDistanceAndDirection(myLocation);
        }
  }
  
  public void addCategory(Category c){
    categoryHashMap.put(c.getNameID(), c);
  }
  
  public void setMyLocation(GeoPoint myLocation) {
    this.myLocation = myLocation;
  }

  public GeoPoint getMyLocation() {
    return myLocation;
  }

  /**
   * Sets visibility of the named category or layer to specified value
   * @param nameID of category or layer
   * @param visibility to be set
   */
  public void setVisibilityByNameID(CharSequence nameID, boolean visibility) {
    Category c = categoryHashMap.get(nameID.toString());
    if(c != null){
      c.setVisible(visibility);
    }else{
      for(Category cat : categoryHashMap.values()){
        Layer l = cat.getLayerByNameID(nameID.toString());
        if(l != null){
          l.setVisible(visibility);
          return;
        }
      }
    }
    
  }

  public Collection<Category> getCategories() {
    return categoryHashMap.values();
  }

  public void setVisibilities(SharedPreferences prefs){
    
    for(Category c : categoryHashMap.values()){
      c.setVisible(prefs.getBoolean(c.getNameID(), false));
      for(Layer l : c.getAllLayers()){
        l.setVisible(prefs.getBoolean(l.getNameID(), false));
      }
    }
    
  }
  
  public Layer getLayerByNameID(String nameID){
    for (Category c : categoryHashMap.values()) {
      Layer l = c.getLayerByNameID(nameID);
      if (l != null) {
        return l;
      }
    }
    return null;
  }
  

  public ArrayList<ExtendedOverlayItem> selectOverlayItemsFromLayer(
      String name) {

    Layer l = getLayerByNameID(name);
    if (l != null) {
      return l.getItems();
    }
    return null;
    
  }

  public ArrayList<ExtendedOverlayItem> filterItems(ArrayList<ExtendedOverlayItem> items) {
    return filterStrategy.filter(items);
  }


  public void setStreetName(String streetName) {
    this.streetName = streetName;
  }
  
  public String getStreetName() {
    return streetName;
  }


  public void setFilterStrategy(FilterStrategy filterStrategy) {
    this.filterStrategy = filterStrategy; 
  }


  
  public void setStreetNetwork (List<List<GeoPoint>> streetNetwork) {
    this.streetNetwork = streetNetwork;
  }


  public List<List<GeoPoint>> getStreetNetwork () {
    return streetNetwork;
  }  
  
  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.