ficheros de configuraciónbibing.us.es/proyectos/abreproy/12078/fichero/pfc%2fmemoria_vol1... ·...

Post on 12-Mar-2020

0 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Servicio de Coche Compartido basado en el IMS

Anexo II

Ficheros de Configuración

En este anexo vamos a ver el contenido de los ficheros utilizados para la configuración del

servicio. Empezaremos viendo los ficheros necesarios para el despliegue del mismo en Eclipse.

Continuaremos con la configuración de cabeceras y la base de datos. Veremos también los

esquemas XML y terminaremos con los ficheros de internacionalización del servicio.

1 Despliegue del servicio

Como ya se vio en el Capítulo III, para el despliegue del servicio en Eclipse es necesario la

edición del descriptor de despliegue con el fichero sip.xml y la selección de un Servlet principal con

el fichero package-info.java. En los siguientes apartados mostramos el contenido de estos dos

ficheros.

1.1 sip.xml

<?xml version="1.0"?>

<!-- Titulo: sip.xml. -->

<!-- Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com) -->

<!-- Version: 1.0 -->

<!-- Fecha: 2012-09-24 -->

<!DOCTYPE sip-app PUBLIC "-//Java Community Process//DTD SIP Application

1.0//EN" "http://www.jcp.org/dtd/sip-app_1_0.dtd">

<sip-app>

238

Anexo II: Ficheros de configuración

<servlet>

<servlet-name>Driverbid</servlet-name>

<servlet-class>com.carpooling.DriverbidServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>Passengerbid</servlet-name>

<servlet-class>com.carpooling.PassengerbidServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>User</servlet-name>

<servlet-class>com.carpooling.UserServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>Carpool</servlet-name>

<servlet-class>com.carpooling.CarpoolServlet</servlet-class>

</servlet>

<servlet>

<servlet-name>LocationEnabler</servlet-name>

<servlet-class>com.carpooling.LocationEnabler</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Driverbid</servlet-name>

<pattern>

<and>

<equal>

<var>request.method</var>

<value>MESSAGE</value>

</equal>

<contains>

<var>request.to</var>

<value>driverbid@ericsson</value>

</contains>

</and>

</pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>Passengerbid</servlet-name>

239

Servicio de Coche Compartido basado en el IMS

<pattern>

<and>

<equal>

<var>request.method</var>

<value>MESSAGE</value>

</equal>

<contains>

<var>request.to</var>

<value>passengerbid@ericsson</value>

</contains>

</and>

</pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>User</servlet-name>

<pattern>

<and>

<equal>

<var>request.method</var>

<value>MESSAGE</value>

</equal>

<contains>

<var>request.to</var>

<value>userprofile@ericsson</value>

</contains>

</and>

</pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>Carpool</servlet-name>

<pattern>

<or>

<and>

<equal>

<var>request.method</var>

<value>MESSAGE</value>

</equal>

<contains>

<var>request.to</var>

240

Anexo II: Ficheros de configuración

<value>carpool@ericsson</value>

</contains>

</and>

<equal>

<var>request.method</var>

<value>NOTIFY</value>

</equal>

</or>

</pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>LocationEnabler</servlet-name>

<pattern>

<or>

<and>

<equal>

<var>request.method</var>

<value>MESSAGE</value>

</equal>

<contains>

<var>request.to</var>

<value>location.ericsson</value>

</contains>

</and>

<equal>

<var>request.method</var>

<value>SUBSCRIBE</value>

</equal>

</or>

</pattern>

</servlet-mapping>

</sip-app>

241

Servicio de Coche Compartido basado en el IMS

1.2 package-info.java

//package-info.java

//Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com)

//Version: 1.0

//Fecha: 2012-09-24

@SipApplication(name="CarpoolingService",displayName="CarpoolingService",dis

tributable=true,mainServlet="Driverbid")

package com.carpooling;

import javax.servlet.sip.annotation.SipApplication;

2 Configuración de cabeceras y base de datos

Con estos dos ficheros mostrados a continuación, hemos querido independizar el valor de las

cabeceras SIP y la ubicación de la Base de Datos del código Java.

2.1 sipheaders.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- Titulo: sipheaders.xml. -->

<!-- Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com) -->

<!-- Version: 1.0 -->

<!-- Fecha: 2012-09-24 -->

<headers>

<method message="MESSAGE" subscribe="SUBSCRIBE"

notify="NOTIFY"></method>

<createURI ip_port="127.0.0.1:5082"></createURI>

<user_agent server="Application Server"></user_agent>

<content_type type="text/xml"></content_type>

<p_asserted_id uri="sip:carpooling@imscarpooling.com"></p_asserted_id>

<event location="location" presence="presence"></event>

<carpool_servlet sipuri="sip:carpool@ericsson.com"></carpool_servlet>

<location_enabler sipuri="sip:location.ericsson.com"></location_enabler>

</headers>

242

Anexo II: Ficheros de configuración

2.2 dbconfig.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- Titulo: dbconfig.xml -->

<!-- Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com) -->

<!-- Version: 1.0 -->

<!-- Fecha: 2012-09-24 -->

<dbaccess>

<url_info url="jdbc:mysql://localhost:3306/carpooldb"></url_info>

<admin_info user="root" password=""></admin_info>

<class_info class_name="com.mysql.jdbc.Driver"></class_info>

</dbaccess>

3 Esquemas XML

En esta sección veremos el contenido de todos los esquemas utilizados para validar el contenido

de los mensajes SIP entrantes en el servidor.

3.1 useraction.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:annotation>

<xs:documentation>

Titulo: usearaction.xsd.

Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com)

Version: 1.0

Fecha: 2012-09-24

</xs:documentation>

</xs:annotation>

<xs:element name="useraction">

<xs:complexType>

<xs:choice>

<xs:element ref="create_profile" />

<xs:element ref="update_profile" />

<xs:element ref="register_car" />

243

Servicio de Coche Compartido basado en el IMS

<xs:element ref="update_car" />

<xs:element ref="delete_user" />

<xs:element ref="delete_car" />

<xs:element ref="get_user_profile" />

<xs:element ref="get_user_car" />

<xs:element ref="get_user_statistics" />

</xs:choice>

</xs:complexType>

</xs:element>

<xs:element name="create_profile">

<xs:complexType>

<xs:attribute name="photo" type="xs:string" use="optional" />

<xs:attribute name="nick" type="xs:string" use="required" />

<xs:attribute name="country" type="xs:string" use="required" />

<xs:attribute name="lang">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="es"></xs:enumeration>

<xs:enumeration value="en"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="sex" type="xs:string" use="required" />

<xs:attribute name="smoker" type="xs:string" use="required" />

<xs:attribute name="twitter_ID" type="xs:string" use="optional" />

</xs:complexType>

</xs:element>

<xs:element name="update_profile">

<xs:complexType>

<xs:attribute name="photo" type="xs:string" use="optional"/>

<xs:attribute name="nick" type="xs:string" use="optional"/>

<xs:attribute name="country" type="xs:string" use="optional"/>

<xs:attribute name="lang" use="optional">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="es"></xs:enumeration>

<xs:enumeration value="en"></xs:enumeration>

244

Anexo II: Ficheros de configuración

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="sex" use="optional">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="M"></xs:enumeration>

<xs:enumeration value="F"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="smoker" use="optional">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="YES"></xs:enumeration>

<xs:enumeration value="NO"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="twitter_ID" type="xs:string" use="optional" />

</xs:complexType>

</xs:element>

<xs:element name="register_car">

<xs:complexType>

<xs:attribute name="carplate" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="7"></xs:length>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="vendor" type="xs:string" use="required" />

<xs:attribute name="model" type="xs:string" use="required" />

<xs:attribute name="color" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="Blue"></xs:enumeration>

<xs:enumeration value="Red"></xs:enumeration>

245

Servicio de Coche Compartido basado en el IMS

<xs:enumeration value="White"></xs:enumeration>

<xs:enumeration value="Yellow"></xs:enumeration>

<xs:enumeration value="Orange"></xs:enumeration>

<xs:enumeration value="Black"></xs:enumeration>

<xs:enumeration value="Grey"></xs:enumeration>

<xs:enumeration value="Green"></xs:enumeration>

<xs:enumeration value="Brown"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="purch_date" use="optional">

<xs:simpleType>

<xs:restriction base="xs:date">

<xs:pattern value="((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|

([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="update_car">

<xs:complexType>

<xs:attribute name="carplate" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="7"></xs:length>

<xs:pattern value="[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="vendor" type="xs:string" use="optional" />

<xs:attribute name="model" type="xs:string" use="optional" />

<xs:attribute name="color" use="optional">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="Red"></xs:enumeration>

<xs:enumeration value="Blue"></xs:enumeration>

246

Anexo II: Ficheros de configuración

<xs:enumeration value="Yellow"></xs:enumeration>

<xs:enumeration value="Green"></xs:enumeration>

<xs:enumeration value="Brown"></xs:enumeration>

<xs:enumeration value="Black"></xs:enumeration>

<xs:enumeration value="Grey"></xs:enumeration>

<xs:enumeration value="Orange"></xs:enumeration>

<xs:enumeration value="White"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="purch_date" type="xs:date"></xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="delete_user">

<xs:complexType>

<xs:attribute name="nick" use="required"/>

</xs:complexType>

</xs:element>

<xs:element name="delete_car">

<xs:complexType>

<xs:attribute name="carplate" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="7"></xs:length>

<xs:pattern value="[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="get_user_profile">

<xs:complexType>

</xs:complexType>

</xs:element>

<xs:element name="get_user_car">

<xs:complexType>

<xs:attribute name="carplate" use="required">

247

Servicio de Coche Compartido basado en el IMS

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="7"></xs:length>

<xs:pattern value="[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="get_user_statistics">

<xs:complexType>

</xs:complexType>

</xs:element>

</xs:schema>

248

Anexo II: Ficheros de configuración

3.2 driverbid.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:annotation>

<xs:documentation>

Titulo: driverbid.xsd.

Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com)

Version: 1.0

Fecha: 2012-09-24

</xs:documentation>

</xs:annotation>

<xs:element name="driverbid">

<xs:complexType>

<xs:sequence>

<xs:element ref="search_engine"/>

<xs:element ref="route_info" />

<xs:element ref="sched_info" />

<xs:element ref="travel_info" />

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="search_engine">

<xs:complexType>

<xs:attribute name="type_of_search" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="SIMPLE"></xs:enumeration>

<xs:enumeration value="COMPLETE"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="route_info">

<xs:complexType>

<xs:attribute name="dest" type="xs:string" use="required" />

249

Servicio de Coche Compartido basado en el IMS

<xs:attribute name="orig" type="xs:string" use="required" />

</xs:complexType>

</xs:element>

<xs:element name="sched_info">

<xs:complexType>

<xs:attribute name="aimed_arriv_time" use="required">

<xs:simpleType>

<xs:restriction base="xs:time">

<xs:minInclusive value="00:00:00"></xs:minInclusive>

<xs:pattern value="(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-

9]+)?">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="dept_time" use="required">

<xs:simpleType>

<xs:restriction base="xs:time">

<xs:minInclusive value="00:00:00"></xs:minInclusive>

<xs:pattern value="(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.

[0-9]+)?">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="dept_date" use="required">

<xs:simpleType>

<xs:restriction base="xs:date">

<xs:pattern value="((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|

([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))">

</xs:pattern>

<xs:minInclusive value="2012-01-01"></xs:minInclusive>

<xs:maxInclusive value="9999-12-31"></xs:maxInclusive>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="travel_info">

250

Anexo II: Ficheros de configuración

<xs:complexType>

<xs:attribute name="n_seats" use="required">

<xs:simpleType>

<xs:restriction base="xs:int">

<xs:pattern value="[0-9]"></xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="n_lugg" use="required">

<xs:simpleType>

<xs:restriction base="xs:int">

<xs:pattern value="[0-9]"></xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="carplate" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="7"></xs:length>

<xs:pattern value="[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="smoke" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="2"></xs:length>

<xs:enumeration value="YES"></xs:enumeration>

<xs:enumeration value="NO"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="reputation_req">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="ANY"></xs:enumeration>

<xs:enumeration value="BEGINNER"></xs:enumeration>

251

Servicio de Coche Compartido basado en el IMS

<xs:enumeration value="AMATEUR"></xs:enumeration>

<xs:enumeration value="PROFESSIONAL"></xs:enumeration>

<xs:enumeration value="ADVANCED"></xs:enumeration>

<xs:enumeration value="EXPERT"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="cost" type="xs:int"></xs:attribute>

</xs:complexType>

</xs:element>

</xs:schema>

252

Anexo II: Ficheros de configuración

3.3 passengerbid.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:annotation>

<xs:documentation>

Titulo: driverbid.xsd.

Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com)

Version: 1.0

Fecha: 2012-09-24

</xs:documentation>

</xs:annotation>

<xs:element name="driverbid">

<xs:complexType>

<xs:sequence>

<xs:element ref="search_engine"/>

<xs:element ref="route_info" />

<xs:element ref="sched_info" />

<xs:element ref="travel_info" />

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="search_engine">

<xs:complexType>

<xs:attribute name="type_of_search" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="SIMPLE"></xs:enumeration>

<xs:enumeration value="COMPLETE"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="route_info">

<xs:complexType>

<xs:attribute name="dest" type="xs:string" use="required" />

253

Servicio de Coche Compartido basado en el IMS

<xs:attribute name="orig" type="xs:string" use="required" />

</xs:complexType>

</xs:element>

<xs:element name="sched_info">

<xs:complexType>

<xs:attribute name="aimed_arriv_time" use="required">

<xs:simpleType>

<xs:restriction base="xs:time">

<xs:minInclusive value="00:00:00"></xs:minInclusive>

<xs:pattern value="(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-

9]+)?">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="dept_time" use="required">

<xs:simpleType>

<xs:restriction base="xs:time">

<xs:minInclusive value="00:00:00"></xs:minInclusive>

<xs:pattern value="(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-

9]+)?">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="dept_date" use="required">

<xs:simpleType>

<xs:restriction base="xs:date">

<xs:pattern value="((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|

([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))">

</xs:pattern>

<xs:minInclusive value="2012-01-01"></xs:minInclusive>

<xs:maxInclusive value="9999-12-31"></xs:maxInclusive>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="travel_info">

254

Anexo II: Ficheros de configuración

<xs:complexType>

<xs:attribute name="n_seats" use="required">

<xs:simpleType>

<xs:restriction base="xs:int">

<xs:pattern value="[0-9]"></xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="n_lugg" use="required">

<xs:simpleType>

<xs:restriction base="xs:int">

<xs:pattern value="[0-9]"></xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="carplate" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="7"></xs:length>

<xs:pattern value="[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]">

</xs:pattern>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="smoke" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="2"></xs:length>

<xs:enumeration value="YES"></xs:enumeration>

<xs:enumeration value="NO"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="reputation_req">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="ANY"></xs:enumeration>

<xs:enumeration value="BEGINNER"></xs:enumeration>

255

Servicio de Coche Compartido basado en el IMS

<xs:enumeration value="AMATEUR"></xs:enumeration>

<xs:enumeration value="PROFESSIONAL"></xs:enumeration>

<xs:enumeration value="ADVANCED"></xs:enumeration>

<xs:enumeration value="EXPERT"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="cost" type="xs:int"></xs:attribute>

</xs:complexType>

</xs:element>

</xs:schema>

256

Anexo II: Ficheros de configuración

3.4 carpool.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:annotation>

<xs:documentation>

Titulo: carpool.xsd.

Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com)

Version: 1.0

Fecha: 2012-09-24

</xs:documentation>

</xs:annotation>

<xs:element name="carpool">

<xs:complexType>

<xs:choice>

<xs:element ref="confirm"/>

<xs:element ref="start"/>

<xs:element ref="finish"/>

<xs:element ref="pick_up"/>

<xs:element ref="rate"/>

</xs:choice>

</xs:complexType>

</xs:element>

<xs:element name="confirm">

<xs:complexType>

<xs:attribute name="action" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:enumeration value="AGREE"></xs:enumeration>

<xs:enumeration value="REJECT"></xs:enumeration>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="id_matched" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="8"></xs:length>

257

Servicio de Coche Compartido basado en el IMS

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="pick_up_time" use="optional">

<xs:simpleType>

<xs:restriction base="xs:time">

<xs:pattern value="(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-

9]+)?">

</xs:pattern>

<xs:minInclusive value="00:00:00"></xs:minInclusive>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="start">

<xs:complexType>

<xs:attribute name="ref_number" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="8"></xs:length>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="finish">

<xs:complexType>

<xs:attribute name="ref_number" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="8"></xs:length>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="pick_up">

<xs:complexType>

258

Anexo II: Ficheros de configuración

<xs:attribute name="ref_number" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="8"></xs:length>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

<xs:element name="rate">

<xs:complexType>

<xs:attribute name="ref_number" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="8"></xs:length>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

<xs:attribute name="nick" type="xs:string"></xs:attribute>

<xs:attribute name="score">

<xs:simpleType>

<xs:restriction base="xs:int">

<xs:minInclusive value="0"></xs:minInclusive>

<xs:maxInclusive value="10"></xs:maxInclusive>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

</xs:schema>

259

Servicio de Coche Compartido basado en el IMS

3.5 publish.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:annotation>

<xs:documentation>

Titulo: publish.xsd.

Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com)

Version: 1.0

Fecha: 2012-09-24

</xs:documentation>

</xs:annotation>

<xs:element name="publish">

<xs:complexType>

<xs:sequence>

<xs:element name="cp">

<xs:complexType>

<xs:attribute name="ref_number" use="required">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:length value="8"></xs:length>

</xs:restriction>

</xs:simpleType>

</xs:attribute>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

260

Anexo II: Ficheros de configuración

4 Internacionalización del servicio

En esta sección mostramos a continuación los ficheros de idiomas que contienen mensajes de texto en Inglés y Español.

4.1 Messages_en.properties

###########################################################

#Title: Messages_en.properties #

#Author: Fernando Crespo Gravalos (fcgravalos@gmail.com) #

#Version: 1.0 #

#Date: 2012-09-24 #

###########################################################

#User´s actions messages

profile_ok=Your profile was created.

name_err=The nick or the twitterID, already exists.Please, try again.

profile_err=Sorry, you can only have one profile created.

update_user_ok=User data updated.

car_ok=New car registered.

carplate_err=Car plate already exists.Please, try again.

update_car_ok=Car data updated.

user_deleted=User deleted.

car_deleted=Car deleted.

#Driverbid messages

no_passenger_compatible=You will be notified when the system finds a

passenger compatible.

carplate_not_registered=The carplate was not registered. Please, register

the car or try it with other registered carplate.

#Passengerbid messages

no_driver_compatible=You will be notified when the system finds a driver

compatible.

#Carpool closed

cp_completed=Sorry, the carpool has already been completed. You can´t

confirm this matching.

no_space_lugg_d=Sorry, not enough space for luggage. You can´t confirm this

matching.

261

Servicio de Coche Compartido basado en el IMS

no_space_lugg_p=Sorry, not enough space for luggage. You can´t confirm this

matching. Please, try it again with less luggage.

#Confirmation

wait_conf=Waiting for the other poleer´s confirmation.

#Carpool created

cp_created=Carpool created.

ref_number=Reference number:

y_nick=Your nick is:

h_nick=His nick is:

p_up_site=Pick up site:

p_up_time=Pick up time:

orig=Origin:

dest=Destination:

sugg_r=Suggested Route:

#Matching rejected

matching=Matching

rejected=rejected

262

Anexo II: Ficheros de configuración

4.2 Messages_es.properties

###########################################################

#Titulo: Messages_es.properties #

#Autor: Fernando Crespo Gravalos (fcgravalos@gmail.com) #

#Version: 1.0 #

#Fecha: 2012-09-24 #

###########################################################

#Mensajes de acciones de usuario.

profile_ok=Su perfil fue creado.

name_err=O el nick o el twitterID ya existen. Por favor, intentelo de nuevo.

profile_err=Lo siento, solo puede tener un perfil creado.

update_user_ok=Sus datos de usuario fueron actualizados.

car_ok=Nuevo coche registrado.

carplate_err=Esta matricula ya existe en el sistema. Por favor, intentelo de

nuevo.

update_car_ok=Datos del coche actualizados.

user_deleted=Usuario borrado.

car_deleted=Coche borrado.

#Mensajes de las ofertas de conductor

no_passenger_compatible=Sera avisado cuando se encuentre un pasajero

compatible.

carplate_not_registered=Coche no registrado. Por favor registre el coche o

intentelo con otro coche registrado.

#Mensajes de solicitud de pasajero

no_driver_compatible=Sera avisado cuando se encuentre un conductor

compatible.

#Carpool cerrado

cp_completed=Lo sentimos, el carpool ya se ha completado. No puedes

confirmar este emparejamiento.

no_space_lugg_d=Lo siento, no hay suficiente espacio para mas maletas en su

vehiculo. No puedes confirmar este emparejamiento.

no_space_lugg_p=Lo siento, no hay suficiente espacio para mas maletas. No

puedes confirmar este emparejamiento. Por favor intentelo de nuevo con menos

equipaje.

#Confirmacion

263

Servicio de Coche Compartido basado en el IMS

wait_conf=Esperando confirmación del otro participante.

#Carpool creado

cp_created=Carpool creado.

ref_number=Numero de Referencia:

y_nick=Tu nick es:

h_nick=Su nick es:

p_up_site=Punto de recogida:

p_up_time=Hora de recogida:

orig=Origen:

dest=Destino:

sugg_r=Ruta sugerida:

#Emparejamiento rechazado

matching=Emparejamiento

rejected=rechazado

264

Anexo II: Ficheros de configuración

5 Creación de carpooldb

Por último, veremos el contenido del script sql que genera automáticamente la interfaz

phpMyAdmin para la creación de carpooldb en el servidor XAMPP. Así, sólo habrá que importarla

si se traslada a otro servidor.

5.1 carpooldb.sql

-- phpMyAdmin SQL Dump

-- version 3.4.5

-- http://www.phpmyadmin.net

--

-- Servidor: localhost

-- Tiempo de generacion: 16-09-2012 a las 11:40:35

-- Version del servidor: 5.5.16

-- Version de PHP: 5.3.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

--

-- Base de datos: `carpooldb`

--

-- --------------------------------------------------------

--

-- Estructura de tabla para la tabla `carpool`

--

265

Servicio de Coche Compartido basado en el IMS

CREATE TABLE IF NOT EXISTS `carpool` (

`ref_number` varchar(8) NOT NULL,

`uri_d` varchar(60) NOT NULL,

`uri_p` varchar(60) NOT NULL,

`nickD` varchar(20) NOT NULL,

`nickP` varchar(20) NOT NULL,

`origin` varchar(45) NOT NULL,

`destination` varchar(45) NOT NULL,

`pick_up_site` varchar(100) NOT NULL,

`date` date NOT NULL,

`time` time NOT NULL,

`aimed_arrival_time` time NOT NULL,

`pick_up_time` time DEFAULT NULL,

`carplate` varchar(7) NOT NULL,

`cost` int(11) NOT NULL,

`smoke` enum('SI','NO') NOT NULL,

`location_subscription` enum('true','false') NOT NULL DEFAULT 'false',

`started` enum('true','false') NOT NULL DEFAULT 'false',

`passenger_picked_up` enum('true','false') NOT NULL DEFAULT 'false',

`finished` enum('true','false') NOT NULL DEFAULT 'false',

PRIMARY KEY (`uri_d`,`uri_p`,`origin`,`destination`,`date`,`time`),

KEY `fk_CARPOOL_MATCHED1` (`ref_number`),

KEY `uri_p` (`uri_p`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--

-- Estructura de tabla para la tabla `driverbid`

--

CREATE TABLE IF NOT EXISTS `driverbid` (

`id_offer` varchar(8) NOT NULL,

`d_origin` varchar(45) NOT NULL,

`d_dest` varchar(45) NOT NULL,

`d_date` date NOT NULL,

`d_time` time NOT NULL,

`aimed_arrival_time` time NOT NULL,

`offer_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE

266

Anexo II: Ficheros de configuración

CURRENT_TIMESTAMP,

`d_cost` int(11) NOT NULL,

`d_rep_req`

enum('ANY','BEGINNER','AMATEUR','PROFESSIONAL','ADVANCED','EXPERT') NOT

NULL,

`n_seats` int(11) NOT NULL,

`n_luggage` int(11) NOT NULL,

`uri` varchar(60) NOT NULL,

`carplate` varchar(7) NOT NULL,

`smoke` enum('YES','NO') NOT NULL,

PRIMARY KEY (`d_origin`,`d_dest`,`d_date`,`d_time`,`uri`,`carplate`),

UNIQUE KEY `id_offer_UNIQUE` (`id_offer`),

UNIQUE KEY `d_origin` (`d_origin`,`d_dest`,`d_date`,`d_time`,`uri`),

KEY `fk_DRIVERBID_USER1` (`uri`),

KEY `carplate` (`carplate`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--

-- Estructura de tabla para la tabla `matched`

--

CREATE TABLE IF NOT EXISTS `matched` (

`id_matched` varchar(8) NOT NULL,

`id_offer` varchar(8) NOT NULL,

`id_request` varchar(8) NOT NULL,

`driver_agree` enum('true','false') DEFAULT 'false',

`passenger_agree` enum('true','false') DEFAULT 'false',

`pick_up_time` time NOT NULL DEFAULT '00:00:00',

PRIMARY KEY (`id_matched`,`id_offer`,`id_request`),

KEY `id_request` (`id_offer`),

KEY `id_offer` (`id_request`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

267

Servicio de Coche Compartido basado en el IMS

--

-- Estructura de tabla para la tabla `operators`

--

CREATE TABLE IF NOT EXISTS `operators` (

`cell_ID` varchar(20) NOT NULL,

`location` varchar(100) NOT NULL,

PRIMARY KEY (`cell_ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--

-- Estructura de tabla para la tabla `owns_car`

--

CREATE TABLE IF NOT EXISTS `owns_car` (

`carplate` varchar(7) NOT NULL,

`vendor` varchar(10) NOT NULL,

`model` varchar(10) NOT NULL,

`color` varchar(20) NOT NULL,

`purch_date` date DEFAULT NULL,

`USER_uri` varchar(60) NOT NULL,

PRIMARY KEY (`carplate`,`USER_uri`),

UNIQUE KEY `carplate` (`carplate`),

KEY `fk_OWNS_CAR_USER` (`USER_uri`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--

-- Estructura de tabla para la tabla `passengerbid`

--

CREATE TABLE IF NOT EXISTS `passengerbid` (

`id_request` varchar(8) NOT NULL,

268

Anexo II: Ficheros de configuración

`p_origin` varchar(45) NOT NULL,

`p_dest` varchar(45) NOT NULL,

`pick_up_site` varchar(100) NOT NULL,

`p_date_min` date NOT NULL,

`p_date_max` date NOT NULL,

`p_time_min` time NOT NULL,

`p_time_max` time NOT NULL,

`luggage` int(11) NOT NULL,

`p_cost` int(11) NOT NULL,

`p_rep_req`

enum('BEGINNER','AMATEUR','PROFESSIONAL','EXPERT','ANY','ADVANCED') NOT

NULL,

`req_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE

CURRENT_TIMESTAMP,

`USER_uri` varchar(60) NOT NULL,

`smoke` enum('SI','NO') NOT NULL,

PRIMARY KEY

(`p_origin`,`p_dest`,`p_date_min`,`p_date_max`,`p_time_min`,`p_time_max`,`US

ER_uri`),

UNIQUE KEY `id_request_UNIQUE` (`id_request`),

KEY `fk_PASSENGERBID_USER1` (`USER_uri`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--

-- Estructura de tabla para la tabla `user`

--

CREATE TABLE IF NOT EXISTS `user` (

`photo` blob,

`uri` varchar(60) NOT NULL,

`nick` varchar(20) NOT NULL,

`country` varchar(45) NOT NULL,

`lang` enum('en','es') NOT NULL,

`sex` enum('M','F') NOT NULL,

`smoker` enum('YES','NO') NOT NULL,

269

Servicio de Coche Compartido basado en el IMS

`reputation`

enum('BEGINNER','AMATEUR','PROFESSIONAL','EXPERT','ANY','ADVANCED') NOT

NULL,

`twitter_ID` varchar(20) NOT NULL DEFAULT 'No defined',

`travels` int(11) NOT NULL,

`last_score` int(11) DEFAULT NULL,

`total_score` int(255) NOT NULL DEFAULT '0',

PRIMARY KEY (`uri`,`nick`),

UNIQUE KEY `nick` (`nick`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

270

top related