Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/lab-java-exceptions-es_AdrianPintor.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions src/main/java/org/example/App.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package org.example;

import java.io.FileWriter;
import java.io.IOException;
public class App {
public static void main( String[] args ) throws IOException {
PersonsList list = new PersonsList();
Person person1 = new Person(1,"Juan Perez", 45, "Teacher");
Person person2 = new Person(2,"Adrian Pintor",24,"Engineer");
Person person3 = new Person(3,"Maria Ramos",22,"Teacher");
list.persons.add(person1);
list.persons.add(person2);
list.persons.add(person3);

Person clonedPerson = list.clone(person1);
System.out.println(clonedPerson);

writeFile(list);
}
public void writeFile(PersonsList list) {
try (FileWriter writer = new FileWriter("person_info.txt")) {
for (Person person : list.persons) {
writer.write(person.toString() + "\n");
}
System.out.println("Información de Personas escrita en el archivo correctamente.");
} catch (IOException e) {
System.out.println("Error al escribir en el archivo: " + e.getMessage());
}
}
}
54 changes: 54 additions & 0 deletions src/main/java/org/example/Person.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package org.example;

public class Person {
public int id;
public String name;
public int age;
public String occupation;

public Person(int id, String name, int age, String occupation){
this.id = id;
this.name = name;
this.age = age;
this.occupation = occupation;
}

public void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
this.age = age;
}

public boolean equals(Person other) {
if (this == other) {
return true;
}
if (other == null) {
return false;
}
return this.name.equals(other.name)
&& this.age == other.age
&& this.occupation.equals(other.occupation);
}

public String toString() {
return "ID: " + id + ", Name: " + name + ", Age: " + age + ", Occupation: " + occupation;
}

public String getName() {
return name;
}

public int getId() {
return id;
}

public int getAge() {
return age;
}

public String getOccupation() {
return occupation;
}
}
35 changes: 35 additions & 0 deletions src/main/java/org/example/PersonsList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package org.example;

import java.util.ArrayList;
import java.util.List;

public class PersonsList {
List<Person> persons;

public PersonsList() {
this.persons = new ArrayList<>();
}

public void add(Person person) {
this.persons.add(person);
}

public Person findByName(String name) {
String[] parts = name.split(" ");
if (parts.length != 2) {
throw new IllegalArgumentException("Name should be formatted as 'firstName lastName'");
}

for (Person person : persons) {
if (person.getName().equals(name)) {
return person;
}
}
return null;
}

public Person clone(Person original) {
int newId = this.persons.size() + 1; // Simplemente para tener un nuevo 'id', una estrategia diferente puede ser necesaria
return new Person(newId, original.getName(), original.getAge(), original.getOccupation());
}
}
25 changes: 25 additions & 0 deletions src/test/java/org/example/FindByNameTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.example;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class FindByNameTest {
private PersonsList personsList;

@BeforeEach
public void setUp() {
personsList = new PersonsList();
personsList.add(new Person(1, "Adrian Pintor", 24, "Engineer"));
}

@Test
public void testFindByName() {
Person foundPerson = personsList.findByName("Adrian Pintor");
assertEquals(1, foundPerson.getId());
assertEquals("Adrian Pintor", foundPerson.getName());
assertEquals(24, foundPerson.getAge());
assertEquals("Engineer", foundPerson.getOccupation());
}
}
52 changes: 52 additions & 0 deletions src/test/java/org/example/PersonTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package org.example;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

public class PersonTest {

@Test
public void testSetAgeThrowsErrorIfNegativeAge() {
Person person1 = new Person(1, "Juan Perez", 45, "Teacher");
assertThrows(IllegalArgumentException.class, () -> person1.setAge(-1));
}

@Test
public void testFindByNameReturnsCorrectPerson() {
PersonsList personsList = new PersonsList();
Person person2 = new Person(2, "Adrian Pintor", 24, "Engineer");
Person person3 = new Person(3, "Maria Ramos", 22, "Doctor");
personsList.add(person2);
personsList.add(person3);

assertEquals(person2, personsList.findByName("Adrian Pintor"));
assertEquals(person3, personsList.findByName("Maria Ramos"));
}

@Test
public void testFindByNameThrowsErrorIfNameNotFormattedCorrectly() {
PersonsList personsList = new PersonsList();
Person person1 = new Person(1, "Juan Perez", 45, "Teacher");
personsList.add(person1);

assertThrows(IllegalArgumentException.class, () -> personsList.findByName("JuanPerez"));
assertThrows(IllegalArgumentException.class, () -> personsList.findByName("Juan"));
assertThrows(IllegalArgumentException.class, () -> personsList.findByName("Juan Perez Garcia"));
}

@Test
public void testCloneCreatesNewPersonWithSamePropertiesExceptId() {
Person originalPerson = new Person(4, "Juan Perez", 45, "Teacher");
PersonsList personsList = new PersonsList();
personsList.add(originalPerson);

Person clonedPerson = personsList.clone(originalPerson);
assertEquals(originalPerson.getName(), clonedPerson.getName());
assertEquals(originalPerson.getAge(), clonedPerson.getAge());
assertEquals(originalPerson.getOccupation(), clonedPerson.getOccupation());
assertNotEquals(originalPerson.getId(), clonedPerson.getId());

assertTrue(originalPerson.equals(clonedPerson));
}
}