Post on 12-Mar-2020
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