3. Fichero de configuración: repos.xml
Fichero de configuración del repositorio. Una vez tenemos definida nuestra/s base/s de datos de la aplicación, fichero/s *.sqlite en el directorio data, necesitamos un fichero de configuración del repositorio.
Ejemplo: /data/repos.xml
<repos>
<repo dbFile="inspeccionesvinedo.sqlite" id="variedadRepo" dbTable="variedad"/>
<repo dbFile="inspeccionesvinedo.sqlite" id="tipoPlagaRepo" dbTable="tipo_plaga"/>
<repo dbFile="inspeccionesvinedo.sqlite" id="severidadRepo" dbTable="severidad" >
<mapping fk="tipo_plaga_id" property="tipoPlaga" repo="tipoPlagaRepo"/>
</repo>
<repo dbFile="inspeccionesvinedo.sqlite" id="provinciaRepo" dbTable="provincia" />
<repo dbFile="inspeccionesvinedo.sqlite" id="municipioRepo" dbTable="municipio">
<mapping fk="c_provincia_id" property="provincia" repo="provinciaRepo"/>
</repo>
<repo dbFile="inspeccionesvinedo.sqlite" id="plagaRepo" dbTable="plaga">
<meta properties="all">
<property name="location" columnName="location" converter="string" calculated="jexl" expression="${location.asWKT}" evalOn="insert"/>
<property name="f_actuacion" converter="date" pattern="seconds" evalOn="update" expression="${date.now}" />
<keyGenerator type="numericUUID"/>
</meta>
<mapping fk="variedad_id" property="variedad" repo="variedadRepo"/>
<mapping fk="tipo_plaga_id" property="tipoPlaga" repo="tipoPlagaRepo"/>
<mapping fk="severidad_id" property="severidad" repo="severidadRepo"/>
</repo>
<repo dbFile="inspeccionesvinedo.sqlite" id="plagaImagesRepo" dbTable="plaga_foto">
<meta>
<keyGenerator type="numericUUID"/>
<property name="f_actuacion" converter="date" pattern="seconds" evalOn="update" expression="${date.now}" />
</meta>
<mapping fk="plaga_id" property="plaga" repo="plagaRepo"/>
</repo>
<filerepo defaultExtension="jpg" folder="pictures/estado_fen" id="estadoFenImages" />
</repos>
Base de datos: /data/inspeccionesvinedo.sqlite
CREATE TABLE "variedad" (
variedad_id integer primary key AUTOINCREMENT,
nombre text
);
CREATE TABLE "tipo_plaga" (
tipo_plaga_id TEXT primary key,
tipo_plaga TEXT
);
CREATE TABLE "severidad" (
severidad_id INTEGER PRIMARY KEY AUTOINCREMENT,
tipo_plaga_id INTEGER,
codigo_severidad INTEGER,
descripcion_severidad TEXT,
FOREIGN KEY(tipo_plaga_id) REFERENCES tipo_plaga(tipo_plaga_id)
);
CREATE TABLE "provincia"(
"c_provincia_id" INTEGER PRIMARY KEY,
"d_provincia" TEXT,
"c_orden_provincia" INTEGER
);
CREATE TABLE "municipio"(
"c_municipio" TEXT,
"c_provmuni_id" TEXT PRIMARY KEY,
"c_provincia_id" INTEGER,
"d_nombre" TEXT,
FOREIGN KEY(c_provincia_id) REFERENCES provincia(c_provincia_id)
);
CREATE TABLE plaga (
plaga_id INTEGER PRIMARY KEY,
tipo_plaga_id TEXT,
ref_sigpac TEXT,
estado_fenologico_id TEXT,
observaciones TEXT,
location TEXT,
fecha_inspeccion TEXT,
variedad_id INTEGER,
severidad_id INTEGER,
f_actuacion INTEGER,
f_sincro INTEGER,
FOREIGN KEY(variedad_id) REFERENCES variedad(variedad_id),
FOREIGN KEY(severidad_id) REFERENCES severidad(severidad_id),
FOREIGN KEY(tipo_plaga_id) REFERENCES tipo_plaga(tipo_plaga_id)
);
CREATE TABLE plaga_foto (
plaga_foto_id INTEGER PRIMARY KEY,
plaga_id INTEGER,
image TEXT,
f_actuacion INTEGER,
f_sincro INTEGER,
FOREIGN KEY(plaga_id) REFERENCES plaga(plaga_id)
);
3.1 Tag repo
| Atributo |
Descripción |
| id |
Identificador único del componente, si no está definido, se utilizará el nombre del archivo base. Este identificador es el que vamos a usar en los formularios para indicar sobre qué tabla (dbTable) de la base de datos (dbFile) vamos a tomar los datos o guardar los datos del componente del formulario. |
| dbFile |
Hace referencia a la base de datos, fichero *.sqlite de la carpeta /data. |
| dbTable |
Tabla como base para consultar/almacenar entidades. |
<repo dbFile="inspeccionesvinedo.sqlite" id="variedadRepo" dbTable="variedad"/>
3.1.1 Tag mapping
| Atributo |
Descripción |
| id |
Identificador único del componente, si no está definido, se utilizará el nombre del archivo base. Este identificador es el que vamos a usar en los formularios para indicar sobre qué tabla (dbTable) de la base de datos (dbFile) vamos a tomar los datos o guardar los datos del componente del formulario. |
| fk |
Clave foránea. |
| property |
Nombre de la propiedad de la entidad principal en la que se almacenará la entidad relacionada. |
| repo |
Identificador del repositorio. |
| insertable |
Por defecto=verdadero. Si es true, cuando se inserta la entidad principal, también se inserta la entidad relacionada. |
| updatable |
Por defecto=verdadero. Si es true, cuando se almacena la entidad principal, también se actualiza la entidad relacionada. |
| deletable |
Por defecto=false. Si es true, cuando se elimina la entidad principal, se elimina la entidad relacionada. |
<mapping fk="c_provincia_id" property="provincia" repo="provinciaRepo"/>
3.1.2.1 Tag keyGenerator
| Atributo |
Descripción |
| type |
Estrategia de generación de clave de entidad. Posibles valores:
- MAXROWID: La nueva clave para la entidad será el valor máximo de rowid incrementado en 1.
- TIMESTAMP: La nueva clave para la entidad será la fecha actual en formato timestamp.
- UUID: La nueva clave para la entidad se generará usando UUID.
- NUMERICUUID: La nueva clave para la entidad será la fecha actual en formato timestamp concatenado con 5 dígitos aleatorios.
|
<keyGenerator type="numericUUID"/>
3.1.2.2 Tag property
| Atributo |
Descripción |
| name |
Nombre de la propiedad de la entidad. |
| expression |
|
| columnName |
Nombre de la propiedad de la entidad. |
| expressionType |
Tipo utilizado para representar el valor de columna recuperado. |
| converter |
Instancia del conversor a aplicar a la propiedad de la entidad. |
| evalOn |
select,insert,update |
| calculated |
jext|sql |
| pattern |
Patrón para convertir los valores calculados (sólo los calculados) antes de insertarlos en la BD. |
<property name="f_actuacion" converter="date" pattern="seconds" evalOn="update" expression="${date.now}" />
3.2 Tag filerepo
| Atributo |
Descripción |
| id |
Identificador único del componente. |
| folder |
Carpeta base que contiene las imágenes del repositorio. Si es relativa, la url se interpreta desde la carpeta del proyecto. |
| defaultExtension |
Extensión por defecto |
<filerepo defaultExtension="jpg" folder="pictures/estado_fen" id="estadoFenImages" />