Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Unitat de Tecnologies de la Informació i Comunicacions Projecte Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Aplicació Territorial Barcelona, 15 / novembre / 2015 420331857.doc Pàgina 1 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Històric de modificacions Data Autor Comentaris Versió 20/07/2006 Atos Origin, sae Versió inicial del document 21/06/2007 Sadiel Rols Amagats 1.0.1 1.0 19/02/2008 Francesc Quiñones Gispert (Sadiel) Afegir com fer servir els popups de municipis i poblacions 1.03 12/12/2008 Angel-Daniel Calderón Tamayo (Sadiel, S.A.) Es detalla la manera de fer servir el nou servei de geocodificació. 1.04 Llegenda de Marcadors 420331857.doc Pàgina 2 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Índex 1. INTRODUCCIÓ ........................................................................................................................................ 4 1.1. 1.2. 1.3. 1.4. 1.5. 2. PROPÒSIT ........................................................................................................................................... 4 CONTEXT I ESCENARIS D’ÚS ................................................................................................................ 5 VERSIONS I DEPENDÈNCIES ................................................................................................................. 6 A QUI VA DIRIGIT .................................................................................................................................. 6 DOCUMENTS I FONTS DE REFERÈNCIA.................................................................................................. 7 DESCRIPCIÓ DETALLADA .................................................................................................................... 8 2.1. ARQUITECTURA I COMPONENTS ........................................................................................................... 8 2.1.1. Interfícies i Components Genèrics .......................................................................................... 11 2.2. CONFIGURACIÓ ................................................................................................................................. 15 2.2.1. Configuració ............................................................................................................................. 15 2.3. UTILITZACIÓ SERVEIS DE GEOCODIFICACIÓ I DE DADES TERRITORIALS .................................................. 21 2.4. CONFIGURACIÓN EN EL MAP ............................................................................................................. 25 420331857.doc Pàgina 3 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions 1. Introducció 1.1. Propòsit El propósito de la aplicación territorial es la gestión de datos correspondientes a paises, y a provincias, comunidades autónomas, comarcas, veguerías, municipios y poblaciones de España. En el caso de las veguerías en particular, la aplicación permite realizar altas, bajas y modificaciones de las mismas. En todos los casos, la aplicación ofrece los listados de cada entidad, permitiendo hacer búsquedas rápidas sobre estos listados. También permite la exportación de los listados mencionados a ficheros de formato PDF y XLS. Esta aplicación provee a su vez un servicio de acceso a los datos de una determinada población (y de todas las entidades relacionadas con dicha población), un servicio de acceso a los datos de un determinado municipio y un servicio de geocodificación. Dado que estos servicios se ofrecerán a otras aplicaciones, se ha desarrollado dentro de la aplicación territorial un apartado para testear estos servicios. (Más adelante se detallará el proceso de configuración para acceder a estos servicios). El servicio de acceso a los datos de una población permite al usuario manipular estos datos. La tarea mas común es la de completar los datos de un formulario con información territorial. El apartado de test de este servicio ofrece un formulario vacío de datos de una población, y a través de un popup, ofrece al usuario un listado de todas las poblaciones (con diversos criterios de búsqueda para encontrar más fácilmente la población deseada). Seleccionando una población de este listado, el formulario será completado con los datos de la población seleccionada. El servicio de geocodificación ofrece al usuario la posibilidad de normalizar una dirección, y también le permite obtener las coordenadas UTM de dicha dirección. En el apartado de test de este servicio se presenta un formulario vacío en donde el usuario debe seleccionar una población y debe ingresar una dirección. El servicio de geocodificación procesará la información ingresada y presentará los resultados en un popup. Si la dirección no estuviera correctamente escrita, el servicio ofrecerá al usuario un listado con la o las diversas direcciones encontradas en las bases de datos del ICC que pudieran coincidir con los datos ingresados. Si los datos ingrsados fueran correctos, el servicio ofrecerá solo la dirección ingresada. Seleccionando la dirección deseada dentro de las presentadas en el listado del popup, el formulario origen se completará con los datos correspondientes a dicha dirección. 420331857.doc Pàgina 4 de 26 15/11/2015 Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Unitat de Tecnologies de la Informació i Comunicacions 1.2. Context i Escenaris d’Ús La Aplicación Territorial se encuentra dentro de los módulos funcionales desarrollados para el DPTOP. Servei Tags Servei Multiidioma Servei Acceso Dades Servei Persones Integració GECAT Servei Pantalles Servei Llistats Servei Validació Servei XML Servei OLE (Word,Excel) Servei Upload Servei Reports PDF Servei Acesso HTTP Servei Cues Value Object (VO) Servei Fitxers Data Access Objects (DAO) Servei Plan. Tasques Business Objects (BO) Web Services Servei Connector SAP Actions FrontEnd Administració Applicacions Integració S@RCAT Servlets S. BD Territorial jsp Base de Dades Capa Presentació Servei Mapeig O-R Servei Directori Capa Lògica de Negoci Prototip Tramitació d’Expedients Capa Dades /Integració Servei Plantilles Documents Workflow Engine Servei Traces Servei Excepcions Servei Seguretat (Autentificació/Autorització) Funcionalitat Nov a DPTOP Servei Correo Servei de Configuració Func. Existent openFr ame (extret del document: JAB15.211-05 versió def.doc) 420331857.doc Pàgina 5 de 26 15/11/2015 Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Unitat de Tecnologies de la Informació i Comunicacions 1.3. Versions i Dependències En el presente apartado se muestra cuales son las versiones y dependencias necesarias para hacer uso del servicio: Nom 1.4. Tipus Versió Descripció openFrame-services- Jar core-1.0.1.jar 1.0.1 Nucli comú per tots el serveis openFrame-services- Jar configuration-1.1SNAPSHOT.jar 1.1-SNAPSHOT Servei de configuració openFrame-services- Jar security-1.1SNAPSHOT.jar 1.1-SNAPSHOT Servei de seguretat openFrame-services- Jar logging 1.0 Servei de traces openFrame-services- Jar exceptions 1.0 Servei d’excepcions openFrame-services- Jar persistence-1.1SNAPSHOT.jar 1.1-SNAPSHOT Servei de persistència openFrame-services- Jar i18n-1.0.jar 1.0 Servei per a la internacionalització openFrame-services- Jar web-1.0.1SNAPSHOT.jar 1.0.1-SNAPSHOT Servei de Tags de Presentació openFrame-services- Jar validation-1.0.jar 1.0 Servei de Validació de dades openFrame-services- Jar fileupload-1.0.jar 1.0 Servei de pujada de fitxers dom4j-1.6.1.jar 1.6.1 Api Java, open source, per a la gestió de documents xml. Jar A qui va dirigit Este documento va dirigido a los siguientes perfiles: Programador. Para que conozca el uso de la aplicación. Arquitecte. Para que sepa cuales son los componentes y la configuración de la aplicación. 420331857.doc Pàgina 6 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions 1.5. Documents i Fonts de Referència [1] ANF-openFrameDPTOP.doc Document d’anàlisi dels serveis generals funcionals. [2] Introducció_open Frame.doc Document bàsic per conèixer els fonaments d’openFrame [3] www.dom4j.org Pàgina oficial de l’api dom4j. 420331857.doc Pàgina 7 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions 2. Descripció Detallada 2.1. Arquitectura i Components La Aplicación Territorial forma parte de los Módulos Funcionales desarrollados con OpenFrame para el DPTOP. Su funcionalidad puede ser divididad en dos partes: Por un lado se encuentran los listados de información territorial. Listados que contienen informacion de paises, y de comunidades autónomas, provincias, comarcas, veguerías, poblaciones y municipios de España. Por el otro lado se encuentran el servicio de información territorial y el servicio de geocodificación. Mas adelante se da una explicación más detallada del funcionamiento de cada una de las partes mencionadas. A continuación se presenta el esquema de base de datos que necesita esta aplicación para su funcionamiento: NOTA: en la tabla poblacio_bdt se almacenan municipios y poblaciones (o también denominados, llogarets). Un municipio puede albergar varias poblaciones, y todos comparten el mismo codi_municipi. Cuando un registro de la tabla poblacio_bdt tiene el codi_llogaret=00, esto indica que ese registro hace referencia a un municipio. Si el codi_llogaret <>00 indica que ese registro hace referencia a una población. 420331857.doc Pàgina 8 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions La definición de cada una de las entidades que aparecen en este modelo es la siguiente: PAIS Esta entidad guarda el nombre e idenficiación interna de cada pais. Los campos que definen esta entidad son: Codi_pais: Identificador único del país. Descripcio: Nombre del país. COMUNIDAD AUTONOMA Esta entidad define una agrupación de provincias dentro de un país. Como el nombre de la tabla lo indica, esta agrupación de provincias recibe el nombre de comunidad autónoma. Los campos que definen esta entidad son: Codi_comunitat_autonoma: Identificador único de la comunidad autónoma. (Todas las provincias que tengan el mismo valor de codi_comunitat_autonoma pertenecerán a la misma comunidad.) Descripcio: Nombre de la comunidad autónoma Codi_pais: Identificador del país al que pertence la comunidad autónoma. PROVINCIA_BDT La entidad provincia_bdt define agrupaciones de veguerias, poblaciones y municipios. Los campos que definen esta entidad son: Codi_provincia: Identificador único de una provincia. Descripcio: Nombre de la provincia Codi_pais: Identificador del pais al que pertenece la provincia Codi_comunitat_autonoma: Identificador de la comunidad autónoma a la que pertenece la provincia. COMARCA Una comarca define una agrupación de poblaciones y municipios. Los campos que definen esta entidad son: Codi_comarca: Identificador único de la comarca. (Aquellas poblaciones y municipios que tengan el mismo identificador de comarca pertenecerán a la misma comarca) Descripcio: Nombre de la comarca VEGUERIA Una veguería define una agrupación de municipios. Esto quiere decir que aquellos municipios cuyos registros en la tabla poblacio_bdt tengan el mismo codi_veguería (y tengan codi_llogaret=00, lo que indica que son municipios) pertenecerán a la misma veguería. Los campos que definen esta entidad son: Codi_vegueria: Identificador único de una veguería. Se genera automáticamente a travez de una sequencia. Descripcio_vegueria: Nombre de la veguería. POBLACIO_BDT Como se indicó en la nota anterior, en la tabla poblacio_bdt se almacenan municipios (codi_llogaret=00) y poblaciones (codi_llogaret<>00). Las poblaciones que corresponden a un determinado municipio tienen el mismo codi_municipi que su correspondiente municipio. Los campos que definen esta entidad son: Codi_municipi: Identificador de municipio. 420331857.doc Pàgina 9 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Descripcio: Nombre del municipio/poblacio Codi_llogaret: Identificador único de un llogaret en un municipio, donde el valor 00 indica que el registro contiene datos de un municipio. Codi_ine: Código externo del municipio (valor utilizado por el servicio de geocodificación) Codi_provincia: Identificador único de la provincia a la que pertenece el municipio/poblacio Codi_comarca: Identificador único de la comarca a la que pertenece el municipio Codi_vegueria: Identificador único de laveguería a la que pertenece el municipio. Este campo tendrá un valor asignado SOLO si el registro corresponde a un municipio (codi_llogaret=00). 420331857.doc Pàgina 10 de 26 15/11/2015 Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Unitat de Tecnologies de la Informació i Comunicacions 2.1.1. Interfícies i Components Genèrics La parte que gestiona los datos define las siguientes interfaces: cd action «interface» bo::ComunitatAutonomaBO «interface» bo::ComarcaBO + + + + + + + + + + + «interface» dao::ComarcaDAO get(java.lang.String) : net.gencat.territorial.model.Comarca load(java.lang.String) : net.gencat.territorial.model.Comarca findAll() : java.util.List save(net.gencat.territorial.model.Comarca) : java.lang.String saveOrUpdate(net.gencat.territorial.model.Comarca) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.Comarca) : void refresh(net.gencat.territorial.model.Comarca) : void update(net.gencat.territorial.model.Comarca) : void findFiltered(String, Object) : List findFiltered(String, Object, Order) : List + + + + + + + + + + + + + + + + + + + save(net.gencat.territorial.model.Comarca) : java.lang.String saveOrUpdate(net.gencat.territorial.model.Comarca) : void update(net.gencat.territorial.model.Comarca) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.Comarca) : void refresh(net.gencat.territorial.model.Comarca) : void load(java.lang.String) : net.gencat.territorial.model.Comarca get(java.lang.String) : net.gencat.territorial.model.Comarca «interface» dao::ComunitatAutonomaDAO save(net.gencat.territorial.model.ComunitatAutonoma) : java.lang.String saveOrUpdate(net.gencat.territorial.model.ComunitatAutonoma) : void update(net.gencat.territorial.model.ComunitatAutonoma) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.ComunitatAutonoma) : void refresh(net.gencat.territorial.model.ComunitatAutonoma) : void load(java.lang.String) : net.gencat.territorial.model.ComunitatAutonoma get(java.lang.String) : net.gencat.territorial.model.ComunitatAutonoma findAll() : java.util.List findFiltered(String, Object) : List findFiltered(String, Object, Order) : List + + + + + + + + save(net.gencat.territorial.model.ComunitatAutonoma) : java.lang.String saveOrUpdate(net.gencat.territorial.model.ComunitatAutonoma) : void update(net.gencat.territorial.model.ComunitatAutonoma) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.ComunitatAutonoma) : void refresh(net.gencat.territorial.model.ComunitatAutonoma) : void load(java.lang.String) : net.gencat.territorial.model.ComunitatAutonoma get(java.lang.String) : net.gencat.territorial.model.ComunitatAutonoma ~dao ~dao -bo -bo impl::ComunitatAutonomaBOImpl impl::ComarcaBOImpl DispatchActionSupport ComarcaAction - bo: ComarcaBO valueListActionHelper: ValueListActionHelper + + + + + + + search(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportPDF(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportExcel(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward getValueListActionHelper() : ValueListActionHelper setValueListActionHelper(ValueListActionHelper) : void getBo() : ComarcaBO setBo(ComarcaBO) : void DispatchActionSupport ~ dao: ComarcaDAO + + + + + + + + + + + + + getDao() : ComarcaDAO setDao(ComarcaDAO) : void get(String) : Comarca load(String) : Comarca findAll() : List save(Comarca) : String saveOrUpdate(Comarca) : void delete(String) : void delete(Comarca) : void refresh(Comarca) : void update(Comarca) : void findFiltered(String, Object) : List findFiltered(String, Object, Order) : List ComunitatAutonomaAction - bo: ComunitatAutonomaBO valueListActionHelper: ValueListActionHelper + + + + + + + search(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportPDF(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportExcel(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward getBo() : ComunitatAutonomaBO setBo(ComunitatAutonomaBO) : void getValueListActionHelper() : ValueListActionHelper setValueListActionHelper(ValueListActionHelper) : void ~ dao: ComunitatAutonomaDAO + + + + + + + + + + + + + getDao() : ComunitatAutonomaDAO setDao(ComunitatAutonomaDAO) : void save(ComunitatAutonoma) : String saveOrUpdate(ComunitatAutonoma) : void update(ComunitatAutonoma) : void delete(String) : void delete(ComunitatAutonoma) : void refresh(ComunitatAutonoma) : void load(String) : ComunitatAutonoma get(String) : ComunitatAutonoma findAll() : List findFiltered(String, Object) : List findFiltered(String, Object, Order) : List cd action «interface» bo::VegueriaBO «interface» bo::ProvinciaBdtBO + + + + + + + + + + -bo + + + + DispatchActionSupport TestICCAction - iccWebServicesObject: ICCWebServices + + + + + getIccWebServicesObject() : ICCWebServices setIccWebServicesObject(ICCWebServices) : void init(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward geocodificar(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward normalizarAdreca(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward + + + + + + + -bo + + + + save(net.gencat.territorial.model.ProvinciaBdt) : java.lang.String saveOrUpdate(net.gencat.territorial.model.ProvinciaBdt) : void update(net.gencat.territorial.model.ProvinciaBdt) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.ProvinciaBdt) : void refresh(net.gencat.territorial.model.ProvinciaBdt) : void load(java.lang.String) : net.gencat.territorial.model.ProvinciaBdt get(java.lang.String) : net.gencat.territorial.model.ProvinciaBdt findAll() : java.util.List findFiltered(String, Object) : List findFiltered(String, Object, Order) : List save(net.gencat.territorial.model.Vegueria) : java.lang.String saveOrUpdate(net.gencat.territorial.model.Vegueria) : void update(net.gencat.territorial.model.Vegueria) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.Vegueria) : void refresh(net.gencat.territorial.model.Vegueria) : void load(java.lang.String) : net.gencat.territorial.model.Vegueria get(java.lang.String) : net.gencat.territorial.model.Vegueria findAll() : java.util.List findFiltered(String, Object) : List findFiltered(String, Object, Order) : List deassignPoblacionsFromVegueriaAndDelete(String) : void updateVegueriaIPoblacions(String, String, String) : void newVegueria(Vegueria, String) : void «interface» «interface» bo::PoblacioBdtBO «interface» dao::ProvinciaBdtDAO + + + + + + + + save(net.gencat.territorial.model.ProvinciaBdt) : java.lang.String saveOrUpdate(net.gencat.territorial.model.ProvinciaBdt) : void update(net.gencat.territorial.model.ProvinciaBdt) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.ProvinciaBdt) : void refresh(net.gencat.territorial.model.ProvinciaBdt) : void load(java.lang.String) : net.gencat.territorial.model.ProvinciaBdt get(java.lang.String) : net.gencat.territorial.model.ProvinciaBdt dao::VegueriaDAO + + + + + + + + + + + + + + + + + + + save(net.gencat.territorial.model.Vegueria) : java.lang.String saveOrUpdate(net.gencat.territorial.model.Vegueria) : void update(net.gencat.territorial.model.Vegueria) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.Vegueria) : void refresh(net.gencat.territorial.model.Vegueria) : void load(java.lang.String) : net.gencat.territorial.model.Vegueria get(java.lang.String) : net.gencat.territorial.model.Vegueria ~dao -dao save(net.gencat.territorial.model.PoblacioBdt) : net.gencat.territorial.model.PoblacioBdtPK saveOrUpdate(net.gencat.territorial.model.PoblacioBdt) : void update(net.gencat.territorial.model.PoblacioBdt) : void delete(net.gencat.territorial.model.PoblacioBdtPK) : void delete(net.gencat.territorial.model.PoblacioBdt) : void refresh(net.gencat.territorial.model.PoblacioBdt) : void load(net.gencat.territorial.model.PoblacioBdtPK) : net.gencat.territorial.model.PoblacioBdt get(net.gencat.territorial.model.PoblacioBdtPK) : net.gencat.territorial.model.PoblacioBdt findAll() : java.util.List findFiltered(String, Object) : List findFiltered(String, Object, Order) : List -poblacioBdtBO «interface» dao::PoblacioBdtDAO + + + + + + + + save(net.gencat.territorial.model.PoblacioBdt) : net.gencat.territorial.model.PoblacioBdtPK saveOrUpdate(net.gencat.territorial.model.PoblacioBdt) : void update(net.gencat.territorial.model.PoblacioBdt) : void delete(net.gencat.territorial.model.PoblacioBdtPK) : void delete(net.gencat.territorial.model.PoblacioBdt) : void refresh(net.gencat.territorial.model.PoblacioBdt) : void load(net.gencat.territorial.model.PoblacioBdtPK) : net.gencat.territorial.model.PoblacioBdt get(net.gencat.territorial.model.PoblacioBdtPK) : net.gencat.territorial.model.PoblacioBdt ~dao -bo -bo impl::VegueriaBOImpl DispatchActionSupport impl::Prov inciaBdtBOImpl VegueriaAction DispatchActionSupport Prov inciaAction - bo: ProvinciaBdtBO valueListActionHelper: ValueListActionHelper + + + + + + + search(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportPDF(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportExcel(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward getValueListActionHelper() : ValueListActionHelper setValueListActionHelper(ValueListActionHelper) : void getBo() : ProvinciaBdtBO setBo(ProvinciaBdtBO) : void 420331857.doc - bo: VegueriaBO valueListActionHelper: ValueListActionHelper + + + + + + + + + + + + edit(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward update(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward newVegueria(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward addVegueria(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward delete(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward search(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportPDF(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportExcel(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward getBo() : VegueriaBO setBo(VegueriaBO) : void getValueListActionHelper() : ValueListActionHelper setValueListActionHelper(ValueListActionHelper) : void DispatchActionSupport VegueriaSearchAction - bo: VegueriaBO valueListActionHelper: ValueListActionHelper + + + + + search(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward getBo() : VegueriaBO setBo(VegueriaBO) : void getValueListActionHelper() : ValueListActionHelper setValueListActionHelper(ValueListActionHelper) : void ~ dao: ProvinciaBdtDAO + + + + + + + + + + + + + getDao() : ProvinciaBdtDAO setDao(ProvinciaBdtDAO) : void save(ProvinciaBdt) : String saveOrUpdate(ProvinciaBdt) : void update(ProvinciaBdt) : void delete(String) : void delete(ProvinciaBdt) : void refresh(ProvinciaBdt) : void load(String) : ProvinciaBdt get(String) : ProvinciaBdt findAll() : List findFiltered(String, Object, Order) : List findFiltered(String, Object) : List - dao: VegueriaDAO poblacioBdtBO: PoblacioBdtBO DEFAULT_CODIGO_LLOGARET_: String = "00" + + + + + + + + + + + + + + + + + + getDao() : VegueriaDAO setDao(VegueriaDAO) : void save(Vegueria) : String saveOrUpdate(Vegueria) : void update(Vegueria) : void delete(String) : void delete(Vegueria) : void refresh(Vegueria) : void load(String) : Vegueria get(String) : Vegueria findAll() : List findFiltered(String, Object, Order) : List findFiltered(String, Object) : List getPoblacioBdtBO() : PoblacioBdtBO setPoblacioBdtBO(PoblacioBdtBO) : void updateVegueriaIPoblacions(String, String, String) : void newVegueria(Vegueria, String) : void deassignPoblacionsFromVegueriaAndDelete(String) : void Pàgina 11 de 26 15/11/2015 impl::PoblacioBdtBOImpl DispatchActionSupport PoblacioBdtAction - bo: PoblacioBdtBO valueListActionHelper: ValueListActionHelper + + + + + + + search(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportPDF(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportExcel(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward getValueListActionHelper() : ValueListActionHelper setValueListActionHelper(ValueListActionHelper) : void getBo() : PoblacioBdtBO setBo(PoblacioBdtBO) : void ~ dao: PoblacioBdtDAO + + + + + + + + + + + + + getDao() : PoblacioBdtDAO setDao(PoblacioBdtDAO) : void save(PoblacioBdt) : PoblacioBdtPK saveOrUpdate(PoblacioBdt) : void update(PoblacioBdt) : void delete(PoblacioBdtPK) : void delete(PoblacioBdt) : void refresh(PoblacioBdt) : void load(PoblacioBdtPK) : PoblacioBdt get(PoblacioBdtPK) : PoblacioBdt findAll() : List findFiltered(String, Object) : List findFiltered(String, Object, Order) : List Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Unitat de Tecnologies de la Informació i Comunicacions cd action «interface» bo::PaisBO + + + + + + + + + + + «interface» dao::PaisDAO save(net.gencat.territorial.model.Pais) : java.lang.String saveOrUpdate(net.gencat.territorial.model.Pais) : void update(net.gencat.territorial.model.Pais) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.Pais) : void refresh(net.gencat.territorial.model.Pais) : void load(java.lang.String) : net.gencat.territorial.model.Pais get(java.lang.String) : net.gencat.territorial.model.Pais findAll() : java.util.List findFiltered(String, Object) : List findFiltered(String, Object, Order) : List + + + + + + + + save(net.gencat.territorial.model.Pais) : java.lang.String saveOrUpdate(net.gencat.territorial.model.Pais) : void update(net.gencat.territorial.model.Pais) : void delete(java.lang.String) : void delete(net.gencat.territorial.model.Pais) : void refresh(net.gencat.territorial.model.Pais) : void load(java.lang.String) : net.gencat.territorial.model.Pais get(java.lang.String) : net.gencat.territorial.model.Pais ~dao -bo impl::PaisBOImpl DispatchActionSupport PaisAction - bo: PaisBO valueListActionHelper: ValueListActionHelper + + + + + + + search(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportPDF(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward searchExportExcel(ActionMapping, ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) : ActionForward getBo() : PaisBO setBo(PaisBO) : void getValueListActionHelper() : ValueListActionHelper setValueListActionHelper(ValueListActionHelper) : void 420331857.doc ~ dao: PaisDAO + + + + + + + + + + + + + getDao() : PaisDAO setDao(PaisDAO) : void save(Pais) : String saveOrUpdate(Pais) : void update(Pais) : void delete(String) : void delete(Pais) : void refresh(Pais) : void load(String) : Pais get(String) : Pais findAll() : List findFiltered(String, Object, Order) : List findFiltered(String, Object) : List Pàgina 12 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Component PaisAction Package net.gencat.territorial.struts.action ComunitatAutonomaAction net.gencat.territorial.struts.action ProvinciaAction net.gencat.territorial.struts.action ComarcaAction net.gencat.territorial.struts.action VegueriaAction net.gencat.territorial.struts.action PoblacioBdtAction net.gencat.territorial.struts.action PopupAction net.gencat.territorial.struts.action TestICCAction net.gencat.territorial.struts.action PaisBO net.gencat.territorial.model.bo ComunitatAutonomaBO net.gencat.territorial.model.bo ProvinciaBO net.gencat.territorial.model.bo ComarcaBO net.gencat.territorial.model.bo VegueriaBO net.gencat.territorial.model.bo PoblacioBdtBO net.gencat.territorial.model.bo PaisBOImpl PaisDAO net.gencat.territorial.model.bo.im pl net.gencat.territorial.model.bo.im pl net.gencat.territorial.model.bo.im pl net.gencat.territorial.model.bo.im pl net.gencat.territorial.model.bo.im pl net.gencat.territorial.model.bo.im pl net.gencat.territorial.model.dao ComunitatAutonomaDAO net.gencat.territorial.model.dao ComunitatAutonomaBOImpl ProvinciaBOImpl ComarcaBOImpl VegueriaBOImpl PoblacioBdtBOImpl 420331857.doc Descripció Action para gestionar las peticiones relacionadas con paises Action para gestionar las peticiones relacionadas con comunidades autónomas Action para gestionar las peticiones relacionadas con provincias Action para gestionar las peticiones relacionadas con comarcas Action para gestionar las peticiones relacionadas con veguerías Action para gestionar las peticiones relacionadas con poblaciones Action para gestionar las peticiones relacionadas con con el el test del servicio de datos territoriales Action para gestionar las peticiones relacionadas con el test del servicio de geocodificación Interface del BO que se encarga de realizar todas las tareas del negocio relacionadas con paises Interface del BO que se encarga de realizar todas las tareas del negocio relacionadas con comunidades autónomas Interface del BO que se encarga de realizar todas las tareas del negocio relacionadas con provincias Interface del BO que se encarga de realizar todas las tareas del negocio relacionadas con comarcas Interface del BO que se encarga de realizar todas las tareas del negocio relacionadas con veguerías Interface del BO que se encarga de realizar todas las tareas del negocio relacionadas con poblaciones Implementación de su correspondiente interface Implementación de su correspondiente interface Implementación de su correspondiente interface Implementación de su correspondiente interface Implementación de su correspondiente interface Implementación de su correspondiente interface DAO de acceso a los datos de paises en la BD DAO de acceso a los datos de Pàgina 13 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions ProvinciaDAO net.gencat.territorial.model.dao ComarcaDAO net.gencat.territorial.model.dao VegueriaDAO net.gencat.territorial.model.dao PoblacioBdtDAO net.gencat.territorial.model.dao comunidades autónomas en la BD DAO de acceso a los datos provincias en la BD DAO de acceso a los datos comarcas en la BD DAO de acceso a los datos veguerías en la BD DAO de acceso a los datos poblaciones en la BD de de de de Para la parte del front-end web se utilizan los siguientes ficheros (a los cuales se hace referencia en el fichero de configuración tiles-definitions.xml. Nom fitxer: qsPais.jsp llistaPaissos.jsp qsComunitat.jsp llistaComunitat.jsp qsProvinciaBdt.jsp llistaProvinciasBdt.jsp qsComarca.jsp llistaComarca.jsp qsVegueria.jsp llistaVegueries.jsp newVegueria.jsp vegueria.jsp qsPoblacioBdt.jsp llistaPoblacioBdt.jsp testPopupTerritorial.jsp popupTerritorial.jsp testICCPopUp.jsp llistaTestICCPopUp.jsp 420331857.doc Descripció JSP para ingresar el criterio de búsqueda de un pais. JSP para mostrar el listado de paises resultado de una búsqueda. JSP para ingresar el criterio de búsqueda de una comunidad autonoma. JSP para mostrar el listado de comunidaddes autonomas resultado de una búsqueda. JSP para ingresar el criterio de búsqueda de una provincia. JSP para mostrar el listado de provincias resultado de una búsqueda. JSP para ingresar el criterio de búsqueda de una comarca. JSP para mostrar el listado de comarcas resultado de una búsqueda. JSP para ingresar el criterio de búsqueda de una veguería. JSP para mostrar el listado de veguerias resultado de una búsqueda. JSP para generar una nueva veguería. JSP para editar los datos de una veguería. JSP para ingresar el criterio de búsqueda de una población. JSP para mostrar el listado de poblaciones resultado de una búsqueda. JSP que contiene un formulario de datos territoriales vacío, y un botón para activar el popup territorial. JSP correspondiente al popup territorial. Muetra el listado de poblaciones, y presenta un apartado para ingresar criterios de búsqueda. Los elementos del listado son seleccionables (seleccionar una población hará que se copien los datos territoriales al formulario de la testPopupTerritorial.jsp, y el popup se cerrará automáticamente). JSP que contiene un formulario de datos de una dirección, y un botón para activar el popup del servicio de geocodificación. En este formulario el usuario deberá ingresar una población y el nombre de una calle de dicha población. JSP correspondiente al popup del servicio de geocodificación. Presenta un listado con una o varias direcciones (de acuerdo a los datos ingresados en el formulario de la jsp anteriormente detallada). Cada dirección del listado es seleccionable. Seleccionar una dirección hará que se completen los datos del formulario, y cerrará el popup automáticamente. Pàgina 14 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions 2.2. 2.2.1. Configuració Configuració La configuracion de la Aplicación territorial sigue el paradigma definido para el desarrollo de una aplicación dentro del framework openFrame. Por lo tanto es recomendable realizar una lectura previa de los documentos técnicos de configuración del los diferentes servicios del framework. En particular, es de especial interés la lectura de los documentos siguientes: - openFrame-Servei-Presentacio-Cat.doc: openFrame-Servei-Presentacio-Pantalles-Cat.doc openFrame-Servei-Persistencia-Cat.doc openFrame-Servei-configuracio-Cat.doc Configuració del front-end web Para la parte de la configuración web, se deben seguir los siguientes pasos: 1. Hacer la configuración para a la presentación con Tiles. 2. Hacer el fichero de configuración de las actions de Struts. 3. Hacer la configuración del mecanismm de IoC para los beans (mapeo de atributos y referencias). 4. Hacer el fichero de configuración de Hibernate. Configuració de la presentació amb Tiles Se debe generar el fichero de configuración tiles-definitions.xml en el directorio <PROJECT_ROOT>/src/main/resources/tiles/AppJava/admin/tiles-definitions.xml En este fichero esta definido cómo se presentará la aplicación: tiles-definitions.xml <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"> <tiles-definitions> <definition name="pages.admin.init" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/includes/blank.jsp" /> <put name="body" value="/WEB-INF/jsp/includes/blank.jsp" /> </definition> <definition name="pages.admin.pais" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/pais/qsPais.jsp" /> <put name="body" value="/WEB-INF/jsp/pais/llistaPaissos.jsp" /> </definition> <definition name="pages.admin.comunitatAutonoma" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/comunitatAutonoma/qsComunitat.jsp" /> <put name="body" value="/WEB-INF/jsp/comunitatAutonoma/llistaComunitats.jsp" /> </definition> <definition name="pages.admin.provinciaBdt" 420331857.doc Pàgina 15 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true"/> <put name="quickSearch" value="/WEBINF/jsp/provinciaBdt/qsProvinciasBdt.jsp"/> <put name="body" value="/WEB-INF/jsp/provinciaBdt/llistaProvinciasBdt.jsp"/> </definition> <definition name="pages.admin.comarques" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="body" value="/WEB-INF/jsp/includes/blank.jsp" /> </definition> <definition name="pages.admin.vegueries" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/vegueria/qsVegueria.jsp" /> <put name="body" value="/WEB-INF/jsp/vegueria/llistaVegueries.jsp" /> </definition> <definition name="pages.admin.poblacioBdt" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/poblacioBdt/qsPoblacioBdt.jsp" /> <put name="body" value="/WEB-INF/jsp/poblacioBdt/llistaPoblacioBdt.jsp" /> </definition> <definition name="pages.admin.newVegueria" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/includes/blank.jsp" /> <put name="body" value="/WEB-INF/jsp/vegueria/newVegueria.jsp" /> </definition> <definition name="pages.admin.vegueria" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/includes/blank.jsp" /> <put name="body" value="/WEB-INF/jsp/vegueria/vegueria.jsp" /> </definition> <definition name="pages.admin.comarca" extends="site.layout.admin"> <put name="title" value="Administració Entitats" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/comarca/qsComarca.jsp" /> <put name="body" value="/WEB-INF/jsp/comarca/llistaComarca.jsp" /> </definition> <definition name="pages.admin.testICC" extends="site.layout.admin"> <put name="title" value="Test WebServices ICC" direct="true"/> <put name="quickSearch" value="/WEB-INF/jsp/testICC/testICC.jsp"/> <put name="body" value="/WEB-INF/jsp/testICC/llistaTest.jsp" /> </definition> <definition name="pages.admin.testICCPopUp" extends="site.layout.admin"> <put name="title" value="Test WebServices ICC" direct="true"/> <put name="quickSearch" value="/WEB-INF/jsp/includes/blank.jsp"/> <put name="body" value="/WEB-INF/jsp/popup/testICCPopUp.jsp" /> </definition> <definition name="pages.admin.resultatTestICCPopUp" extends="site.layout.popup"> <put name="title" value="Test WebServices ICC" direct="true"/> <put name="body" value="/WEB-INF/jsp/popup/llistaTestICCPopUp.jsp" /> </definition> 420331857.doc Pàgina 16 de 26 15/11/2015 Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Unitat de Tecnologies de la Informació i Comunicacions <definition name="pages.admin.initPopup" extends="site.layout.admin"> <put name="title" value="Popup Territorial" direct="true" /> <put name="quickSearch" value="/WEB-INF/jsp/includes/blank.jsp" /> <put name="body" value="/WEB-INF/jsp/popup/testPopupTerritorial.jsp" /> </definition> <definition name="pages.admin.popupTerritorial" extends="site.layout.popup"> <put name="title" value="Popup Territorial" direct="true" /> <put name="body" value="/WEB-INF/jsp/popup/popupTerritorial.jsp" /> </definition> </tiles-definitions> Para mas iformación, consultar el documento openFrame-Serveis-Presentacio-Pantalles-Cat.doc. Configuració de la part de Struts La configuración de la parte de Struts implica generar un struts-config.xml, e indicarle al fichero de configuración del servlet de la aplicación la existencia de el mencionado struts-config.xml. territorial-servlet.xml ... <bean id="strutsWrappingController" class="org.springframework.web.servlet.mvc.ServletWrappingController"> <property name="servletClass"> <value>org.apache.struts.action.ActionServlet</value> </property> <property name="servletName"> <value>action</value> </property> <property name="initParameters"> <props> … <prop key="config/AppJava/admin"> /WEB-INF/classes/struts/AppJava/admin/struts-config.xml </prop> … </props> </property> </bean> ... Luego se debe generar el fichero struts-config.xml en el directorio <PROJECT_ROOT>/src/main/resources/struts/AppJava/admin/struts-config.xml struts-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans> <form-bean name="actionForm" type="net.opentrends.openframe.services.web.struts.SpringBindingActionForm" /> </form-beans> <global-exceptions /> <global-forwards></global-forwards> <action-mappings> <!-- Generic Forward Action 420331857.doc --> Pàgina 17 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions <action path="/page*" type="org.apache.struts.actions.ForwardAction" parameter="pages.admin.{1}" /> <action path="/init" scope="request" parameter="reqCode"> <forward name="init" path="pages.admin.init" redirect="true" /> <forward name="error" path="pages.admin.init" redirect="true" /> </action> <action path="/pais" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.pais" redirect="true" /> <forward name="error" path="pages.admin.pais" redirect="true" /> </action> <action path="/paissos" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.pais" redirect="true" /> <forward name="error" path="pages.admin.pais" redirect="true" /> </action> <action path="/comunitatAutonoma" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.comunitatAutonoma" redirect="true" /> <forward name="error" path="pages.admin.comunitatAutonoma" redirect="true" /> </action> <action path="/vegueria" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.vegueries" redirect="true" /> <forward name="newVegueria" path="pages.admin.newVegueria" redirect="true" /> <forward name="error" path="pages.admin.vegueries" redirect="true" /> </action> <action path="/vegueriaSearch" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.vegueries" redirect="true" /> <forward name="error" path="pages.admin.vegueries" redirect="true" /> </action> <action path="/editVegueria" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.vegueria" redirect="true" /> <forward name="successNew" path="/vegueriaSearch.do?reqCode=search" redirect="true"/> <forward name="successUpdate" path="/vegueriaSearch.do?reqCode=search" redirect="true"/> <forward name="error" path="pages.admin.vegueries" redirect="true" /> </action> <action path="/deleteVegueria" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="/vegueriaSearch.do?reqCode=search" redirect="true"/> <forward name="error" path="pages.admin.vegueries" redirect="true" /> </action> <action path="/provinciaBdt" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.provinciaBdt" redirect="true" /> <forward name="error" path="pages.admin.provinciaBdt" redirect="true" /> </action> <action path="/provinciasBdt" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.provinciaBdt" redirect="true" /> <forward name="error" path="pages.admin.provinciaBdt" redirect="true" /> </action> <action path="/llogaret" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.llogaret" redirect="true" /> <forward name="error" path="pages.admin.llogaret" redirect="true" /> </action> <action path="/llogarets" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.llogaret" redirect="true" /> <forward name="error" path="pages.admin.llogaret" redirect="true" /> </action> 420331857.doc Pàgina 18 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions <action path="/poblacioBdt" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.poblacioBdt" redirect="true" /> <forward name="error" path="pages.admin.poblacioBdt" redirect="true" /> </action> <action path="/poblacionsBdt" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.poblacioBdt" redirect="true" /> <forward name="error" path="pages.admin.poblacioBdt" redirect="true" /> </action> <action path="/comarca" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.comarca" redirect="true" /> <forward name="error" path="pages.admin.comarca" redirect="true" /> </action> <action path="/comarcas" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.comarca" redirect="true" /> <forward name="error" path="pages.admin.comarca" redirect="true" /> </action> <action path="/testICC" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.testICC" redirect="true" /> <forward name="error" path="pages.admin.testICC" redirect="true" /> </action> <action path="/testICCPopUp" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.testICCPopUp" redirect="true" /> <forward name="popup" path="pages.admin.resultatTestICCPopUp" redirect="true" /> <forward name="error" path="pages.admin.resultatTestICCPopUp" redirect="true" /> </action> <action path="/popup" name="actionForm" scope="request" parameter="reqCode"> <forward name="success" path="pages.admin.initPopup" redirect="true" /> <forward name="popup" path="pages.admin.popupTerritorial" redirect="true" /> <forward name="error" path="pages.admin.popupTerritorial" redirect="true" /> </action> </action-mappings> <controller> <set-property property="processorClass" value="net.opentrends.openframe.services.web.struts.ExtendedDelegatingTilesRequestProcessor" /> </controller> <message-resources parameter="i18n.applicationResources" null="false" /> <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/classes/tiles/tiles-definitions.xml,/WEBINF/classes/tiles/AppJava/admin/tiles-definitions.xml" /> <set-property property="moduleAware" value="true" /> </plug-in> </struts-config> Para mas información, consultar el documento openFrame-Serveis-Presentacio -Cat.doc. 420331857.doc Pàgina 19 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Configuración del mecanismo de IoC para los beans (mapeo de atributos y referencias) Primero hay que agregar al fichero <PROJECT_ROOT>/src/main/resources/spring/action-servlet.xml, los ficheros de configuració de las entidades de la aplicación: struts-config.xml ... <import <import <import <import <import <import <import <import resource="action-servlet-pais.xml"/> resource="action-servlet-comunitatAutonoma.xml"/> resource="action-servlet-vegueria.xml"/> resource="action-servlet-provincia.xml"/> resource="action-servlet-poblacio.xml"/> resource="action-servlet-comarca.xml"/> resource="action-servlet-testICC.xml"/> resource="action-servlet-popup.xml"/> ... Todos los ficehros listados anteriormente deben estar ubicados en la carpeta <PROJECT_ROOT>/src/main/resources/spring Para mas información sobre el contenido de estos ficheros consultar el documento openFrame-ServeisPresentacio_Cat.doc. Configuración del servicio de persistencia La configuración del servicio de persistencia consiste en registrar en el fichero del servicio de persistencia <PROJECT_ROOT>/src/main/resources/spring/openFrame-services-persistence.xml los ficheros de mappings de cada una de las entidades de la aplicación: hibernate.cfg.xml ...<property name="mappingResources"> <list> <value>hibernate/mappings/UserLogin.hbm.xml</value> <value>hibernate/mappings/PartyGroup.hbm.xml</value> <value>hibernate/mappings/Role.hbm.xml</value> <value>hibernate/mappings/Comarca.hbm.xml</value> <value>hibernate/mappings/ComunitatAutonoma.hbm.xml</value> <value>hibernate/mappings/PoblacioBdt.hbm.xml</value> <value>hibernate/mappings/Pais.hbm.xml</value> <value>hibernate/mappings/ProvinciaBdt.hbm.xml</value> <value>hibernate/mappings/Vegueria.hbm.xml</value> </list> </property>... Para mas información sobre esta configuración se puede consultar el documento openFrame-ServeisPersistencia_Cat.doc. 420331857.doc Pàgina 20 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions 2.3. Utilització serveis de geocodificació i de dades territorials Ús del Pop-up de Geocodificació Per fer ús del servei de geocodificació només s’han de tenir en compte dos punts: 1. S’ha de realitzar la crida al servei de geocodificació en un popup (nova finestra) passant-li les dades que es volen normalitzar / geocodificar. Les dades es passen per GET, a la mateixa URL de crida (<URL_TERRITORIAL>/AppJava/consulta/popupGeocodificador.do) 2. La pàgina que fa la crida ha de tenir una funció Javascript de callback per recollir la resposta de la geocodificació. La signatura d’aquesta funció ha de ser: popupGeocodificadorHandler(poblacio, tipusVia, articleVia, nomVia, numero, utmX, utmY) Els paràmetres que s’accepten a la crida són aquests: nomPoblacio Nom (exacte o aproximat) de la població. tipusCarrer Tipus exacte del carrer (“c.”, “ptge.”, etc.) articleCarrer Article exacte del carrer (“de”, “d’ “, etc.) nomCarrer Nom (exacte o aproximat) del carrer. numeroCarrer Número exacte de la portalada. Les coordenades que es retornen són les de la portalada indicada a la crida i, si no s’ha indicat portalada, del punt central del mínim rectangle que envolta al carrer. Les coordenades són UTM (fus 31N, datum ED50). Un exemple de pàgina que crida podria ser així: function popupGeocodificar() { var tipusCarrer = document.forms['actionForm'].tipusCarrer.value; var articleCarrer = document.forms['actionForm'].articleCarrer.value; var nomCarrer = document.forms['actionForm'].nomCarrer.value; var numCarrer = document.forms['actionForm'].numeroCarrer.value; var nomPoblacio = document.forms['actionForm'].poblacio.value; window.open('<c:url value="/consulta/popupGeocodificador.do"/>?'+ 'tipusCarrer='+tipusCarrer+ '&articleCarrer='+articleCarrer+ '&nomCarrer='+nomCarrer+ '&numeroCarrer='+numCarrer+ '&nomPoblacio='+nomPoblacio, 'popupGeocodificacio', 'width=700,height=400,resizable=yes,scrollbars=1'); } function popupGeocodificadorHandler(poblacio, tipusVia, articleVia, nomVia, numero, utmX, utmY) { document.forms['actionForm'].nomPoblacio.value=poblacio; document.forms['actionForm'].tipusCarrer.value=tipusVia; document.forms['actionForm'].articleCarrer.value=articleVia; document.forms['actionForm'].nomCarrer.value=nomVia; 420331857.doc Pàgina 21 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions document.forms['actionForm'].numeroCarrer.value=numero; document.forms['actionForm'].utmX.value=utmX; document.forms['actionForm'].utmY.value=utmY; } Pup-ups de Territorial Territorial ofereix dos popups per recuperar dades de poblacions i municipis. Seguidament s’explicarà com fer-los servir. A mode de comentari ressaltar que tant l’acció d’on es pengen com el handler, com la cerca és diferent en tots dos casos. Ús del Pop-up Territorial de Poblacions L’ús del popup territorial cerca de poblacions és molt simple: la jsp d'origen ha de tenir un formulari que contingui totes les propietats que desitgin mapejarse des del popup, i ha de tenir el handler corresponent per a portar a terme el mapeig. El codi js per a realitzar el cridat al popup territorial és el següent: function popup(mode, advancedSearch, doSearch, filtreCatalunya) { //netejaTot(); var myWidth = 720; var myHeight = 600; var myLeft = (screen.width - myWidth) / 2; var myTop = (screen.height - myHeight)/ 2; var filtres = obteFiltres(); window.open('<c:url value="/'+mode+'/popup.do?reqCode=searchIni&advancedSearch='+advancedSearch+'&d oSearch='+doSearch+'&filtreCatalunya='+filtreCatalunya+filtres+'"/>','popupTerr itorial','width='+myWidth+',height='+myHeight+',top='+myTop+', left='+myLeft+', center=yes,resizable=yes,scrollbars=1'); } //Funció que afegeix els filtres a la url. function obteFiltres(){ var filtres=""; filtres += "&vegueria.id=" + $("codiVegueria").value; filtres += "&descripcio=" + $("descPoblacio").value; filtres += "&comarca.id=" + $("codiComarca").value; filtres += "&provincia.id=" + $("codiProvincia").value; filtres += "&id.codiMunicipi=" + $("codiMunicipi").value; return filtres; } El popup ofereix les següents funcionalitats: 420331857.doc Pàgina 22 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions advancedSearch: el camp advancedSearch indica si la regió de cerca avançada ha d’aparèixer oberta o no. Els seus valors possibles són ‘opened’ i ‘closed’. En cas que el paràmetre no vingui informat el sistema per defecte posarà ‘closed’. doSearch: el camp doSearch indica si el popup ha de fer la cerca inicial o no. Els seus valors possibles són “true” i “false”. En cas que no vingui informat, el sistema per defecte posarà “false” i no realitzarà la cerca. filtreCatalunya: el camp filtreCatalunya indica si el popup ha de cercar Poblacions només a catalunya o no. Els seus valors possibles són “true” i “false”. En cas que no vingui informat, el sistema per defecte entendrà “true” i filtrarà per catalunya. Paràmetres de cerca: S’han afegit paràmetres inicials de cerca: o descripcio: Descripcio: nom de la població a cercar. S’informa amb el valor del camp de la pantalla origen que conté el nom, o part d’aquest, de la població a filtrar. o id.codiMunicipi: Codi Municipi: codi de la població a cercar. S’informa desde la pantalla de crida del popup. El codi enviat ha de ser el número complet. o comarca.id: Codi de la comarca a cercar. S’informa des de la pantalla de crida del popup. El codi enviat ha de ser el número complet. o provincia.id: Codi de la provincia a cercar S’informa des de la pantalla de crida del popup. El codi enviat ha de ser el número complet o vegueria.id: Codi de la vegueria a cercar. S’informa des de la pantalla de crida del popup. El codi enviat ha de ser el número complet. Tenir en compte que la cerca filtra per codiLlogaret != “00”, que és l’indicador de que la tupla de la BD és una població. Un codi d'exemple del handler per a realitzar el mapeig entre els valors que retorna el popup en el formulari de la jsp d'origen és el següent: function popupPoblacionsHandler(codiMunicipi, codiLlogaret, descPoblacio, codiProvincia, descProvincia, codiComarca, descComarca, codiVegueria, descVegueria, codiComunitat, descComunitat, codiIne, descMunicipi) { document.forms['territorial'].codiMunicipi.value=codiMunicipi; document.forms['territorial'].codiLlogaret.value=codiLlogaret; document.forms['territorial'].descPoblacio.value=descPoblacio; document.forms['territorial'].codiProvincia.value=codiProvincia; document.forms['territorial'].descProvincia.value=descProvincia; document.forms['territorial'].codiComarca.value=codiComarca; document.forms['territorial'].descComarca.value=descComarca; document.forms['territorial'].codiVegueria.value=codiVegueria; document.forms['territorial'].descVegueria.value=descVegueria; document.forms['territorial'].codiComunitat.value=codiComunitat; document.forms['territorial'].descComunitat.value=descComunitat; document.forms['territorial'].codiIne.value=codiIne; document.forms['territorial'].descMunicipi.value=descMunicipi; } 420331857.doc Pàgina 23 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Aquest codi és solament un exemple. De la funció anterior l'essencial és respectar l'encapçalat. Com és realitzin els mapeigs i quins mapeigs és realitzin és una decisió del programador d'acord als necessitats de la seva aplicació. Ús del Pop-up Territorial de Municipis L’ús del popup territorial de municipis, cerca de municipis, és molt simple: la jsp d'origen ha de tenir un formulari que contingui totes les propietats que desitgin mapejarse des del popup, i ha de tenir el handler corresponent per a portar a terme el mapeig. El codi js per a realitzar el cridat al popup territorial és el següent: function popupMunicipis(mode, advancedSearch, doSearch, filtreCatalunya) { //netejaTot(); var myWidth = 720; var myHeight = 600; var myLeft = (screen.width - myWidth) / 2; var myTop = (screen.height - myHeight)/ 2; var filtres = obteFiltres(); window.open('<c:url value="/'+mode+'/popupMunicipi.do?reqCode=searchIni&advancedSearch='+advancedSe arch+'&doSearch='+doSearch+'&filtreCatalunya='+filtreCatalunya+filtres+'"/>','p opupTerritorialMunicipi','width='+myWidth+',height='+myHeight+',top='+myTop+', left='+myLeft+', center=yes,resizable=yes,scrollbars=1'); } //Funció que afegeix els filtres a la url. function obteFiltres(){ var filtres=""; filtres += "&vegueria.id=" + $("codiVegueria").value; filtres += "&descripcio=" + $("descPoblacio").value; filtres += "&comarca.id=" + $("codiComarca").value; filtres += "&provincia.id=" + $("codiProvincia").value; filtres += "&id.codiMunicipi=" + $("codiMunicipi").value; return filtres; } Funcionalitats del popup de cerca de Municipis advancedSearch: el camp advancedSearch indica si la regió de cerca avançada ha d’aparèixer oberta o no. Els seus valors possibles són ‘opened’ i ‘closed’. En cas que el paràmetre no vingui informat el sistema per defecte posarà ‘closed’. doSearch: el camp doSearch indica si el popup ha de fer la cerca inicial o no. Els seus valors possibles són “true” i “false”. En cas que no vingui informat, el sistema per defecte posarà “false” i no realitzarà la cerca. FiltreCatalunya: el camp filtreCatalunya indica si el popup ha de cercar Municipis només a catalunya o no. Els seus valors possibles són “true” i “false!”. En cas que no vingui informat, el sistema per defecte entendrà “true” i filtrarà per catalunya. 420331857.doc Pàgina 24 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Paràmetres de cerca: S’han afegit paràmetres inicials de cerca: o descripcio: Descripcio: nom de la població a cercar. S’informa amb el valor del camp de la pantalla origen que conté el nom, o part d’aquest, de la població a filtrar. o id.codiMunicipi: Codi Municipi: codi de la població a cercar. S’informa des de la pantalla de crida del popup. El codi enviat ha de ser el número complet. o comarca.id: Codi de la comarca a cercar. S’informa des de la pantalla de crida del popup. El codi enviat ha de ser el número complet. o provincia.id: Codi de la provincia a cercar S’informa des de la pantalla de crida del popup. El codi enviat ha de ser el número complet o vegueria.id: Codi de la vegueria a cercar. S’informa des de la pantalla de crida del popup. El codi enviat ha de ser el número complet Tenir en compte que la cerca filtra per codiLlogaret = “00”, que és l’indicador de que la tupla de la BD és un municipi. Un codi d'exemple del handler per a realitzar el mapeig entre els valors que retorna el popup en el formulari de la jsp d'origen és el següent: function popupMunicipisHandler(codiMunicipi, descripcioMunicipi, provinciaId, descripcioProvincia, comarcaId, descripcioComarca, vegueriaId, descripcioVegueria, comunitatAutonomaId, descripcioComunitatAutonoma, codiIne) { //Codi a executar … } Aquest codi és solament un exemple. De la funció anterior l'essencial és respectar l'encapçalat. Com és realitzin els mapeigs i quins mapeigs és realitzin és una decisió del programador d'acord als necessitats de la seva aplicació. 2.4. Configuración en el MAP Configuración de los roles ocultos Al dar de alta o posteriormente al configurar la aplicación Territorial en el MAP hay que tener en cuenta que deben configurarse algunos roles ocultos para evitar que aprezca en la lista de aplicaciones disponibles en el MAP a usuarios que únicamente deben acceder a ella a través del servicio de Pop Up). 420331857.doc Pàgina 25 de 26 15/11/2015 Generalitat de Catalunya Departament de Política Territorial i Obres Públiques Projecte openFrame Serveis Generals per Aplicacions J2EE basats en FrameWork J2EE Unitat de Tecnologies de la Informació i Comunicacions Para ello deberá añadirse el rol de este perfil de usuarios (ROLE_CONSULTA_POPUP) en la lista de roles escondidos. 420331857.doc Pàgina 26 de 26 15/11/2015