/**
  * Update the date of last use of a PoiType.
  *
  * @param id The id of the PoiType to update.
  */
 public void updatePoiTypeLastUse(long id) {
   PoiType poiType = poiTypeDao.queryForId(id);
   if (poiType != null) {
     poiType.setLastUse(new DateTime());
     Timber.d("Update date of : %s", poiType);
     poiTypeDao.createOrUpdate(poiType);
   }
 }
  /**
   * Send a {@link io.mapsquare.osmcontributor.core.events.PoiForEditionLoadedEvent} containing the
   * suggestions for the PoiTypeTags and a new Poi to complete.
   *
   * @param event Event containing the position, level and PoiType of the Poi to create.
   */
  private void loadPoiForCreation(PleaseLoadPoiForCreationEvent event) {
    Poi poi = new Poi();
    Set<Double> level = new HashSet<>();
    level.add(event.getLevel());
    poi.setLevel(level);
    poi.setLatitude(event.getLat());
    poi.setLongitude(event.getLng());
    poi.setType(poiTypeDao.queryForId(event.getPoiType()));

    Map<String, String> defaultTags = new HashMap<>();
    for (PoiTypeTag poiTypeTag : poi.getType().getTags()) {
      if (poiTypeTag.getValue() != null) { // default tags should be set in the corresponding POI
        defaultTags.put(poiTypeTag.getKey(), poiTypeTag.getValue());
      }
    }
    poi.applyChanges(defaultTags);

    bus.post(new PoiForEditionLoadedEvent(poi, suggestionsForTagsValue(poi.getType().getTags())));
  }
 /**
  * Get the PoiType with the given id.
  *
  * @param id The id of the PoiType.
  * @return The PoiType.
  */
 public PoiType getPoiType(Long id) {
   return poiTypeDao.queryForId(id);
 }