Tenho 3 tabelas assim:
Formula(id,nome,desc,indices,pesos),Indice(id_indice,sigla,significado) e Valor_Indice(id_indice,id_valor_indice,data,valor)
onde a(s) Formula(s) e Indice(s) praticamente não mudam(uma alteração-no máximo, por ano) e o valor_indice de cada Indice ganha um registro ao mês.
Exemplo de registros:
Formula(11,“Fórmula do Pão”,"(((0.4*(TrAt/TrAn))+(0.6*(FbAt/FbAn)))-1);",“Tr,Fb”,“0.4,0.6”);
Indice(20,“Tr”,“Trigo”);
Valor_Indice(91,“Tr”,01/2008,1.2901);
Valor_Indice(101,“Tr”,11/2008,9.9113);
Descrição do meu problema:
quando o cliente digita o número da fórmula(“11” nesse exemplo), e as datas inicial(“01/2008”) e final(“11/2008”) e aperta “gerarRelatório”, ocorre os seguintes passos:
1-A fórmula é localizada na base, e os campos indices e pesos são selecionados;
2-Há uma comparação para saber QUANTOS são os indices e QUAIS são eles;
3-É achada o valor_do_indice nas datas correspondentes na tabela valor_indice;
4-cada indice tem seus dois valores_indice passados a um método calculaIndice(valor_inicial,valor_final);
5-O resultado desse(s) cálculo(s) são passados a um método do tipo(exemplo para 2 indices e 2 pesos) com seus pesos:
double calcularFormula2Indices(result_indice1,result_indice2,peso1,peso2);
Meu problema: eu não sei como relacionar de forma “sadia” os indices com os pesos.Eu deixei as fórmulas nesse formato do exemplor:
Formula(11,“Fórmula do Pão”,"(((0.4*(TrAt/TrAn))+(0.6*(FbAt/FbAn)))-1);",“Tr,Fb”,“0.4,0.6”);
porque ele(esse formato) é NATURAL ao ADMIN do sistema, que não sabe nada de java,banco e informática em geral.
O problema é que eu tenho que sempre quebrar os indices em um array(no caso “Tr,Fb”, duas posições), o tamanho do array dirá qual método será chamado,e também quebro os pesos em um array para taca-los posteriormente numa fórmula junto com o resultado do cálculo dos indices(repare que a ordem de inserção dos pesos é importante).Há o medo(real) desse excesso de stringficação, e eu uso as Strings(“Tr”,“Fb”,“MO”…) para achar os dados, mas para mim elas são naturais ao sistema era muito pior quando eu pegava o campo fórmula direto do banco e quebrava esse campo em pedacinhos para cálculo(e tinha que fazer os mesmos passos para achar os valores dos Indices).Qual a melhor solução para isso?