Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Code Block
languagejava
package com.example;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;

public class Main {

   private static String API_KEY = "oma_api_key";

   public static void main(String[] a) throws Exception {
      ReservationService service = new ReservationService();
      System.out.println(service.getReservation("1234"));
      JReservationQuery query = new JReservationQuery();
      DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
      query.startDate = df.parse("15.1.2014");
      query.endDate = df.parse("17.1.2014");
      query.room = Arrays.asList("G205");
      System.out.println(service.searchReservations(query));
   }

   public static class ReservationService {
      private String serviceUrl = "httphttps://opendata.metropolia.fi/r1/reservation";
      private static Gson gson = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd'T'HH:mm").disableHtmlEscaping().create();

      public JReservation getReservation(String id) throws JsonSyntaxException,
            ParseException, IOException {
         HttpClient client = getClient();
         HttpGet get = new HttpGet(serviceUrl + "/" + id + "?apiKey=" + API_KEY);
         HttpResponse response = client.execute(get);
         try {
            JResult result = gson.fromJson(
                  EntityUtils.toString(response.getEntity(), "UTF-8"),
                  JResult.class);
            if (result != null && result.reservations != null && 
                    !result.reservations.isEmpty()) {
               return result.reservations.get(0);
            }
            return null;
         } finally {
            get.releaseConnection();
         }

      }

      public List<JReservation> searchReservations(JReservationQuery query)
            throws ClientProtocolException, IOException {

         HttpClient client = getClient();
         HttpPost post = new HttpPost(serviceUrl + "/search?apiKey=" + API_KEY);
         String json = gson.toJson(query);
         StringEntity entity = new StringEntity(json, ContentType.create(
               "application/json", "UTF-8"));
         post.setEntity(entity);
         HttpResponse response = client.execute(post);
         try {
            JResult result = gson.fromJson(
                  EntityUtils.toString(response.getEntity(), "UTF-8"),
                  JResult.class);
            return result.reservations;
         } finally {
            post.releaseConnection();
         }

      }

      private HttpClient getClient() {
         DefaultHttpClient client = new DefaultHttpClient();
         HttpParams params = client.getParams();
         HttpConnectionParams.setConnectionTimeout(params, 30000);
         HttpConnectionParams.setSoTimeout(params, 30000);
         return client;
      }

   }

   public static class JResult {
      public String status;
      public List<JReservation> reservations;
   }

   public static class JReservation {
      public String id;
      public String subject;
      public Date startDate;
      public Date endDate;
      public List<JResource> resources;

      public String toString() {
         return "\n" + subject + " " + startDate + " - " + endDate + " ("
               + resources + ")";
      }
   }

   public static class JResource {
      public String id;
      public String type;
      public String code;
      public String name;

      public String toString() {
         return name+" "+code;
      }
   }

   public static class JReservationQuery {
      public Date startDate;
      public Date endDate;
      public List<String> room;
   }

}