TreeMap ... helppppp

Pessoal, to com um problema.

Não consigo ordenar um TreeMap, ja to ficando louco …

Bom, tenho uma estrutura no banco de dados que armazena algo do tipo:

| ID | DSC | Parent

| 1 | Principal 1 | null
| 2 | Menu 1 | 1
| 3 | Submenu 1 | 2
| 4 | Submenu 2 | 2
| 6 | Peincipal 2 | null
| 7 | Menu 2 | 1
| 8 | Submenu 1 | 5
[color=red]| 9 | Submenu 3 | 2[/color]

Criei um TreeMap e estou comparando
Até ai ele cria a estrutura normal
Principal 1
– Menu 1
----- Submenu 1
----- Submenu 2
Principal 2
– Menu 2
------ Submenu 1
[color=red]------ Submenu 3[/color]

O problema é este submenu 3 que está aparecendo em baixo do Menu 2 e deveria aparecer embaixo do Menu 1
a ordenacao que eu faço obedece o que vindo do manco de dados (Não da para ordenar no banco de dados)

Minha Class:

[code] public java.util.TreeSet createSortedTree() throws Exception
{
Comparator activeCompare = new Comparator()
{
public int compare(SupportValeurFixe vf1, SupportValeurFixe vf2)
{
int result = 0;

			if (vf1.getIdParent() == 0 && vf2.getIdParent() != 0)
			{
				if (vf1.getId() == vf2.getIdParent())
					result = -1;
				else
					result = 1;
			}
			else if (vf1.getIdParent() != 0 && vf2.getIdParent() == 0)
			{
				if (vf1.getIdParent() == vf2.getId())
					result = 1;
				else 
					result = 1;
			}
			else
			{
				if (vf1.getId() > vf2.getId())
					result = 1;
				else if (vf1.getId() < vf2.getId())
					result = -1;
				else
					result = 0;
			}
			return result;
		}			
	};
	TreeSet<SupportValeurFixe> supportItemSujetTree = new TreeSet<SupportValeurFixe>(activeCompare);
	
	
	List<SupportValeurFixe> l = getValeurFixe("TREE");

	supportItemSujetTree.addAll(l);
	
	

	return supportItemSujetTree;
}

[/code]

Alguem pode me dar uma luz de como eu ordeno o maldito Submenu 3 para ele ser adcionado embaixo do menu 1 como mostra o PARENT.

Obrigado, ja estou ficando doido …

[quote]| 7 | Menu 2 | 1
| 8 | Submenu 3 | 5
| 7 | Submenu 3 | 2[/quote]
O id 7 aparece repetido duas vezes? E que parent 5 é esse?

erro na digitacao …

O parent é o codigo que informa de quem ele é filho .
O que ta nulo é principal entao nao tem parent
O ------ Submenu 3 como o parent é 2 ele deveria aparecer embaixo do Menu 1
entende ?

  if (vf1.getIdParent() == vf2.getId())  
                     result = 1;  
                 else   
                     result = 1;  

Este if é mesmo assim?