diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/TB-Java-Projeto-Guiado-II.iml b/.idea/TB-Java-Projeto-Guiado-II.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/TB-Java-Projeto-Guiado-II.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..c1c2a99
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..07c2a23
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/br.com.starlabs/CTO.java b/src/br.com.starlabs/CTO.java
new file mode 100644
index 0000000..e2d6b97
--- /dev/null
+++ b/src/br.com.starlabs/CTO.java
@@ -0,0 +1,25 @@
+package br.com.starlabs;
+
+public class CTO extends EmployeeReference {
+
+ public CTO(String name, String position, double salary, String cpf) {
+ super(name, position, salary, cpf);
+ }
+
+ public void create() {
+ System.out.println("201 - CTO was created");
+ }
+
+ public void read() {
+ System.out.println("Name " + name + ", position: " + position + ", Salário: R$" + salary);
+ }
+
+ public void update(double newSalary) {
+ this.salary = newSalary;
+ System.out.println("200 - CTO was updated");
+ }
+
+ public void delete() {
+ System.out.println("204 - CTO was deleted");
+ }
+}
diff --git a/src/br.com.starlabs/CTORoot.java b/src/br.com.starlabs/CTORoot.java
new file mode 100644
index 0000000..c9dfe11
--- /dev/null
+++ b/src/br.com.starlabs/CTORoot.java
@@ -0,0 +1,30 @@
+package br.com.starlabs;
+
+public class CTORoot extends EmployeeRoot {
+
+ @Override
+ public void create(CTO employee) {
+ super.create(employee);
+ }
+
+ @Override
+ public CTO getById(String name) {
+ return super.getById(name);
+ }
+
+ @Override
+ public void delete(String name) {
+ super.delete(name);
+ }
+
+ @Override
+ public void getAll() {
+ super.getAll();
+ }
+
+ @Override
+ public void update(String name, double newSalary, String newPosition) {
+ super.update(name, newSalary, newPosition);
+ }
+
+}
diff --git a/src/br.com.starlabs/EmployeeInterface.java b/src/br.com.starlabs/EmployeeInterface.java
new file mode 100644
index 0000000..a557f9d
--- /dev/null
+++ b/src/br.com.starlabs/EmployeeInterface.java
@@ -0,0 +1,19 @@
+package br.com.starlabs;
+
+public interface EmployeeInterface {
+ String getName();
+
+ void setName(String name);
+
+ String getPosition();
+
+ void setPosition(String Position);
+
+ double getSalary();
+
+ void setSalary(double Salary);
+
+ String getCPF();
+
+ void setCPF(String CPF);
+}
diff --git a/src/br.com.starlabs/EmployeeNode.java b/src/br.com.starlabs/EmployeeNode.java
new file mode 100644
index 0000000..d390135
--- /dev/null
+++ b/src/br.com.starlabs/EmployeeNode.java
@@ -0,0 +1,16 @@
+
+package br.com.starlabs;
+
+public class EmployeeNode {
+
+ EmployeeReference employee;
+ EmployeeNode leftChild;
+ EmployeeNode rightChild;
+
+ public EmployeeNode(EmployeeReference employee) {
+ this.employee = funcionario;
+ leftChild = null;
+ rightChild = null;
+ }
+
+}
diff --git a/src/br.com.starlabs/EmployeeReference.java b/src/br.com.starlabs/EmployeeReference.java
new file mode 100644
index 0000000..6e0cb27
--- /dev/null
+++ b/src/br.com.starlabs/EmployeeReference.java
@@ -0,0 +1,54 @@
+public class EmployeeReference implements EmployeeReference {
+ protected String name;
+ protected String position;
+ protected double salary;
+ protected String cpf;
+
+ public EmployeeReference(String name, String position, double salary, String cpf) {
+ this.name = name;
+ this.position = position;
+ this.salary = salary;
+ this.cpf = cpf;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(String name) {
+ this.Name = name;
+ }
+
+ @Override
+ public String getPosition() {
+ return position;
+ }
+
+ @Override
+ public void setPosition(String position) {
+ this.Position = position;
+ }
+
+ @Override
+ public double getSalary() {
+ return salary;
+ }
+
+ @Override
+ public void setSalary(double salary) {
+ this.Salary = salary;
+ }
+
+ @Override
+ public String getCpf() {
+ return cpf;
+ }
+
+ @Override
+ public void setCpf(String cpf) {
+ this.cpf = cpf;
+ }
+
+}
diff --git a/src/br.com.starlabs/EmployeeRoot.java b/src/br.com.starlabs/EmployeeRoot.java
new file mode 100644
index 0000000..b87e648
--- /dev/null
+++ b/src/br.com.starlabs/EmployeeRoot.java
@@ -0,0 +1,56 @@
+package br.com.starlabs;
+
+public class EmployeeRoot {
+
+ private TreeSet employees;
+
+ public EmployeeRoot() {
+ employees = new TreeSet<>((f1, f2) -> f1.getName().compareTo(f2.getName()));
+ }
+
+ public void create(T employee) {
+ employees.add(employee);
+ System.out.println("201 - Employee was added!");
+ }
+
+ public T getById(String name) {
+
+ for (T employeeReference : employees) {
+ if (employeeReference.getName().equals(name)) {
+ return employeeReference;
+ }
+ }
+ System.out.println("404 - The employee was not found");
+ return null;
+ }
+
+ public void delete(String name) {
+ T employeeToDelete = getById(name);
+ if (employeeToDelete != null) {
+ employees.remove(employeeToDelete);
+ System.out.println("200 - Employee was deleted");
+ } else {
+ System.out.println("404 - Employee not found");
+ }
+ }
+
+ public void getAll() {
+ System.out.println("******* All Employees ********");
+ for (T employeeReference : employees) {
+ System.out.println(employeeReference.getName() + " - " + employeeReference.getPosition() + " - "
+ + employeeReference.getSalary());
+ }
+ }
+
+ public void update(String name, double newSalary, String newPosition) {
+ T employeeToUpdate = getById(name);
+ if (employeeToUpdate != null) {
+ employeeToUpdate.setSalary(newSalary);
+ employeeToUpdate.setPosition(newPosition);
+ System.out.println("200 - Employee updated");
+ } else {
+ System.out.println("404 - Employee not found");
+ }
+ }
+
+}
diff --git a/src/funcionariosStarlabs/ArvoreCTO.java b/src/funcionariosStarlabs/ArvoreCTO.java
deleted file mode 100644
index b50504d..0000000
--- a/src/funcionariosStarlabs/ArvoreCTO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package funcionariosStarlabs;
-
-public class ArvoreCTO extends ArvoreDeFuncionarios {
-
- @Override
- public void adicionar(CTO funcionario) {
- super.adicionar(funcionario);
- }
-
- @Override
- public CTO buscar(String nome) {
- return super.buscar(nome);
- }
-
- @Override
- public void remover(String nome) {
- super.remover(nome);
- }
-
- @Override
- public void mostrarTodos() {
- super.mostrarTodos();
- }
-
- @Override
- public void atualizarDados(String nome, double novoSalario, String novoCargo) {
- super.atualizarDados(nome, novoSalario, novoCargo);
- }
-}
diff --git a/src/funcionariosStarlabs/ArvoreDeFuncionarios.java b/src/funcionariosStarlabs/ArvoreDeFuncionarios.java
deleted file mode 100644
index 0bdeaed..0000000
--- a/src/funcionariosStarlabs/ArvoreDeFuncionarios.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package funcionariosStarlabs;
-import java.util.TreeSet;
-
-public class ArvoreDeFuncionarios {
-
- private TreeSet funcionarios;
-
- public ArvoreDeFuncionarios() {
- funcionarios = new TreeSet<>((f1, f2) -> f1.getNome().compareTo(f2.getNome()));
- }
-
- public void adicionar(T funcionario) {
- funcionarios.add(funcionario);
- System.out.println("Funcionário adicionado com sucesso!");
- }
-
- public T buscar(String nome) {
-
- for (T funcionarioBase : funcionarios) {
- if (funcionarioBase.getNome().equals(nome)) {
- return funcionarioBase; // retorno o funcionário encontrado
- }
- }
- System.out.println("Funcionário não existe na nossa base de dados");
- return null;
- }
-
- public void remover(String nome) {
- T funcionarioParaRemover = buscar(nome);
- if (funcionarioParaRemover != null) {
- funcionarios.remove(funcionarioParaRemover);
- System.out.println("Funcionário " + nome + " removido com sucesso!");
- } else {
- System.out.println(nome + "Não foi encontrado na nossa base de dados");
- }
- }
-
- public void mostrarTodos() {
- System.out.println("\n=== Todos os Funcionário ===");
- for (T funcionarioBase : funcionarios) {
- System.out.println(funcionarioBase.getNome() + " - " + funcionarioBase.getCargo() + " - " + funcionarioBase.getSalario());
- }
- }
-
- public void atualizarDados(String nome, double novoSalario, String novoCargo) {
- T funcionarioParaAtualizar = buscar(nome);
- if (funcionarioParaAtualizar != null) {
- funcionarioParaAtualizar.setSalario(novoSalario);
- funcionarioParaAtualizar.setCargo(novoCargo);
- System.out.println("Dados da pessoa funcionária atulizados com sucesso!");
- } else {
- System.out.println("Pessoa não encontrada em nossa base!");
- }
- }
-}
\ No newline at end of file
diff --git a/src/funcionariosStarlabs/ArvoreFuncionarios.java b/src/funcionariosStarlabs/ArvoreFuncionarios.java
deleted file mode 100644
index 12ce816..0000000
--- a/src/funcionariosStarlabs/ArvoreFuncionarios.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package funcionariosStarlabs;
-
-public class ArvoreFuncionarios {
- private FuncionarioBaseNode root;
-
- public ArvoreFuncionarios() {
- root = null;
- }
-
- private FuncionarioBaseNode inserirRecursivo(FuncionarioBaseNode node, FuncionarioBase funcionario) {
- if (node == null) {
- return new FuncionarioBaseNode(funcionario);
- }
-
- if (funcionario.getNome().compareTo(node.funcionario.getNome()) < 0) {
- node.leftChild = inserirRecursivo(node.leftChild, funcionario);
- } else if (funcionario.getNome().compareTo(node.funcionario.getNome()) > 0) {
- node.rightChild = inserirRecursivo(node.rightChild, funcionario);
- }
-
- return node;
- }
-
- public void inserir(FuncionarioBase funcionario) {
- root = inserirRecursivo(root, funcionario);
- }
-
- private FuncionarioBase buscarRecursivo(FuncionarioBaseNode node, String nome) {
-
- if (node == null || node.funcionario.getNome().equals(nome)) {
- return node == null ? null : node.funcionario;
- }
-
- if (nome.compareTo(node.funcionario.getNome()) < 0) {
- return buscarRecursivo(node.leftChild, nome);
- } else {
- buscarRecursivo(node.rightChild, nome);
- }
-
- return null;
- }
-
- public FuncionarioBase buscar(String nome) {
- return buscarRecursivo(root, nome);
- }
-
-
- private FuncionarioBaseNode removerRecursivo(FuncionarioBaseNode node, String nome) {
- if (node == null) {
- return null;
- }
-
- if (nome.compareTo(node.funcionario.getCargo()) < 0) {
- node.leftChild = removerRecursivo(node.leftChild, nome);
- } else if (nome.compareTo(node.funcionario.getNome()) > 0) {
- node.rightChild = removerRecursivo(node.rightChild, nome);
- } else {
- if (node.leftChild == null) {
- return node.rightChild;
- } else if (node.rightChild == null) {
- return node.leftChild;
- }
-
- node.funcionario = minValue(node.rightChild);
- node.rightChild = removerRecursivo(node.rightChild, node.funcionario.getNome());
- }
- return node;
- }
-
- public void remover(String nome) {
- root = removerRecursivo(root, nome);
- }
-
- private FuncionarioBase minValue(FuncionarioBaseNode node) {
- FuncionarioBase menorFuncionario = node.funcionario;
- while(node.leftChild != null) {
- menorFuncionario = node.leftChild.funcionario;
- node = node.leftChild;
- }
-
- return menorFuncionario;
- }
-
- public void mostarDadosEmOrdem() {
- mostarDadosEmOrdemRecursivo(root);
- }
-
- private void mostarDadosEmOrdemRecursivo(FuncionarioBaseNode node) {
- if (node != null) {
- mostarDadosEmOrdemRecursivo(node.leftChild);
- System.out.println(node.funcionario.getNome() + " - " + node.funcionario.getCargo());
- mostarDadosEmOrdemRecursivo(node.rightChild);
- }
- }
-}
diff --git a/src/funcionariosStarlabs/ArvoreVPDeEngenharia.java b/src/funcionariosStarlabs/ArvoreVPDeEngenharia.java
deleted file mode 100644
index 165062f..0000000
--- a/src/funcionariosStarlabs/ArvoreVPDeEngenharia.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package funcionariosStarlabs;
-
-public class ArvoreVPDeEngenharia extends ArvoreDeFuncionarios {
-
- @Override
- public void adicionar(VPDeEngenharia funcionario) {
- super.adicionar(funcionario);
- }
-
- @Override
- public VPDeEngenharia buscar(String nome) {
- return super.buscar(nome);
- }
-
- @Override
- public void remover(String nome) {
- super.remover(nome);
- }
-
- @Override
- public void mostrarTodos() {
- super.mostrarTodos();
- }
-
- @Override
- public void atualizarDados(String nome, double novoSalario, String novoCargo) {
- super.atualizarDados(nome, novoSalario, novoCargo);
- }
-
-}
diff --git a/src/funcionariosStarlabs/CTO.java b/src/funcionariosStarlabs/CTO.java
deleted file mode 100644
index 2a1198d..0000000
--- a/src/funcionariosStarlabs/CTO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package funcionariosStarlabs;
-
-public class CTO extends FuncionarioBase {
-
- public CTO(String nome, String cargo, double salario, String cpf) {
- super(nome, cargo, salario, cpf);
- }
-
- public void criar() {
- System.out.println("CTO criado com sucesso");
- }
-
- public void ler() {
- System.out.println("Nome " + nome + ", Cargo: " + cargo + ", Salário: R$" + salario);
- }
-
- public void atualizarDados(double novoSalario) {
- this.salario = novoSalario;
- System.out.println("Dados do CTO atualizado com sucesso!");
- }
-
- public void remover() {
- System.out.println("CTO removido com sucesso");
- }
-}
diff --git a/src/funcionariosStarlabs/FuncionarioBase.java b/src/funcionariosStarlabs/FuncionarioBase.java
deleted file mode 100644
index bb5ad6f..0000000
--- a/src/funcionariosStarlabs/FuncionarioBase.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package funcionariosStarlabs;
-
-public abstract class FuncionarioBase implements FuncionarioBaseInterface {
- protected String nome;
- protected String cargo;
- protected double salario;
- protected String cpf;
-
- public FuncionarioBase(String nome, String cargo, double salario, String cpf) {
- this.nome = nome;
- this.cargo = cargo;
- this.salario = salario;
- this.cpf = cpf;
- }
-
- @Override
- public String getNome() {
- return nome;
- }
- @Override
- public void setNome(String nome) {
- this.nome = nome;
- }
- @Override
- public String getCargo() {
- return cargo;
- }
- @Override
- public void setCargo(String cargo) {
- this.cargo = cargo;
- }
- @Override
- public double getSalario() {
- return salario;
- }
- @Override
- public void setSalario(double salario) {
- this.salario = salario;
- }
- @Override
- public String getCpf() {
- return cpf;
- }
- @Override
- public void setCpf(String cpf) {
- this.cpf = cpf;
- }
-}
\ No newline at end of file
diff --git a/src/funcionariosStarlabs/FuncionarioBaseInterface.java b/src/funcionariosStarlabs/FuncionarioBaseInterface.java
deleted file mode 100644
index 191f747..0000000
--- a/src/funcionariosStarlabs/FuncionarioBaseInterface.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package funcionariosStarlabs;
-
-public interface FuncionarioBaseInterface {
- String getNome();
- void setNome(String nome);
- String getCargo();
- void setCargo(String cargo);
- double getSalario();
- void setSalario(double salario);
- String getCpf();
- void setCpf(String cpf);
-}
\ No newline at end of file
diff --git a/src/funcionariosStarlabs/FuncionarioBaseNode.java b/src/funcionariosStarlabs/FuncionarioBaseNode.java
deleted file mode 100644
index ca27792..0000000
--- a/src/funcionariosStarlabs/FuncionarioBaseNode.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package funcionariosStarlabs;
-
-public class FuncionarioBaseNode {
- FuncionarioBase funcionario;
- FuncionarioBaseNode leftChild;
- FuncionarioBaseNode rightChild;
-
- public FuncionarioBaseNode(FuncionarioBase funcionario) {
- this.funcionario = funcionario;
- leftChild = null;
- rightChild = null;
- }
-}
diff --git a/src/funcionariosStarlabs/VPDeEngenharia.java b/src/funcionariosStarlabs/VPDeEngenharia.java
deleted file mode 100644
index 98c7b79..0000000
--- a/src/funcionariosStarlabs/VPDeEngenharia.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package funcionariosStarlabs;
-
-public class VPDeEngenharia extends FuncionarioBase {
-
- public VPDeEngenharia(String nome, String Cargo, double salario, String cpf) {
- super(nome, Cargo, salario, cpf);
- }
-
- public void criar() {
- System.out.println("VP de Engenharia criado com sucesso!");
- }
-
- public void ler() {
- System.out.println("Nome " + nome + ", Cargo: " + cargo + ", Salário: R$" + salario);
- }
-
- public void atualizarDados(double novoSalario, String novoCargo) {
- this.salario = novoSalario;
- this.cargo = novoCargo;
- System.out.println("Dados do VP atualizado com sucesso!");
- }
-
- public void remover() {
- System.out.println("VP removido com sucesso");
- }
-}