Skip to content

Instantly share code, notes, and snippets.

@rafaelchagasb
Created December 21, 2011 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafaelchagasb/1505612 to your computer and use it in GitHub Desktop.
Save rafaelchagasb/1505612 to your computer and use it in GitHub Desktop.
Decorator - Exercício 4
import java.util.Date;
public class Conta {
private String nomeTitular;
private double saldo;
private Date dataDeAbertura;
public Conta(String nomeTitular,double saldo,Date dataDeAbertura) {
this.nomeTitular = nomeTitular;
this.saldo = saldo;
this.dataDeAbertura = dataDeAbertura;
}
public String getNomeTitular() {
return nomeTitular;
}
public void setNomeTitular(String nomeTitular) {
this.nomeTitular = nomeTitular;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public Date getDataDeAbertura() {
return dataDeAbertura;
}
public void setDataDeAbertura(Date dataDeAbertura) {
this.dataDeAbertura = dataDeAbertura;
}
}
import java.util.List;
abstract class Filtro {
protected final Filtro outroFiltro;
public Filtro(Filtro outroFiltro){
this.outroFiltro = outroFiltro;
}
public Filtro()
{
this.outroFiltro = null;
}
public abstract List<Conta> filtra(List<Conta> contas);
protected List<Conta> filtrarOutro(List<Conta> contas){
if (outroFiltro == null) return null;
return outroFiltro.filtra(contas);
}
}
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class FiltroDataDeAberturaMesCorrente extends Filtro{
public FiltroDataDeAberturaMesCorrente(Filtro outroFiltro)
{
super(outroFiltro);
}
public FiltroDataDeAberturaMesCorrente()
{}
@Override
public List<Conta> filtra(List<Conta> contas) {
List<Conta> lista = new ArrayList<Conta>();
for(Conta conta:contas)
{
if(conta.getDataDeAbertura().getMonth() == new Date().getMonth() && conta.getDataDeAbertura().getYear() == new Date().getYear())
lista.add(conta);
}
lista.addAll(filtrarOutro(contas));
return lista;
}
}
import java.util.ArrayList;
import java.util.List;
public class FiltroMaiorQueQuinhentos extends Filtro{
public FiltroMaiorQueQuinhentos(Filtro outroFiltro)
{
super(outroFiltro);
}
public FiltroMaiorQueQuinhentos()
{}
@Override
public List<Conta> filtra(List<Conta> contas) {
List<Conta> lista = new ArrayList<Conta>();
for(Conta conta:contas)
{
if(conta.getSaldo()>500000)
lista.add(conta);
}
lista.addAll(filtrarOutro(contas));
return lista;
}
}
import java.util.ArrayList;
import java.util.List;
public class FiltroValorMenorQueCem extends Filtro{
public FiltroValorMenorQueCem(Filtro outroFiltro)
{
super(outroFiltro);
}
public FiltroValorMenorQueCem()
{}
@Override
public List<Conta> filtra(List<Conta> contas) {
List<Conta> lista = new ArrayList<Conta>();
for(Conta conta:contas)
{
if(conta.getSaldo()<100)
lista.add(conta);
}
lista.addAll(filtrarOutro(contas));
return lista;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment