Commit a50bdda5 authored by Bruno López Trigo's avatar Bruno López Trigo

Modificado código demostrador web para cambiar facilmente a URL da API

parent 8c07d573
......@@ -275,9 +275,9 @@ public class LogBuilder implements LogInterface {
BufferedReader br = new BufferedReader(new FileReader(dataset));
String line;
ArrayList<String> atts = new ArrayList<>();
Pattern p = Pattern.compile("^@(attribute|ATTRIBUTE)\\s'?([\\w-]*)'?.*$");
Pattern p = Pattern.compile("(?i)^@(ATTRIBUTE)\\s'?([\\w-]*)'?.*$");
Matcher m;
while ((line = br.readLine()) != null && !line.matches("^@(data|DATA)$")) {
while ((line = br.readLine()) != null && !line.matches("(?i)^@(DATA)$")) {
m = p.matcher(line);
if (m.matches()) {
atts.add(m.group(2));
......
......@@ -7,7 +7,7 @@
<display-name>expliclas</display-name>
<welcome-file-list>
<welcome-file>/doc/index.html</welcome-file>
<welcome-file>doc/index.html</welcome-file>
</welcome-file-list>
<servlet>
......
......@@ -5,9 +5,9 @@
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="/doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/doc/favicon-16x16.png" sizes="16x16" />
<link rel="stylesheet" type="text/css" href="doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="doc/favicon-16x16.png" sizes="16x16" />
<style>
html
{
......@@ -34,8 +34,8 @@
<body>
<div id="swagger-ui"></div>
<script src="/doc/swagger-ui-bundle.js"> </script>
<script src="/doc/swagger-ui-standalone-preset.js"> </script>
<script src="doc/swagger-ui-bundle.js"> </script>
<script src="doc/swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {
......
......@@ -7,7 +7,7 @@
<display-name>expliclas</display-name>
<welcome-file-list>
<welcome-file>/doc/index.html</welcome-file>
<welcome-file>doc/index.html</welcome-file>
</welcome-file-list>
<servlet>
......
......@@ -5,9 +5,9 @@
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="/doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/doc/favicon-16x16.png" sizes="16x16" />
<link rel="stylesheet" type="text/css" href="doc/swagger-ui.css" >
<link rel="icon" type="image/png" href="doc/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="doc/favicon-16x16.png" sizes="16x16" />
<style>
html
{
......@@ -34,8 +34,8 @@
<body>
<div id="swagger-ui"></div>
<script src="/doc/swagger-ui-bundle.js"> </script>
<script src="/doc/swagger-ui-standalone-preset.js"> </script>
<script src="doc/swagger-ui-bundle.js"> </script>
<script src="doc/swagger-ui-standalone-preset.js"> </script>
<script>
window.onload = function() {
......
#Generated by Maven
#Sat Jun 02 21:11:38 CEST 2018
#Wed Jun 06 17:35:42 CEST 2018
version=1.0
groupId=brunolopez
artifactId=expliclas-api
This diff is collapsed.
......@@ -5,6 +5,7 @@
"dependencies": {
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-global-configuration": "^1.2.1",
"react-router-dom": "^4.2.2",
"react-scripts": "1.1.4"
},
......
......@@ -10,6 +10,7 @@ import Explanation from './components/Explanation';
import Footer from './components/Footer';
import NotFound from './components/NotFound';
import Alert from './components/Alert';
import { API_ROOT } from './config';
class App extends Component {
......@@ -36,7 +37,7 @@ class App extends Component {
}
setLogState(e) {
fetch('http://localhost:8080/expliclas/token')
fetch(`${API_ROOT}/token`)
.then((response) => {
return response.headers.get("Authorization");
})
......
......@@ -33,4 +33,4 @@ class AddCard extends Component {
}
}
export default withRouter(AddCard);
\ No newline at end of file
export default withRouter(AddCard);
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import './css/Classifier.css';
import Alert from './Alert';
import { API_ROOT } from '../config';
class Classifier extends Component {
......@@ -52,7 +53,7 @@ class Classifier extends Component {
}
getProblemInfo(){
var url = "http://localhost:8080/expliclas/global/" + this.state.problem;
var url = API_ROOT + "/global/" + this.state.problem;
fetch(url, {
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -76,7 +77,7 @@ class Classifier extends Component {
}
getLog(){
var url = "http://localhost:8080/expliclas/log/" +
var url = API_ROOT + "/log/" +
this.state.problem + "/" + this.state.algorithm +
"/" + this.state.problem + ".arff." + this.state.algorithm + ".log.txt";
......@@ -103,7 +104,7 @@ class Classifier extends Component {
}
getGlobalExpl(){
var url = "http://localhost:8080/expliclas/global/" + this.state.problem +
var url = API_ROOT + "/global/" + this.state.problem +
"/" + this.state.algorithm;
fetch(url, {
......@@ -261,4 +262,4 @@ class Classifier extends Component {
}
export default withRouter(Classifier);
\ No newline at end of file
export default withRouter(Classifier);
......@@ -42,4 +42,4 @@ class DatasetCard extends Component {
}
}
export default withRouter(DatasetCard);
\ No newline at end of file
export default withRouter(DatasetCard);
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import DatasetCard from './DatasetCard';
import AddCard from './AddCard';
import Alert from './Alert';
import { API_ROOT } from '../config';
class Datasets extends Component {
......@@ -25,7 +26,7 @@ class Datasets extends Component {
}
getDatasets(){
fetch('http://localhost:8080/expliclas/datasets',{
fetch(`${API_ROOT}/datasets`,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
})
......@@ -48,7 +49,7 @@ class Datasets extends Component {
}
deleteDataset(event){
var url = "http://localhost:8080/expliclas/dataset/" + event.target.id;
var url = API_ROOT + "/dataset/" + event.target.id;
fetch(url,{
method: 'DELETE',
headers: new Headers({
......@@ -95,4 +96,4 @@ class Datasets extends Component {
}
export default Datasets;
\ No newline at end of file
export default Datasets;
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import './css/Explanation.css';
import FormAttributes from "./FormAttributes";
import { API_ROOT } from '../config';
class Explanation extends Component {
......@@ -26,7 +27,7 @@ class Explanation extends Component {
}
getAttributes(){
var url = 'http://localhost:8080/expliclas/global/' + this.state.problem;
var url = API_ROOT + "/global/" + this.state.problem;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -44,7 +45,7 @@ class Explanation extends Component {
getDatasets(){
var url = 'http://localhost:8080/expliclas/dataset/' + this.state.problem;
var url = API_ROOT + '/dataset/' + this.state.problem;
fetch(url,{
headers: new Headers({
......@@ -75,7 +76,7 @@ class Explanation extends Component {
this.state.actualValues[this.state.attributes[i].name] + "&";
}
var url = 'http://localhost:8080/expliclas/classification/' + this.state.problem +
var url = API_ROOT + '/classification/' + this.state.problem +
'/' + this.state.algorithm + '/' + query;
fetch(url,{
......@@ -95,7 +96,7 @@ class Explanation extends Component {
}
selectDataset(event){
var url = 'http://localhost:8080/expliclas/dataset/' + this.state.problem;
var url = API_ROOT + '/dataset/' + this.state.problem;
var id = event.target.id;
fetch(url,{
......@@ -178,4 +179,4 @@ class Explanation extends Component {
}
export default withRouter(Explanation);
\ No newline at end of file
export default withRouter(Explanation);
import React, { Component } from 'react';
import './css/Footer.css';
import logo from './images/logo.png';
import { API_ROOT } from '../config';
class Footer extends Component {
......@@ -10,7 +11,7 @@ class Footer extends Component {
}
closeSession(){
fetch("http://localhost:8080/expliclas/token/remove",{
fetch(`${API_ROOT}/token/remove`,{
method: 'DELETE',
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -23,7 +24,7 @@ class Footer extends Component {
}
goToAPIDoc(){
window.location.href = "http://localhost:8080/doc/index.html";
window.location.href = API_ROOT + "/doc/index.html";
}
render(){
......@@ -40,4 +41,4 @@ class Footer extends Component {
}
export default Footer;
\ No newline at end of file
export default Footer;
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import './css/Form.css';
import { API_ROOT } from '../config';
class FormJ48 extends Component {
......@@ -287,7 +288,7 @@ class FormJ48 extends Component {
});
var data = new FormData(this.refs.formJ48);
var name = this.refs.formJ48[0].value;
var url = this.props.name ? "http://localhost:8080/expliclas/log/buildexisting/" + name + "/J48" : "http://localhost:8080/expliclas/log/build/" + name + "/J48";
var url = this.props.name ? API_ROOT + "/log/buildexisting/" + name + "/J48" : API_ROOT + "/log/build/" + name + "/J48";
fetch(url, {
method: 'POST',
body: data,
......@@ -635,4 +636,4 @@ class FormJ48 extends Component {
}
}
export default withRouter(FormJ48);
\ No newline at end of file
export default withRouter(FormJ48);
......@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import './css/Form.css';
import { API_ROOT } from '../config';
class FormREP extends Component {
......@@ -234,7 +235,7 @@ class FormREP extends Component {
});
var data = new FormData(this.refs.formREP);
var name = this.refs.formREP[0].value;
var url = this.props.name ? "http://localhost:8080/expliclas/log/buildexisting/" + name + "/REPTree" : "http://localhost:8080/expliclas/log/build/" + name + "/REPTree";
var url = this.props.name ? API_ROOT + "/log/buildexisting/" + name + "/REPTree" : API_ROOT + "/log/build/" + name + "/REPTree";
fetch(url, {
method: 'POST',
body: data,
......@@ -539,4 +540,4 @@ class FormREP extends Component {
}
}
export default withRouter(FormREP);
\ No newline at end of file
export default withRouter(FormREP);
import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import { API_ROOT } from '../config';
class FormRT extends Component {
......@@ -232,7 +233,7 @@ class FormRT extends Component {
});
var data = new FormData(this.refs.formRT);
var name = this.refs.formRT[0].value;
var url = this.props.name ? "http://localhost:8080/expliclas/log/buildexisting/" + name + "/RandomTree" : "http://localhost:8080/expliclas/log/build/" + name + "/RandomTree";
var url = this.props.name ? API_ROOT + "/log/buildexisting/" + name + "/RandomTree" : API_ROOT + "/log/build/" + name + "/RandomTree";
fetch(url, {
method: 'POST',
body: data,
......@@ -536,4 +537,4 @@ class FormRT extends Component {
}
}
export default withRouter(FormRT);
\ No newline at end of file
export default withRouter(FormRT);
import React, { Component } from 'react';
import { withRouter } from "react-router-dom";
import Alert from './Alert';
import { API_ROOT } from '../config';
class Logs extends Component {
......@@ -34,7 +35,7 @@ class Logs extends Component {
}
getLogs(){
var url = 'http://localhost:8080/expliclas/logs/' + this.state.problem;
var url = API_ROOT + '/logs/' + this.state.problem;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -52,7 +53,7 @@ class Logs extends Component {
for(var i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "J48"){
var url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
var url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -109,7 +110,7 @@ class Logs extends Component {
for(i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "J48"){
url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -150,7 +151,7 @@ class Logs extends Component {
for(i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "RandomTree"){
url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -190,7 +191,7 @@ class Logs extends Component {
for(i=0; i<this.state.locations.length; i++){
if(this.state.locations[i].type === "REPTree"){
url = 'http://localhost:8080/expliclas/log/' + this.state.locations[i].location;
url = API_ROOT + '/log/' + this.state.locations[i].location;
fetch(url,{
headers: new Headers({
'Authorization': localStorage.getItem('token')
......@@ -313,4 +314,4 @@ class Logs extends Component {
}
export default withRouter(Logs);
\ No newline at end of file
export default withRouter(Logs);
export const API_ROOT = 'http://localhost:8080/expliclas';
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {3}An\IeC {\'a}lise}{25}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}An\IeC {\'a}lise}{37}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Especificaci\IeC {\'o}n de requisitos}{25}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Requisitos de informaci\IeC {\'o}n}{25}}
\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Plantilla de requisitos de informaci\IeC {\'o}n}}{25}}
\@writefile{lot}{\contentsline {table}{\numberline {3.2}{\ignorespaces Requisito de informaci\IeC {\'o}n 1}}{26}}
\@writefile{lot}{\contentsline {table}{\numberline {3.3}{\ignorespaces Requisito de informaci\IeC {\'o}n 2}}{27}}
\@writefile{lot}{\contentsline {table}{\numberline {3.4}{\ignorespaces Requisito de informaci\IeC {\'o}n 3}}{28}}
\@writefile{lot}{\contentsline {table}{\numberline {3.5}{\ignorespaces Requisito de informaci\IeC {\'o}n 4}}{29}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Requisitos funcionais}{30}}
\@writefile{lot}{\contentsline {table}{\numberline {3.6}{\ignorespaces Plantilla de requisitos funcionais}}{30}}
\@writefile{lot}{\contentsline {table}{\numberline {3.7}{\ignorespaces Requisito funcional 1}}{30}}
\@writefile{lot}{\contentsline {table}{\numberline {3.8}{\ignorespaces Requisito funcional 2}}{31}}
\@writefile{lot}{\contentsline {table}{\numberline {3.9}{\ignorespaces Requisito funcional 3}}{31}}
\@writefile{lot}{\contentsline {table}{\numberline {3.10}{\ignorespaces Requisito funcional 4}}{32}}
\@writefile{lot}{\contentsline {table}{\numberline {3.11}{\ignorespaces Requisito funcional 5}}{33}}
\@writefile{lot}{\contentsline {table}{\numberline {3.12}{\ignorespaces Requisito funcional 6}}{33}}
\@writefile{lot}{\contentsline {table}{\numberline {3.13}{\ignorespaces Requisito funcional 7}}{34}}
\@writefile{lot}{\contentsline {table}{\numberline {3.14}{\ignorespaces Requisito funcional 8}}{34}}
\@writefile{lot}{\contentsline {table}{\numberline {3.15}{\ignorespaces Requisito funcional 9}}{35}}
\@writefile{lot}{\contentsline {table}{\numberline {3.16}{\ignorespaces Requisito funcional 10}}{35}}
\@writefile{lot}{\contentsline {table}{\numberline {3.17}{\ignorespaces Requisito funcional 11}}{36}}
\@writefile{lot}{\contentsline {table}{\numberline {3.18}{\ignorespaces Requisito funcional 12}}{37}}
\@writefile{lot}{\contentsline {table}{\numberline {3.19}{\ignorespaces Requisito funcional 13}}{38}}
\@writefile{lot}{\contentsline {table}{\numberline {3.20}{\ignorespaces Requisito funcional 14}}{39}}
\@writefile{lot}{\contentsline {table}{\numberline {3.21}{\ignorespaces Requisito funcional 15}}{39}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Requisitos non funcionais}{39}}
\@writefile{lot}{\contentsline {table}{\numberline {3.22}{\ignorespaces Plantilla de requisitos non funcionais}}{39}}
\@writefile{lot}{\contentsline {table}{\numberline {3.23}{\ignorespaces Requisito non funcional 1}}{40}}
\@writefile{lot}{\contentsline {table}{\numberline {3.24}{\ignorespaces Requisito non funcional 2}}{41}}
\@writefile{lot}{\contentsline {table}{\numberline {3.25}{\ignorespaces Requisito non funcional 3}}{41}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.4}Matriz de dependencia de requisitos}{42}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.5}Requisitos de interface gr\IeC {\'a}fica}{42}}
\@writefile{lot}{\contentsline {table}{\numberline {3.26}{\ignorespaces Plantilla de requisitos de interface gr\IeC {\'a}fica}}{42}}
\@writefile{lot}{\contentsline {table}{\numberline {3.27}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 1}}{42}}
\@writefile{lot}{\contentsline {table}{\numberline {3.28}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 2}}{43}}
\@writefile{lot}{\contentsline {table}{\numberline {3.29}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 3}}{43}}
\@writefile{lot}{\contentsline {table}{\numberline {3.30}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 4}}{43}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagrama de caso de uso.}}{44}}
\newlabel{casouso}{{3.1}{44}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Casos de uso}{44}}
\@writefile{lot}{\contentsline {table}{\numberline {3.31}{\ignorespaces Plantilla de casos de uso}}{45}}
\@writefile{lot}{\contentsline {table}{\numberline {3.32}{\ignorespaces Caso de uso CU-01}}{45}}
\@writefile{lot}{\contentsline {table}{\numberline {3.33}{\ignorespaces Caso de uso CU-02}}{46}}
\@writefile{lot}{\contentsline {table}{\numberline {3.34}{\ignorespaces Caso de uso CU-03}}{47}}
\@writefile{lot}{\contentsline {table}{\numberline {3.35}{\ignorespaces Caso de uso CU-04}}{48}}
\@writefile{lot}{\contentsline {table}{\numberline {3.36}{\ignorespaces Caso de uso CU-05}}{49}}
\@writefile{lot}{\contentsline {table}{\numberline {3.37}{\ignorespaces Caso de uso CU-06}}{50}}
\@writefile{lot}{\contentsline {table}{\numberline {3.38}{\ignorespaces Caso de uso CU-07}}{51}}
\@writefile{lot}{\contentsline {table}{\numberline {3.39}{\ignorespaces Caso de uso CU-08}}{52}}
\@writefile{lot}{\contentsline {table}{\numberline {3.40}{\ignorespaces Caso de uso CU-09}}{53}}
\@writefile{lot}{\contentsline {table}{\numberline {3.41}{\ignorespaces Caso de uso CU-10}}{54}}
\@writefile{lot}{\contentsline {table}{\numberline {3.42}{\ignorespaces Caso de uso CU-11}}{55}}
\@writefile{lot}{\contentsline {table}{\numberline {3.43}{\ignorespaces Caso de uso CU-12}}{56}}
\@writefile{lot}{\contentsline {table}{\numberline {3.44}{\ignorespaces Caso de uso CU-13}}{58}}
\@writefile{lot}{\contentsline {table}{\numberline {3.45}{\ignorespaces Caso de uso CU-14}}{59}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Matriz de requisitos / casos de uso}{59}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Especificaci\IeC {\'o}n de requisitos}{37}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Requisitos de informaci\IeC {\'o}n}{37}}
\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Plantilla de requisitos de informaci\IeC {\'o}n}}{38}}
\@writefile{lot}{\contentsline {table}{\numberline {3.2}{\ignorespaces Requisito de informaci\IeC {\'o}n 1}}{39}}
\@writefile{lot}{\contentsline {table}{\numberline {3.3}{\ignorespaces Requisito de informaci\IeC {\'o}n 2}}{40}}
\@writefile{lot}{\contentsline {table}{\numberline {3.4}{\ignorespaces Requisito de informaci\IeC {\'o}n 3}}{41}}
\@writefile{lot}{\contentsline {table}{\numberline {3.5}{\ignorespaces Requisito de informaci\IeC {\'o}n 4}}{42}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Requisitos funcionais}{43}}
\@writefile{lot}{\contentsline {table}{\numberline {3.6}{\ignorespaces Plantilla de requisitos funcionais}}{43}}
\@writefile{lot}{\contentsline {table}{\numberline {3.7}{\ignorespaces Requisito funcional 1}}{43}}
\@writefile{lot}{\contentsline {table}{\numberline {3.8}{\ignorespaces Requisito funcional 2}}{44}}
\@writefile{lot}{\contentsline {table}{\numberline {3.9}{\ignorespaces Requisito funcional 3}}{44}}
\@writefile{lot}{\contentsline {table}{\numberline {3.10}{\ignorespaces Requisito funcional 4}}{45}}
\@writefile{lot}{\contentsline {table}{\numberline {3.11}{\ignorespaces Requisito funcional 5}}{46}}
\@writefile{lot}{\contentsline {table}{\numberline {3.12}{\ignorespaces Requisito funcional 6}}{46}}
\@writefile{lot}{\contentsline {table}{\numberline {3.13}{\ignorespaces Requisito funcional 7}}{47}}
\@writefile{lot}{\contentsline {table}{\numberline {3.14}{\ignorespaces Requisito funcional 8}}{47}}
\@writefile{lot}{\contentsline {table}{\numberline {3.15}{\ignorespaces Requisito funcional 9}}{48}}
\@writefile{lot}{\contentsline {table}{\numberline {3.16}{\ignorespaces Requisito funcional 10}}{49}}
\@writefile{lot}{\contentsline {table}{\numberline {3.17}{\ignorespaces Requisito funcional 11}}{49}}
\@writefile{lot}{\contentsline {table}{\numberline {3.18}{\ignorespaces Requisito funcional 12}}{50}}
\@writefile{lot}{\contentsline {table}{\numberline {3.19}{\ignorespaces Requisito funcional 13}}{51}}
\@writefile{lot}{\contentsline {table}{\numberline {3.20}{\ignorespaces Requisito funcional 14}}{52}}
\@writefile{lot}{\contentsline {table}{\numberline {3.21}{\ignorespaces Requisito funcional 15}}{52}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Requisitos non funcionais}{52}}
\@writefile{lot}{\contentsline {table}{\numberline {3.22}{\ignorespaces Plantilla de requisitos non funcionais}}{52}}
\@writefile{lot}{\contentsline {table}{\numberline {3.23}{\ignorespaces Requisito non funcional 1}}{53}}
\@writefile{lot}{\contentsline {table}{\numberline {3.24}{\ignorespaces Requisito non funcional 2}}{54}}
\@writefile{lot}{\contentsline {table}{\numberline {3.25}{\ignorespaces Requisito non funcional 3}}{55}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.4}Matriz de dependencia de requisitos}{55}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.5}Requisitos de interface gr\IeC {\'a}fica}{55}}
\@writefile{lot}{\contentsline {table}{\numberline {3.26}{\ignorespaces Plantilla de requisitos de interface gr\IeC {\'a}fica}}{55}}
\@writefile{lot}{\contentsline {table}{\numberline {3.27}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 1}}{56}}
\@writefile{lot}{\contentsline {table}{\numberline {3.28}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 2}}{56}}
\@writefile{lot}{\contentsline {table}{\numberline {3.29}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 3}}{56}}
\@writefile{lot}{\contentsline {table}{\numberline {3.30}{\ignorespaces Requisito de interface gr\IeC {\'a}fica 4}}{57}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Casos de uso}{57}}
\@writefile{lot}{\contentsline {table}{\numberline {3.31}{\ignorespaces Plantilla de casos de uso}}{57}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagrama de caso de uso.}}{58}}
\newlabel{casouso}{{3.1}{58}}
\@writefile{lot}{\contentsline {table}{\numberline {3.32}{\ignorespaces Caso de uso CU-01}}{59}}
\@writefile{lot}{\contentsline {table}{\numberline {3.33}{\ignorespaces Caso de uso CU-02}}{60}}
\@writefile{lot}{\contentsline {table}{\numberline {3.34}{\ignorespaces Caso de uso CU-03}}{61}}
\@writefile{lot}{\contentsline {table}{\numberline {3.35}{\ignorespaces Caso de uso CU-04}}{62}}
\@writefile{lot}{\contentsline {table}{\numberline {3.36}{\ignorespaces Caso de uso CU-05}}{63}}
\@writefile{lot}{\contentsline {table}{\numberline {3.37}{\ignorespaces Caso de uso CU-06}}{64}}
\@writefile{lot}{\contentsline {table}{\numberline {3.38}{\ignorespaces Caso de uso CU-07}}{65}}
\@writefile{lot}{\contentsline {table}{\numberline {3.39}{\ignorespaces Caso de uso CU-08}}{66}}
\@writefile{lot}{\contentsline {table}{\numberline {3.40}{\ignorespaces Caso de uso CU-09}}{67}}
\@writefile{lot}{\contentsline {table}{\numberline {3.41}{\ignorespaces Caso de uso CU-10}}{68}}
\@writefile{lot}{\contentsline {table}{\numberline {3.42}{\ignorespaces Caso de uso CU-11}}{69}}
\@writefile{lot}{\contentsline {table}{\numberline {3.43}{\ignorespaces Caso de uso CU-12}}{70}}
\@writefile{lot}{\contentsline {table}{\numberline {3.44}{\ignorespaces Caso de uso CU-13}}{72}}
\@writefile{lot}{\contentsline {table}{\numberline {3.45}{\ignorespaces Caso de uso CU-14}}{73}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Matriz de requisitos / casos de uso}{73}}
\@setckpt{capitulos/analise}{
\setcounter{page}{60}
\setcounter{page}{74}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Manuais t\IeC {\'e}cnicos}{69}}
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Manuais t\IeC {\'e}cnicos}{83}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@setckpt{capitulos/apendicea}{
\setcounter{page}{70}
\setcounter{page}{84}
\setcounter{equation}{0}
\setcounter{enumi}{3}
\setcounter{enumii}{0}
......
\relax
\@writefile{toc}{\contentsline {chapter}{\numberline {B}Manuais de usuario}{71}}
\@writefile{toc}{\contentsline {chapter}{\numberline {B}Manuais de usuario}{85}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@setckpt{capitulos/apendiceb}{
\setcounter{page}{72}
\setcounter{page}{86}