\subsection{Exportador de Datos}
\label{subsection:Exportador de Datos}

Este módulo tiene como misión tomar los valores de la base de datos.
Los valores se exportarán a cuatro estructuras diferentes:
\begin{enumerate}

\item \textbf{AlertsTable}.
\textit{AlertsTable} es una matriz compuesta por los límites de aumento/disminución de coste de cada uno de los valores de eficiencia evaluados.
Los valores de \textit{AlertsTable} pueden ser configurados por el usuario desde la interfaz web.
Los valores se representan en porcentaje.
Siempre que un valor varíe de manera que el porcentaje rebase los límites, se considerará que hay una alarma y el usuario será avisado mediante la interfaz web.
Cada valor tiene dos tipos de alarma: \textit{Red Alarms} y \textit{Green Alarms}.
\textit{Red Alarms} avisan al usuario de un aumento de coste que rebasa el límite estipulado en \textit{AlertsTable}.
\textit{Red Alarms} avisan al usuario de una disminución de coste con un porcentaje inferior al indicado en \textit{AlertsTable}.

Cada alarma tiene 3 porcentajes distintos, los cuales representan a diferentes períodos (corto plazo, medio plazo y largo plazo).
La utilidad de revisar la variación de eficiencia en diferentes períodos es la de poder hacer un seguimiento de la optimización del sistema más adecuado.

En la Listing \ref{code:AlertsTable} se muestra la tabla de alertas y sus valores por defecto.

\begin{lstlisting}[
	caption={Tabla de Alertas},
	label={code:AlertsTable},
	language={Python}
	]
                       RED ALARMS             GREEN ALARMS
	      	  Short  Middle  Long     Short  Middle  Long  
Reading Access	  10%     20%     50%    -12.5%   -25%   -50%
Writing Access    10%     20%     50%    -12.5%   -25%   -50%
Total Access 	  7.5%    15%     30%      -10%   -20%   -40%
Search Error      7.5%    15%     30%      -10%   -20%   -40%
Read Error	  7.5%    15%     30%      -10%   -20%   -40%
Write Error       7.5%    15%     30%      -10%   -20%   -40%
Total Error        6%     12%     25%     -8.5%   -17%   -35%
Cicles             5%     10%     20%     -7.5%   -15%   -30%

\end{lstlisting}

\item \textbf{PeriodsList}.
La lista de períodos es una lista con tres valores.
Cada uno de estos valores indica el número de días considerados para el corto, medio y largo plazo.
Los días pueden ser configurados desde la interfaz web por el usuario.
Los valores por defecto son:

Corto plazo: 1 día\\
Medio plazo: 5 días\\
Largo plazo: 10 días\\

\item \textbf{ProgressMap}.

Los cálculos de porcentaje están vinculados a \textit{PeriodsList}.
A partir de esta estructuras se compararán los valores del último testeo con los valores del testeo correspondiente a cada uno de los períodos.
La progresión de eficiencia entre los dos testings se mostrará en porcentajes.
En el caso que el porcentaje sea positivo, significará que el coste ha aumentado.
En caso de obtener porcentaje negativo, el coste en el último testing habrá disminuido respecto al test de período anterior.

\begin{lstlisting}[
	caption={Mapa de progreso},
	label={code:ProgressMap},
	language={Python}
	]
{
	'XXXTest::testXXX()':
        {
		'Short Time':[RA,WA,TA,SE,RE,WE,TE,Cicles],
        	'Middle Time':[RA,WA,TA,SE,RE,WE,TE,Cicles],
        	'Long Time':[RA,WA,TA,SE,RE,WE,TE,Cicles]
	}
}

	RA = Reading Access
	WA = Writing Access
	TA = Total Access
	SE = Searching Error
	RE = Reading Error
	WE = Writing Error
	TE = Total Error
\end{lstlisting}


\item \textbf{TestMap}
Esta estructura será utilizada para crear el gráfico de evolución de un test.
Como puede verse en la Listing \ref{code:exportedTestMap}, en \textit{testMap} se almacenan los valores de todas las evaluaciones realizadas a un test concreto.

\begin{lstlisting}[
	caption={TestMap},
	label={code:exportedTestMap},
	language={Python}
	]
{
	'20050720': [RA,WA,TA,SE,RE,WE,TE,Cicles],
	'20050721': [RA,WA,TA,SE,RE,WE,TE,Cicles],
	'20050722': [RA,WA,TA,SE,RE,WE,TE,Cicles],
	'20050723': [RA,WA,TA,SE,RE,WE,TE,Cicles],
	'20050724': [RA,WA,TA,SE,RE,WE,TE,Cicles],
}

	RA = Reading Access
	WA = Writing Access
	TA = Total Access
	SE = Searching Error
	RE = Reading Error
	WE = Writing Error
	TE = Total Error
\end{lstlisting}

\end{enumerate}
