capabilities.Display.java Source code

Java tutorial

Introduction

Here is the source code for capabilities.Display.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package capabilities;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

/**
 *
 * @author Gabriel
 */
public class Display implements Capabilities {

    @Override
    public String adaptRole(String dbResult) throws Exception {
        // Variveis retornadas do WURFL em JSON
        int resolution_width;
        int resolution_height;
        int columns;
        int rows;
        int physical_screen_width;
        int physical_screen_height;
        String dual_orientation;

        // Conversao do JSON de entrada para as variaveis respectivas
        JSONObject capabilities;
        JSONParser parser = new JSONParser();
        capabilities = (JSONObject) parser.parse(dbResult);
        //JSONObject capabilities = (JSONObject) my_obj.get("capabilities");
        System.out.println("\t" + capabilities);

        resolution_width = Integer.parseInt((String) capabilities.get("resolution_width"));
        resolution_height = Integer.parseInt((String) capabilities.get("resolution_height"));
        columns = Integer.parseInt((String) capabilities.get("columns"));
        rows = Integer.parseInt((String) capabilities.get("rows"));
        physical_screen_width = Integer.parseInt((String) capabilities.get("physical_screen_width"));
        physical_screen_height = Integer.parseInt((String) capabilities.get("physical_screen_height"));
        dual_orientation = (String) capabilities.get("dual_orientation");

        // Criar um novo JSON e adicionar as informaes  ele.
        JSONObject virtual = new JSONObject();

        if (physical_screen_width < physical_screen_height) {
            virtual.put("orientation_preferred", "portrait");
            virtual.put("thumbs_only", "true");
        } else {
            virtual.put("orientation_preferred", "landscape");
            virtual.put("thumbs_only", "false");
        }

        // Clculo da dimenso em polegadas da diagonal do dispositivo
        double diagonal = Math.sqrt(
                physical_screen_width * physical_screen_width + physical_screen_height * physical_screen_height);
        diagonal *= 0.039370;

        if (diagonal < 4) {
            virtual.put("average_size", "small_dispositive");
        } else if (diagonal > 5.5) {
            virtual.put("average_size", "large_dispositive");
        } else {
            virtual.put("average_size", "medium_dispositive");
        }

        // Adicionar esse novo JSON ao JSON de entrada e retorn-lo
        capabilities.put("virtual", virtual);
        return capabilities.toJSONString();
    }

    @Override
    public String dbSearch(String userAgent) throws Exception {
        String urlInicio, urlCapacidades, urlFim, urlPath;
        String capacidades = "resolution_width%0D%0A" // Largura da tela em pixels
                + "resolution_height%0D%0A" // Altura da tela em pixels
                + "columns%0D%0A" // Numero de colunas apresentadas
                + "rows%0D%0A" // Numero de linhas apresentadas
                + "physical_screen_width%0D%0A" // Largura da tela em milimetros
                + "physical_screen_height%0D%0A" // Altura da tela em milimetros
                + "dual_orientation"; // Se pode ter duas orientacoes

        // Montagem URL de acesso ao Introspector Servlet WURFL
        urlPath = "http://localhost:8080/AdapterAPI/"; // Caminho do projeto
        urlInicio = "introspector.do?action=Form&form=pippo&ua=" + userAgent;
        urlCapacidades = "&capabilities=" + capacidades;
        urlFim = "&wurflEngineTarget=performance&wurflUserAgentPriority=OverrideSideloadedBrowserUserAgent";

        // Conexo com o Servlet
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet getRequest = new HttpGet(urlPath + urlInicio + urlCapacidades + urlFim);
        getRequest.addHeader("accept", "application/json");

        HttpResponse response = httpClient.execute(getRequest);

        if (response.getStatusLine().getStatusCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));

        String buffer;
        String dados = "";
        //System.out.println("Output from Server .... \n");
        while ((buffer = br.readLine()) != null) {
            dados += buffer;
        }
        //System.out.println("Sada:\n\t" + dados);

        httpClient.getConnectionManager().shutdown();

        JSONObject my_obj;
        JSONParser parser = new JSONParser();
        my_obj = (JSONObject) parser.parse(dados);
        JSONObject capabilities = (JSONObject) my_obj.get("capabilities");

        return capabilities.toJSONString();
    }
}