Well, I got a base to do a simple CRUD from just one table using REST and the others I put into the question, everything worked perfectly, until I put more tables (classes) and relationship between them, after the addition of the relationships still I can view the information and even delete, but I can not do an update already tried several things and nothing, in one of my last attempts I tried to do something similar to what I did in Java in a class I created to test my DAO's, to know the reasons for such a problem I will be very grateful for the help. Extra information, Service order has customer relationship, service and status already the customer has relationship with user and level.
Java code of the Main test class I created to test the DAO (JAVA) Classes:
//UPDATE ORDEM DE SERVICO.
ServicoDAO sdao = new ServicoDAO();
Servico serv = sdao.porId(2);
UsuarioDAO udao = new UsuarioDAO();
Usuario usu = udao.porId(4);
NivelDAO niDAO = new NivelDAO();
Nivel niv = niDAO.porId(2);
ClienteDAO cliDAO = new ClienteDAO();
Cliente cli = cliDAO.porId(3);
cli.setNivel(niv);
cli.setUsuario(usu);
OrdemDeServicoDAO dao = new OrdemDeServicoDAO();
OrdemDeServico ordem = new OrdemDeServico(2);
ordem.setStatus(2);
ordem.setCodServico(serv);
ordem.setCodCliente(cli);
dao.atualizar(ordem);
System.out.println(" " + ordem.getStatus());
Resource Code (Just what I need to show) (JAVA):
@Path("/ordens")
public class OrdemDeServicoResource {
OrdemDeServicoDAO dao = new OrdemDeServicoDAO();
@PUT
@Path("{id}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public OrdemDeServico atualizar(OrdemDeServico ordem)throws Exception{
System.out.println("Atualização de ordem de servico:" +ordem.getStatus());
dao.atualizar(ordem);
return ordem;
}
@DELETE @Path("{id}")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public void remover(@PathParam("id")int id)throws Exception{
OrdemDeServico ordem = dao.porId(id);
dao.delete(ordem);
}
Javascript Code OrderDetails:
var rootURL ="http://localhost:8080/TCC02/rest";
var rootcli = "http://localhost:8080/TCC02/rest/clientes/";
var rootser = "http://localhost:8080/TCC02/rest/servicos/";
var rootLogin ="http://localhost:8080/TCC02/rest/usuarios/"
listOrdem();
function listOrdem(){
var id = getId();
$("#orId").attr("data-value",id);
if(id<1){
alert('id invalido');
return;
}
console.log('getOrdem ' +id);
$.getJSON(rootURL + '/ordens/' + id, function(data){
if(!data){
alert('Ordem de servico não encontrada');
return
}
var ordem = data;
renderDetails(ordem);
return ordem;
});
}
function porIdSer(id3){
console.log('Ache o Servico pelo ID: ' +id3);
$.getJSON(rootser + id3, function(data){
if(!data){
alert('Cliente não encontrado por id');
return
}
var ser = data;
renderDetailsSer(ser);
return ser;
});
}
function porIdLogin(id4){
console.log('Ache o Usuario pelo ID: ' +id4);
$.getJSON(rootLogin + id4, function(data){
if(!data){
alert('Usuario não encontrado pelo id');
return
}
var usu = data;
renderDetailsUsu(usu);
return usu;
});
}
function porIdNivel(id5){
console.log('Ache o nivel pelo ID: ' + id5);
$.getJSON(rootURL+ '/niveis/'+ id5,function(data){
if(!data){
alert('Id do nivel não compativel');
return
}
var niv = data;
renderDetailsNiv(niv);
return niv;
});
}
function porIdCli(id2){
console.log('Ache Cliente Pelo iD:' + id2);
$.getJSON(rootcli + id2, function(data){
if(!data){
alert('Cliente não encontrado por id');
return
}
var cli = data;
renderDetailsCli(cli);
return cli;
});
}
$('#btnAtt').click(function(){
$("#myModal").modal();
console.log('Carregar Detalhes');
var id = getId();
if(id<1){
alert ('id invalido');
return;
}
console.log ('getOrdem' + id);
$.getJSON(rootURL+'/ordens/' + id, function(data){
if(!data){
alert('Erro ao selecionar o id');
return
}
var ordem = data;
renderDetails1(ordem);
});
});
$('#btnSave').click(function(){
atualizarOrdem();
});
function atualizarOrdem(){
var ident = $("#orId").attr("data-value");
console.log('Atualizar Ordem de servico:' +ident);
$.ajax({
type:'PUT',
contentType: 'application/json',
url:rootURL + '/ordens/' + ident,
dataType:"json",
data:formToJSON(),
success:function(data,textStatus,jqXHR){
alert('Ordem de serviço atualizada com sucesso');
},
error: function(jqXHR, textStatus, errorThrown){
alert('Erro ao atualizar a ordem de servico ' + errorThrown);
}
});
}
function deletarOrdem(){
console.log('Deletar ordem de serviço');
$.ajax({
type:'DELETE',
url:rootURL + '/' + $('#orId').val(),
success: function(data, textStatus,jqXHR){
alert('Ordem de serviço deletada');
},
error: function(jqXHR, textStatus, errorThrown){
alert('Erro ao deletar ordem de serviço')
}
});
}
function getId(){
//localiza e pega o id da url
var id = window.location.hash.substr(1);
//Confirmar se o ID é um int
var intRegex = /^\d+$/;
return intRegex.test(id)? id : -1;
}
// Pega os dados em JSON e arruma eles na minha form.
function renderDetails(ordem){
$('#orId').val(ordem.id);
$('#nomecliente').val(ordem.codCliente.nome);
$('#servico').val(ordem.codServico.nomeservico);
$('#codserv').val(ordem.codServico.id);
$('#codcli').val(ordem.codCliente.id);
$('#status').append('<option>' + ordem.status + '</option>');
//Definindo valores para campos codservico e codcliente de acordo com seu relacionamento com OrdemServico.
var atributo2 = ordem.codServico.id;
$("#codserv").attr("data-value",atributo2);
var atributo = ordem.codCliente.nivel.id
$("#codcli").attr("data-value",atributo);
porIdCli(atributo);
porIdSer(atributo2);
}
function formToJSON(){
var orId = $('#orId1').val();
return JSON.stringify({
"id": orId == "" ? null : orId,
"status": $('#status1').val(),
"servico": $('#servico1').data(),
"nomecliente":$('#nomecliente1').data(),
});
}