Don
Novembro 24, 2009, 1:18pm
#1
olá amigos
estou desenvolvendo um componente para utilizar em workflows e me deparei com a seguinte situação:
O usuário do componente vai digitar 2 valores, em uma combo vai escolher o tipo desses valores(String, Integer, Double) e em outra combo vai escolher a comparação que ele quer fazer com esses valores(=,!=,>,<,>=,<=). Como posso fazer isso sem fazer um monte de if? (tinha feito um estrategy mas achei que não ficou bom)…
Enfim como vocês fariam isso?
grato
pozzo
Novembro 24, 2009, 3:36pm
#2
Uma espécie de Command:
public interface Operacao {
public boolean executar();
}
[code]public class Diferente implements Operacao {
private Object value1;
private Object value2;
public Diferente(Object value1, Object value2) {
this.value1 = value1;
this.value2 = value2;
}
public boolean executar() {
return (!value1.equals(value2));
}
}
[/code]
[code]public class Igual implements Operacao {
private Object value1;
private Object value2;
public Igual(Object value1, Object value2) {
this.value1 = value1;
this.value2 = value2;
}
public boolean executar() {
return (value1.equals(value2));
}
}
[/code]
public class Teste {
public static void main(String[] args) {
// usuário escolheu Igual
Class operacao = Igual.class;
// usuário escolheu Double
Class tipo = Double.class;
// usuário digitou dois valores
String value1 = "15";
String value2 = "25";
try {
Object value1Double = tipo.getConstructor(new Class[] { String.class })
.newInstance(new Object[] { value1 });
Object value2Double = tipo.getConstructor(new Class[] { String.class })
.newInstance(new Object[] { value2 });
Operacao operacaoObj = (Operacao) operacao.getConstructor(new Class[] { Object.class, Object.class })
.newInstance(new Object[] { value1Double, value2Double });
System.out.println(operacaoObj.executar());
} catch (Exception e) {
e.printStackTrace();
}
}
}
você pode usar CajuScript ou outros.