Aew galera preciso desenvolver uma aplicação para ECF e estou com algumas duvidas em fazer a aplicação funcionar com varios modelos de impressora, pois cada uma usa a sua respectiva dll, pensei no seguinte...
Fazer uma interface com todos os métodos que vou precisar no ECF (só coloquei alguns no momento)public interface ImpressoraFiscal {
public void retornoImpressora();
public void analisaiRetorno();
public void leituraX();
public void reducaoZ();
public void abreCupom(String cpf);
public void cancelaCupom();
}
public abstract class BematechECFTEF implements ImpressoraFiscal {
public static int iRetorno;
public BematechECFTEF() {
}
public void retornoImpressora() {
//corpo do metodo
}
public void analisaiRetorno() {
//corpo do metodo
}
}
public void leituraX() {
if (JOptionPane.showConfirmDialog(null, "Deseja Emitir a Leitura X?", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
iRetorno = Bematech.LeituraX();
analisaiRetorno();
retornoImpressora();
}
}
public void reducaoZ() {
//corpo do metodo
}
public void abreCupom(String cpf) {
//corpo do metodo
}
public void cancelaCupom() {
//corpo do metodo
}
}
}
public class Bematech2100 extends BematechECFTEF {
public Bematech2100() {
super();
}
}
public class Bematech2 extends BematechECFTEF {
public Bematech2() {
super();
}
@Override
public void leituraX() {
if (JOptionPane.showConfirmDialog(null, "Deseja Emitir a Leitura X (Bematech2)?", "Pergunta do Sistema", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
iRetorno = Bematech.LeituraX();
analisaiRetorno();
retornoImpressora();
}
}
}
private ImpressoraFiscal impFiscal;
if (tipoImp == 0) {
impFiscal = new Bematech2100();
} else {
impFiscal = new Bematech2();
}
impFiscal.leituraX();
ao fazer isso e chamar o metodo leituraX na instancia de Bematech2 ele não entende o metodo override e executa o metodo da classe BematechECFTEF, eu teria que fazer a verificaçao do modelo e instanciar os modelos separadamente, mas para nao fazer isso e trabalhar com o objeto de interface como eu deveria fazer?
Alguem me da alguma sugestao de como prosseguir ou se tiver uma maneira melhor ainda para fazer esse relacionamento eu agradeço :D
Obrigado.