コード例 #1
0
  @Nullable
  private MutablePoi createPoiFromData(final fr.univmobile.backend.core.Poi dsPoi) {

    final int poiUid = dsPoi.getUid();

    final String coordinates = dsPoi.getCoordinates();
    final String latitude = substringBefore(coordinates, ",");
    final String longitude = substringAfter(coordinates, ",");

    if (isBlank(coordinates) || isBlank(latitude) || isBlank(longitude)) {
      return null;
    }

    final MutablePoi poi =
        DataBeans //
            .instantiate(MutablePoi.class) //
            .setId(poiUid) //
            .setName(dsPoi.getName()) //
            .setCoordinates(coordinates) //
            .setLatitude(latitude) //
            .setLongitude(longitude);

    if (dsPoi.getAddresses().length != 0) {
      poi.setAddress(dsPoi.getAddresses()[0].getFullAddress());
    }
    if (dsPoi.getUrls().length != 0) {
      poi.setUrl(dsPoi.getUrls()[0]);
    }
    if (dsPoi.getPhones().length != 0) {
      poi.setPhone(dsPoi.getPhones()[0]);
    }
    if (dsPoi.getFaxes().length != 0) {
      poi.setFax(dsPoi.getFaxes()[0]);
    }
    if (dsPoi.getAttachments().length != 0) {
      final String image = dsPoi.getAttachments()[0].getUrl();
      if (!image.startsWith("/upload")) {
        throw new NotImplementedException("Image URL: " + image);
      }
      poi.setImageUrl(composeURL(image));
      poi.setImageWidth(100).setImageHeight(100); // TODO get img
    } else {
      poi.setImageWidth(0).setImageHeight(0);
    }

    poi.setCommentsUrl(composeURL("/json/comments/poi" + poiUid));

    // UNIVERSITIES

    final String[] dsUniversities = dsPoi.getUniversities();

    final List<String> universityIds = new ArrayList<String>();

    for (final String dsUniversity : dsUniversities) {

      universityIds.add(dsUniversity);
    }

    poi.setUniversityIds(Iterables.toArray(universityIds, String.class));

    // END

    return poi;
  }
コード例 #2
0
  @Override
  public MutablePois getPois() throws IOException {

    log.debug("getPois()...");

    final Map<String, fr.univmobile.backend.core.Region> dsRegions //
        = regionDataSource.getAllBy(String.class, "uid");

    // final Map<String, PoiTree> dsPoitree //
    // = poitreeDataSource.getAllBy(String.class, "uid");

    final PoiGroup[] poiGroups = new PoiGroup[dsRegions.size()];

    int i = 0;

    final Set<fr.univmobile.backend.core.Region> sortedSet =
        new TreeSet<fr.univmobile.backend.core.Region>(
            new Comparator<fr.univmobile.backend.core.Region>() {

              @Override
              public int compare(
                  final fr.univmobile.backend.core.Region r1,
                  final fr.univmobile.backend.core.Region r2) {

                final Form form = Form.NFD;

                final String n1 = Normalizer.normalize(r1.getLabel(), form);
                final String n2 = Normalizer.normalize(r2.getLabel(), form);

                return n1.compareTo(n2);
              }
            });

    sortedSet.addAll(dsRegions.values());

    int markerIndex = 0;

    for (final fr.univmobile.backend.core.Region dsRegion : sortedSet) {

      final MutablePoiGroup poiGroup =
          DataBeans //
              .instantiate(MutablePoiGroup.class) //
              .setGroupLabel("Région : " + dsRegion.getLabel());

      poiGroups[i] = poiGroup;

      ++i;

      final String regionId = dsRegion.getUid();

      if (poitreeDataSource.isNullByUid(regionId)) { // TODO

        System.err.println("Cannot load PoiTree for region: " + regionId);

        continue;
      }

      final PoiTree poiTree = poitreeDataSource.getByUid(regionId);

      for (final PoiTree root : poiTree.getRoots()) {

        final int poiUid = Integer.parseInt(root.getUid());

        final fr.univmobile.backend.core.Poi dsPoi = poiDataSource.getByUid(poiUid);

        final MutablePoi poi = createPoiFromData(dsPoi);

        if (poi == null) {
          continue; // Skip empty POIs
        }

        poi.setMarkerType("green");
        poi.setMarkerIndex(Character.toString((char) ('A' + markerIndex)));

        markerIndex = (markerIndex + 1) % 26;

        poiGroup.addToPois(poi);
      }
    }

    final MutablePois pois = DataBeans.instantiate(MutablePois.class);

    for (final PoiGroup poiGroup : poiGroups) {

      pois.addToGroups(poiGroup);
    }

    return pois;
  }