Na aula "Usando Pet em PetService" notei que além de criar um construtor, eu poderia transferir as variáveis locais que estão no loop da classe PetService para um método dentro de Pet que faria o tratamento dos dados e retornaria um objeto Pet. Entretanto, como já instanciaria um objeto Pet para realizar o tratamento desses dados, pensei em fazer este método estático dentro da classe Pet e, a questão é: penso que de alguma forma eu possa estar ferindo o SRP (Single Responsability Principle), já que estaria criando uma responsabilidade adicional para a classe de domínio Pet que deveria corresponder somente a questões de regra de negócio e não tratamento de dados.
Estou certo em pensar isso? Caso sim, o que vocês sugeririam como mudança afim de manter este método de tratamento de dados no projeto, mesmo que talvez seja necessário criar uma outra classe para isso...
Antes:
PetService.java
while ((line = reader.readLine()) != null) {
String[] campos = line.split(",");
String tipo = campos[0];
String nome = campos[1];
String raca = campos[2];
int idade = Integer.parseInt(campos[3]);
String cor = campos[4];
Float peso = Float.parseFloat(campos[5]);
String uri = "http://localhost:8080/abrigos/" + idOuNome + "/pets";
HttpResponse<String> response = client.dispararRequisicaoPost(uri, json);
Depois:
PetService.java
while ((line = reader.readLine()) != null) {
String[] campos = line.split(",");
Pet pet = Pet.retornarPetDeAcordoComCampos(campos);
String uri = "http://localhost:8080/abrigos/" + idOuNome + "/pets";
HttpResponse<String> response = client.dispararRequisicaoPost(uri, pet);
Pet.java
public class Pet {
private String tipo;
private String nome;
private String raca;
private int idade;
private String cor;
private Float peso;
public Pet(String tipo, String nome, String raca, int idade, String cor, Float peso) {
this.tipo = tipo;
this.nome = nome;
this.raca = raca;
this.idade = idade;
this.cor = cor;
this.peso = peso;
}
public static Pet retornarPetDeAcordoComCampos(String[] campos) {
String tipo = campos[0];
String nome = campos[1];
String raca = campos[2];
int idade = Integer.parseInt(campos[3]);
String cor = campos[4];
Float peso = Float.parseFloat(campos[5]);
return new Pet(tipo, nome, raca, idade, cor, peso);
}