public void ordenacaoDemandas (Long codCampo, String ordemCampo, List lista) {
try {
AtributoDemandaDao atributoDemandaDao = new AtributoDemandaDao(null);
final AtributoDemandaAtbdem atributoDemanda = (AtributoDemandaAtbdem) atributoDemandaDao.buscar(AtributoDemandaAtbdem.class, codCampo);;
final String ordenacaoCampo = ordemCampo;
if(lista != null && lista.size()>1 && atributoDemanda!=null){
Collections.sort(lista,
new Comparator() {
public int compare(Object o1, Object o2){
//Por default retorna que s�o iguais "retorno=0"
int retorno=0;
RegDemandaRegd demanda1 = (RegDemandaRegd) o1;
RegDemandaRegd demanda2 = (RegDemandaRegd) o2;
try{
//Caso sejam num�ros fixos: "codRegd" e "numeroDocOrigemRegd"
if(atributoDemanda.iGetNome().equals("codRegd") || atributoDemanda.iGetNome().equals("numeroDocOrigemRegd")){
String valorStringDemanda1 = atributoDemanda.iGetValor(demanda1);
String valorStringDemanda2 = atributoDemanda.iGetValor(demanda2);
if(valorStringDemanda1.equals("") && valorStringDemanda2.equals("")){
retorno = 0;
}
else if(!valorStringDemanda1.equals("") && valorStringDemanda2.equals("")){
retorno = 1;
}
else if(valorStringDemanda1.equals("") && !valorStringDemanda2.equals("")){
retorno = -1;
}
else{
Integer valorInteiroDemanda1 = new Integer(Integer.parseInt(valorStringDemanda1)) ;
Integer valorInteiroDemanda2 = new Integer(Integer.parseInt(valorStringDemanda2));
retorno = valorInteiroDemanda1.compareTo(valorInteiroDemanda2);
}
}
//Caso sejam datas fixas
else if(atributoDemanda.iGetNome().equals("dataLimiteRegd") || atributoDemanda.iGetNome().equals("dataSolicitacaoRegd")
|| atributoDemanda.iGetNome().equals("dataInclusaoRegd") || atributoDemanda.iGetNome().equals("dataAlteracaoRegd")
|| atributoDemanda.iGetNome().equals("dataSituacaoRegd")){
String dataDem1 = atributoDemanda.iGetValor(demanda1);
String dataDem2 = atributoDemanda.iGetValor(demanda2);
if(dataDem1.equals("") && dataDem2.equals("")){
retorno = 0;
}
else if(!dataDem1.equals("") && dataDem2.equals("")){
retorno = 1;
}
else if(dataDem1.equals("") && !dataDem2.equals("")){
retorno = -1;
}
else{
//Data no formato dd/mm/aaaa
int diaDem1 , mesDem1, anoDem1;
diaDem1 = Integer.parseInt(dataDem1.trim().substring(0, 2));
mesDem1 = Integer.parseInt(dataDem1.trim().substring(3, 5));
anoDem1 = Integer.parseInt(dataDem1.trim().substring(6, 10));
int diaDem2, mesDem2, anoDem2;
diaDem2 = Integer.parseInt(dataDem2.trim().substring(0, 2));
mesDem2 = Integer.parseInt(dataDem2.trim().substring(3, 5));
anoDem2 = Integer.parseInt(dataDem2.trim().substring(6, 10));
GregorianCalendar valorDataDemanda1 = new GregorianCalendar(anoDem1, mesDem1, diaDem1);
GregorianCalendar valorDataDemanda2 = new GregorianCalendar(anoDem2, mesDem2, diaDem2);
retorno = valorDataDemanda1.compareTo(valorDataDemanda2);
}
}
//Caso seja atributo livre de valida��o
else if(atributoDemanda.iGetGrupoAtributosLivres() != null
&& atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg()
.getCodSteg().equals(new Long(Input.VALIDACAO))){
//Busca o valor da demanda1
Iterator itRegDem1 = demanda1.getDemAtributoDemas().iterator();
String informacaoDemanda1Atbdem = "";
DemAtributoDema demAtributoDemanda1Dema = null;
while (itRegDem1.hasNext()) {
demAtributoDemanda1Dema = (DemAtributoDema) itRegDem1.next();
if (demAtributoDemanda1Dema.getSisAtributoSatb().getSisGrupoAtributoSga().equals(atributoDemanda.iGetGrupoAtributosLivres())){
informacaoDemanda1Atbdem = demAtributoDemanda1Dema.getInformacao();
break;
}
demAtributoDemanda1Dema = null;
}
//Busca o valor da demanda2
Iterator itRegDem2 = demanda2.getDemAtributoDemas().iterator();
String informacaoDemanda2Atbdem = "";
DemAtributoDema demAtributoDemanda2Dema = null;
while (itRegDem2.hasNext()) {
demAtributoDemanda2Dema = (DemAtributoDema) itRegDem2.next();
if (demAtributoDemanda2Dema.getSisAtributoSatb().getSisGrupoAtributoSga().equals(atributoDemanda.iGetGrupoAtributosLivres())){
informacaoDemanda2Atbdem = demAtributoDemanda2Dema.getInformacao();
break;
}
demAtributoDemanda2Dema = null;
}
//Come�a o processo de compara��o da ordena��o
if(demAtributoDemanda1Dema==null && demAtributoDemanda2Dema==null){
retorno = 0;
}
else if(demAtributoDemanda1Dema!=null && demAtributoDemanda2Dema==null){
retorno = 1;
}
else if(demAtributoDemanda1Dema==null && demAtributoDemanda2Dema!=null){
retorno = -1;
}
else{
if(demAtributoDemanda1Dema.getSisAtributoSatb().getAtribInfCompSatb().equals("dataScript")){
//Data no formato dd/mm/aaaa
String dataDem1 = informacaoDemanda1Atbdem;
int diaDem1 , mesDem1, anoDem1;
diaDem1 = Integer.parseInt(dataDem1.trim().substring(0, 2));
mesDem1 = Integer.parseInt(dataDem1.trim().substring(3, 5));
anoDem1 = Integer.parseInt(dataDem1.trim().substring(6, 10));
String dataDem2 = informacaoDemanda2Atbdem;
int diaDem2, mesDem2, anoDem2;
diaDem2 = Integer.parseInt(dataDem2.trim().substring(0, 2));
mesDem2 = Integer.parseInt(dataDem2.trim().substring(3, 5));
anoDem2 = Integer.parseInt(dataDem2.trim().substring(6, 10));
GregorianCalendar valorDataDemanda1 = new GregorianCalendar(anoDem1, mesDem1, diaDem1);
GregorianCalendar valorDataDemanda2 = new GregorianCalendar(anoDem2, mesDem2, diaDem2);
retorno = valorDataDemanda1.compareTo(valorDataDemanda2);
}
else if(demAtributoDemanda1Dema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroInteiroScript")){
Integer valorInteiroDemanda1 = new Integer(Integer.parseInt(informacaoDemanda1Atbdem)) ;
Integer valorInteiroDemanda2 = new Integer(Integer.parseInt(informacaoDemanda2Atbdem));
retorno = valorInteiroDemanda1.compareTo(valorInteiroDemanda2);
}
else if(demAtributoDemanda1Dema.getSisAtributoSatb().getAtribInfCompSatb().equals("numeroRealScript")
|| demAtributoDemanda1Dema.getSisAtributoSatb().getAtribInfCompSatb().equals("valorMonetarioScript")){
DecimalFormat dff = (DecimalFormat) DecimalFormat.getInstance();
Double valorRealDemanda1 = new Double(dff.parse(informacaoDemanda1Atbdem).doubleValue()) ;
Double valorRealDemanda2 = new Double(dff.parse(informacaoDemanda2Atbdem).doubleValue());
retorno = valorRealDemanda1.compareTo(valorRealDemanda2);
}
else{
retorno = informacaoDemanda1Atbdem.compareToIgnoreCase(informacaoDemanda2Atbdem);
}
}
}
//Caso seja atributo livre diferente de valida��o
else if(atributoDemanda.iGetGrupoAtributosLivres() != null){
//Busca o valor da demanda1
Iterator itRegDem1 = demanda1.getDemAtributoDemas().iterator();
String informacaoDemanda1Atbdem = "";
while (itRegDem1.hasNext()) {
DemAtributoDema demAtributoDema = (DemAtributoDema) itRegDem1.next();
if (demAtributoDema.getSisAtributoSatb().getSisGrupoAtributoSga().equals(atributoDemanda.iGetGrupoAtributosLivres())){
if (atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXT)) ||
atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXTAREA)) ||
atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.MULTITEXTO)) ) {
informacaoDemanda1Atbdem = informacaoDemanda1Atbdem + demAtributoDema.getInformacao() + "; ";
} else if (!atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.IMAGEM))) {
//se for do tipo imagem n�o faz nada, deixa em branco.
informacaoDemanda1Atbdem = informacaoDemanda1Atbdem + demAtributoDema.getSisAtributoSatb().getDescricaoSatb() + "; ";
}
}
}
if (informacaoDemanda1Atbdem.length() > 0){
informacaoDemanda1Atbdem = informacaoDemanda1Atbdem.substring(0, informacaoDemanda1Atbdem.length() - 2);
}
//Busca o valor da demanda2
Iterator itRegDem2 = demanda2.getDemAtributoDemas().iterator();
String informacaoDemanda2Atbdem = "";
while (itRegDem2.hasNext()) {
DemAtributoDema demAtributoDema = (DemAtributoDema) itRegDem2.next();
if (demAtributoDema.getSisAtributoSatb().getSisGrupoAtributoSga().equals(atributoDemanda.iGetGrupoAtributosLivres())){
if (atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXT)) ||
atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXTAREA)) ||
atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.MULTITEXTO)) ) {
informacaoDemanda2Atbdem = informacaoDemanda2Atbdem + demAtributoDema.getInformacao() + "; ";
} else if (!atributoDemanda.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.IMAGEM))) {
//se for do tipo imagem n�o faz nada, deixa em branco.
informacaoDemanda2Atbdem = informacaoDemanda2Atbdem + demAtributoDema.getSisAtributoSatb().getDescricaoSatb() + "; ";
}
}
}
if (informacaoDemanda2Atbdem.length() > 0){
informacaoDemanda2Atbdem = informacaoDemanda2Atbdem.substring(0, informacaoDemanda2Atbdem.length() - 2);
}
//Faz a compara��o String dos valores
retorno = informacaoDemanda1Atbdem.compareToIgnoreCase(informacaoDemanda2Atbdem);
}
//Caso geral
else {
retorno = atributoDemanda.iGetValor(demanda1).compareToIgnoreCase(atributoDemanda.iGetValor(demanda2));
}
} catch (Exception e){
//N�o faz nada, deixa o valor como foi setado inicialmente, "zero".
}