Se corrigen errores en test capa rest

También se añade las restricciones en web.xml para pets
parent abf9257a
<?xml version="1.0" encoding="UTF-8"?>
<project-shared-configuration>
<!--
This file contains additional configuration written by modules in the NetBeans IDE.
The configuration is intended to be shared among all the users of project and
therefore it is assumed to be part of version control checkout.
Without this configuration present, some functionality in the IDE may be limited or fail altogether.
-->
<properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
<!--
Properties that influence various parts of the IDE, especially code formatting and the like.
You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
That way multiple projects can share the same settings (useful for formatting rules for example).
Any value defined here will override the pom.xml file value but is only applicable to the current project.
-->
<org-netbeans-modules-maven-jaxws.rest_2e_config_2e_type>ide</org-netbeans-modules-maven-jaxws.rest_2e_config_2e_type>
</properties>
</project-shared-configuration>
......@@ -19,6 +19,7 @@ import es.uvigo.esei.daa.entities.Person;
*
*/
public class PeopleDAO extends DAO {
private final static Logger LOG = Logger.getLogger(PeopleDAO.class.getName());
/**
......@@ -167,7 +168,6 @@ public class PeopleDAO extends DAO {
throws DAOException, IllegalArgumentException {
try (final Connection conn = this.getConnection()) {
final String query = "DELETE FROM people WHERE id=?";
try (final PreparedStatement statement = conn.prepareStatement(query)) {
statement.setInt(1, id);
......
......@@ -87,8 +87,13 @@ public class PetDAO extends DAO {
}
public Pet add(String name, String type, int peopleID) throws DAOException, IllegalArgumentException {
if (name == null || type==null) {
throw new IllegalArgumentException("name and type can't be null");
/*Debido a la forma en la que se generan las PK de people nunca puede
existir una persona con ID igual a 0 que es el caso de si faltase el
valor peopleID en el formulario de añadir de pets
*/
if (name == null || type==null || peopleID==0) {
throw new IllegalArgumentException("name, type or peopleID can't be null");
}
try (Connection conn = this.getConnection()) {
......
......@@ -91,10 +91,10 @@ public class PetResource {
@FormParam("name") String name,
@FormParam("type") String type,
@FormParam("peopleID") int peopleID
) {
try {
final Pet newPet = this.dao.add(name,type,peopleID);
System.out.println("Esto es el nombre:"+name);
final Pet newPet = this.dao.add(name, type, peopleID);
return Response.ok(newPet).build();
} catch (IllegalArgumentException iae) {
......@@ -121,7 +121,7 @@ public class PetResource {
@FormParam("peopleID") int peopleID
) {
try {
final Pet modifiedPet = new Pet(id, name,type,peopleID);
final Pet modifiedPet = new Pet(id, name, type, peopleID);
this.dao.modify(modifiedPet);
return Response.ok(modifiedPet).build();
......
......@@ -60,6 +60,20 @@
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin Area</web-resource-name>
<url-pattern>/rest/pets/*</url-pattern>
<http-method>GET</http-method>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<!-- Security roles referenced by this web application -->
<security-role>
<role-name>ADMIN</role-name>
......
......@@ -23,6 +23,14 @@ var PeopleDAO = (function() {
}, done, fail, always);
};
this.listPeopleSync = function(done, fail, always) {
requestByAjax({
url : resourcePath,
type : 'GET',
async:false
}, done, fail, always);
};
this.addPerson = function(person, done, fail, always) {
requestByAjax({
url : resourcePath,
......
......@@ -21,7 +21,8 @@ var PetDAO = (function () {
this.listPetsByPeopleID = function (peopleID,done, fail, always) {
requestByAjax({
url: resourcePath + 'people' + peopleID,
type: 'GET'
type: 'GET',
async:false
}, done, fail, always);
};
......
var PeopleView = (function() {
var PeopleView = (function () {
var dao;
// Referencia a this que permite acceder a las funciones públicas desde las funciones de jQuery.
......@@ -16,24 +16,24 @@ var PeopleView = (function() {
insertPeopleForm($('#' + formContainerId));
insertPeopleList($('#' + listContainerId));
this.init = function() {
dao.listPeople(function(people) {
$.each(people, function(key, person) {
this.init = function () {
dao.listPeople(function (people) {
$.each(people, function (key, person) {
appendToTable(person);
});
},
function() {
function () {
alert('No has sido posible acceder al listado de personas.');
});
// La acción por defecto de enviar formulario (submit) se sobreescribe
// para que el envío sea a través de AJAX
$(formQuery).submit(function(event) {
$(formQuery).submit(function (event) {
var person = self.getPersonInForm();
if (self.isEditing()) {
dao.modifyPerson(person,
function(person) {
function (person) {
$('#person-' + person.id + ' td.name').text(person.name);
$('#person-' + person.id + ' td.surname').text(person.surname);
$('#person-' + person.id + ' td.pet_type').text(person.type);
......@@ -44,7 +44,7 @@ var PeopleView = (function() {
);
} else {
dao.addPerson(person,
function(person) {
function (person) {
appendToTable(person);
self.resetForm();
},
......@@ -59,7 +59,7 @@ var PeopleView = (function() {
$('#btnClear').click(this.resetForm);
};
this.getPersonInForm = function() {
this.getPersonInForm = function () {
var form = $(formQuery);
return {
'id': form.find('input[name="id"]').val(),
......@@ -68,7 +68,7 @@ var PeopleView = (function() {
};
};
this.getPersonInRow = function(id) {
this.getPersonInRow = function (id) {
var row = $('#person-' + id);
if (row !== undefined) {
......@@ -82,7 +82,7 @@ var PeopleView = (function() {
}
};
this.editPerson = function(id) {
this.editPerson = function (id) {
var row = $('#person-' + id);
if (row !== undefined) {
......@@ -96,37 +96,51 @@ var PeopleView = (function() {
}
};
this.deletePerson = function(id) {
this.deletePerson = function (id) {
var cont = 0;
var daoPet = new PetDAO();
daoPet.listPetsByPeopleID(id, function (people) {
$.each(people, function (key, pet) {
cont++;
});
}, function () {
alert('No has sido posible acceder al listado de mascotas.');
});
if (cont == 0) {
if (confirm('Está a punto de eliminar a una persona. ¿Está seguro de que desea continuar?')) {
dao.deletePerson(id,
function() {
function () {
$('tr#person-' + id).remove();
},
showErrorMessage
);
}
} else {
alert('No puedes eliminar esta persona porque tiene mascotas asignadas');
}
};
this.isEditing = function() {
this.isEditing = function () {
return $(formQuery + ' input[name="id"]').val() != "";
};
this.disableForm = function() {
this.disableForm = function () {
$(formQuery + ' input').prop('disabled', true);
};
this.enableForm = function() {
this.enableForm = function () {
$(formQuery + ' input').prop('disabled', false);
};
this.resetForm = function() {
this.resetForm = function () {
$(formQuery)[0].reset();
$(formQuery + ' input[name="id"]').val('');
$('#btnSubmit').val('Crear');
};
};
}
;
var insertPeopleList = function(parent) {
var insertPeopleList = function (parent) {
parent.append(
'<table id="' + listId + '" class="table">\
<thead>\
......@@ -142,7 +156,7 @@ var PeopleView = (function() {
);
};
var insertPeopleForm = function(parent) {
var insertPeopleForm = function (parent) {
parent.append(
'<form id="' + formId + '" class="mb-5 mb-10">\
<input name="id" type="hidden" value=""/>\
......@@ -162,8 +176,8 @@ var PeopleView = (function() {
);
};
var createPersonRow = function(person) {
return '<tr id="person-'+ person.id +'" class="row">\
var createPersonRow = function (person) {
return '<tr id="person-' + person.id + '" class="row">\
<td class="name col-sm-4">' + person.name + '</td>\
<td class="surname col-sm-5">' + person.surname + '</td>\
<td class="col-sm-3">\
......@@ -174,29 +188,29 @@ var PeopleView = (function() {
</tr>';
};
var showErrorMessage = function(jqxhr, textStatus, error) {
var showErrorMessage = function (jqxhr, textStatus, error) {
alert(textStatus + ": " + error);
};
var addRowListeners = function(person) {
$('#person-' + person.id + ' a.edit').click(function() {
var addRowListeners = function (person) {
$('#person-' + person.id + ' a.edit').click(function () {
self.editPerson(person.id);
});
$('#person-' + person.id + ' a.delete').click(function() {
$('#person-' + person.id + ' a.delete').click(function () {
self.deletePerson(person.id);
});
$('#person-' + person.id + ' a.show').click(function () {
document.getElementById("people-container").innerHTML = "<h1 class=display-5 mt-3 mb-3>Mascotas de "+person.name+" "+person.surname+"</h1>";
document.getElementById("people-container").innerHTML = "<h1 class=display-5 mt-3 mb-3>Mascotas de " + person.name + " " + person.surname + "</h1>";
var view = new PetView(new PetDAO(),
'people-container', 'people-container',person.id);
'people-container', 'people-container', person.id);
view.init();
});
};
var appendToTable = function(person) {
var appendToTable = function (person) {
$(listQuery + ' > tbody:last')
.append(createPersonRow(person));
addRowListeners(person);
......
var PetView = (function () {
var dao;
// Referencia a this que permite acceder a las funciones públicas desde las funciones de jQuery.
var self;
var peopleID;
var formId = 'people-form';
var listId = 'people-list';
var formQuery = '#' + formId;
var listQuery = '#' + listId;
function PetView(petDao, formContainerId, listContainerId, paramID) {
peopleID = paramID;
dao = petDao;
self = this;
this.init = function () {
var cont = 0;
var humans = []
var humans_list = []
var daoPeople = new PeopleDAO();
function Human(id, name, surname) {
this.id = id;
this.name = name;
this.surname = surname;
}
var cont=0;
var daoPeople = new PeopleDAO();
daoPeople.listPeople(function (people) {
daoPeople.listPeopleSync(function (people) {
$.each(people, function (key, human) {
humans[human.id] = new Human(human.id, human.name, human.surname);
humans_list[cont] = new Human(human.id, human.name, human.surname);
......@@ -27,20 +31,11 @@ var PetView = (function () {
});
},
function () {
alert('No has sido posible acceder al listado de personas.');
alert('No has sido posible acceder al listado de mascotas.');
});
function PetView(petDao, formContainerId, listContainerId,paramID) {
peopleID=paramID;
dao = petDao;
self = this;
insertPetForm($('#' + formContainerId), humans_list,humans);
insertPetForm($('#' + formContainerId), humans_list, humans);
insertPetList($('#' + listContainerId));
console.log(humans);
this.init = function () {
if(peopleID==="all"){
if (peopleID === "all") {
dao.listAll(function (people) {
$.each(people, function (key, pet) {
appendToTable(pet, humans);
......@@ -49,12 +44,12 @@ var PetView = (function () {
function () {
alert('No has sido posible acceder al listado de mascotas.');
});
}else{
dao.listPetsByPeopleID(peopleID,function (people) {
} else {
dao.listPetsByPeopleID(peopleID, function (people) {
$.each(people, function (key, pet) {
appendToTable(pet, humans);
});
},function () {
}, function () {
alert('No has sido posible acceder al listado de mascotas.');
});
}
......@@ -62,12 +57,11 @@ var PetView = (function () {
// para que el envío sea a través de AJAX
$(formQuery).submit(function (event) {
var pet = self.getPetInForm();
if (self.isEditing()) {
dao.modifyPet(pet,
function (pet) {
$('#person-' + pet.id + ' td.name').text(pet.name);
$('#person-' + pet.id + ' td.surname').text(humans[pet.peopleID].name+" "+humans[pet.peopleID].surname);
$('#person-' + pet.id + ' td.surname').text(humans[pet.peopleID].name + " " + humans[pet.peopleID].surname);
$('#person-' + pet.id + ' td.pet_type').text(pet.type);
self.resetForm();
},
......@@ -77,7 +71,7 @@ var PetView = (function () {
} else {
dao.addPet(pet,
function (pet) {
appendToTable(pet,humans);
appendToTable(pet, humans);
self.resetForm();
},
showErrorMessage,
......@@ -87,7 +81,6 @@ var PetView = (function () {
return false;
});
$('#btnClear').click(this.resetForm);
};
......@@ -132,7 +125,7 @@ var PetView = (function () {
};
this.deletePet = function (id) {
if (confirm('Está a punto de eliminar a una persona. ¿Está seguro de que desea continuar?')) {
if (confirm('Está a punto de eliminar a una mascota. ¿Está seguro de que desea continuar?')) {
dao.deletePet(id,
function () {
$('tr#person-' + id).remove();
......@@ -167,27 +160,26 @@ var PetView = (function () {
var returnHumansSelect = function (humans) {
var toret = "<select id=dueno class=form-control>";
var cont = 0
var i=0;
for (i=0;i<humans.length;i++){
toret+="<option value="+humans[i].id+">"+humans[i].name+" "+humans[i].surname+"</option>";
var i = 0;
for (i = 0; i < humans.length; i++) {
toret += "<option value=" + humans[i].id + ">" + humans[i].name + " " + humans[i].surname + "</option>";
}
toret+="</select>";
toret += "</select>";
return toret;
};
var returnHumanTextBox = function (human) {
var toret ="<input type=hidden id=dueno value=\""+human.id+"\"/><input name=owner type=text value=\""+human.name+" "
+human.surname+"\" placeholder=Dueño class=form-control readonly/>";
var toret = "<input type=hidden id=dueno value=\"" + human.id + "\"/><input name=owner type=text value=\"" + human.name + " "
+ human.surname + "\" placeholder=Dueño class=form-control readonly/>";
return toret;
};
var insertPetForm = function (parent, humans,humans_map) {
var txtToAppend="";
if(peopleID==='all'){
txtToAppend=returnHumansSelect(humans);
}else{
alert(peopleID);
txtToAppend=returnHumanTextBox(humans_map[peopleID]);
var insertPetForm = function (parent, humans, humans_map) {
var txtToAppend = "";
if (peopleID === 'all') {
txtToAppend = returnHumansSelect(humans);
} else {
txtToAppend = returnHumanTextBox(humans_map[peopleID]);
}
parent.append(
'<form id="' + formId + '" class="mb-5 mb-10">\
......@@ -200,7 +192,7 @@ var PetView = (function () {
<input name="type" type="text" value="" placeholder="Tipo" class="form-control" required/>\
</div>\
<div class="col-sm-1">Dueño:</div>\
<div class="col-sm-3">'+ txtToAppend +'</div>\
<div class="col-sm-3">' + txtToAppend + '</div>\
<div class="col-sm-3">\
<input id="btnSubmit" type="submit" value="Crear" class="btn btn-primary" />\
<input id="btnClear" type="reset" value="Limpiar" class="btn" />\
......
......@@ -134,7 +134,7 @@ public class PetResourceTest extends JerseyTest {
}
@Test
@ExpectedDatabase("/datasets/dataset-add.xml")
@ExpectedDatabase("/datasets/dataset-add_pets.xml")
public void testAdd() throws IOException {
final Form form = new Form();
form.param("name", newName());
......@@ -205,7 +205,7 @@ public class PetResourceTest extends JerseyTest {
}
@Test
@ExpectedDatabase("/datasets/dataset-modify.xml")
@ExpectedDatabase("/datasets/dataset-modify_pets.xml")
public void testModify() throws IOException {
final Form form = new Form();
form.param("name", newName());
......@@ -292,7 +292,7 @@ public class PetResourceTest extends JerseyTest {
}
@Test
@ExpectedDatabase("/datasets/dataset-delete.xml")
@ExpectedDatabase("/datasets/dataset-delete_pets.xml")
public void testDelete() throws IOException {
final Response response = target("pets/" + existentId()).request()
.header("Authorization", "Basic " + userToken(adminLogin()))
......
......@@ -17,9 +17,8 @@
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Trotsky" type="Perro" peopleID="1"/>
<pets id="2" name="Cato" type="Gato" peopleID="2"/>
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1"/>
<pets id="4" name="Jael" type="Perro" peopleID="3"/>
<pets id="5" name="Lucky" type="Anaconda" peopleID="3"/>
<pets id="1" name="Trotsky" type="Perro" peopleID="1" />
<pets id="2" name="Cato" type="Gato" peopleID="2" />
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1" />
<pets id="4" name="Jael" type="Perro" peopleID="3" />
</dataset>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataset SYSTEM "dataset.dtd">
<dataset>
<people id="1" name="Antón" surname="Álvarez" />
<people id="2" name="Ana" surname="Amargo" />
<people id="3" name="Manuel" surname="Martínez" />
<people id="4" name="María" surname="Márquez" />
<people id="5" name="Lorenzo" surname="López" />
<people id="6" name="Laura" surname="Laredo" />
<people id="7" name="Perico" surname="Palotes" />
<people id="8" name="Patricia" surname="Pérez" />
<people id="9" name="Julia" surname="Justa" />
<people id="10" name="Juan" surname="Jiménez" />
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Trotsky" type="Perro" peopleID="1" />
<pets id="2" name="Cato" type="Gato" peopleID="2" />
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1" />
<pets id="4" name="Jael" type="Perro" peopleID="3" />
<pets id="5" name="Lucky" type="Anaconda" peopleID="5" />
</dataset>
\ No newline at end of file
......@@ -15,7 +15,8 @@
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Trotsky" type="Perro" peopleID="1"/>
<pets id="2" name="Cato" type="Gato" peopleID="2"/>
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1"/>
<pets id="1" name="Trotsky" type="Perro" peopleID="1" />
<pets id="2" name="Cato" type="Gato" peopleID="2" />
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1" />
<pets id="4" name="Jael" type="Perro" peopleID="3" />
</dataset>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataset SYSTEM "dataset.dtd">
<dataset>
<people id="1" name="Antón" surname="Álvarez" />
<people id="2" name="Ana" surname="Amargo" />
<people id="3" name="Manuel" surname="Martínez" />
<people id="4" name="María" surname="Márquez" />
<people id="5" name="Lorenzo" surname="López" />
<people id="6" name="Laura" surname="Laredo" />
<people id="7" name="Perico" surname="Palotes" />
<people id="8" name="Patricia" surname="Pérez" />
<people id="9" name="Julia" surname="Justa" />
<people id="10" name="Juan" surname="Jiménez" />
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Trotsky" type="Perro" peopleID="1" />
<pets id="2" name="Cato" type="Gato" peopleID="2" />
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1" />
</dataset>
\ No newline at end of file
......@@ -16,8 +16,8 @@
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Trotsky" type="Perro" peopleID="1"/>
<pets id="2" name="Cato" type="Gato" peopleID="2"/>
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1"/>
<pets id="4" name="Lucky" type="Anaconda" peopleID="5"/>
<pets id="1" name="Trotsky" type="Perro" peopleID="1" />
<pets id="2" name="Cato" type="Gato" peopleID="2" />
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1" />
<pets id="4" name="Jael" type="Perro" peopleID="3" />
</dataset>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataset SYSTEM "dataset.dtd">
<dataset>
<people id="1" name="Antón" surname="Álvarez" />
<people id="2" name="Ana" surname="Amargo" />
<people id="3" name="Manuel" surname="Martínez" />
<people id="4" name="María" surname="Márquez" />
<people id="5" name="Lorenzo" surname="López" />
<people id="6" name="Laura" surname="Laredo" />
<people id="7" name="Perico" surname="Palotes" />
<people id="8" name="Patricia" surname="Pérez" />
<people id="9" name="Julia" surname="Justa" />
<people id="10" name="Juan" surname="Jiménez" />
<users login="admin" password="713bfda78870bf9d1b261f565286f85e97ee614efe5f0faf7c34e7ca4f65baca" role="ADMIN"/>
<users login="normal" password="7bf24d6ca2242430343ab7e3efb89559a47784eea1123be989c1b2fb2ef66e83" role="USER" />
<pets id="1" name="Trotsky" type="Perro" peopleID="1" />
<pets id="2" name="Cato" type="Gato" peopleID="2" />
<pets id="3" name="Hiroshi" type="Conejo" peopleID="1" />
<pets id="4" name="Lucky" type="Anaconda" peopleID="5" />
</dataset>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment