Hola, a ver si alguno me puede ayudar.
He creado un tree el cual lo ordeno mediante nested , lo que hago es ordenar cada fila mediante los left y right. Intento utilizar el metodo drag and drop para arrastrar la fila a cualquier posicion el arbol, lo que ocurre, es que no consigo que los left y right se ordenen como yo quiero, alguien sabría orientarme o ayudarme con el código, muchas gracias.
Código PHP:
private void updateAfterTag(NTag tagNTag tagItemNTag parentTagOrigenNTag parentTagDestinoMap<IntegerNTagtagListCredencial credencialTransaction txnthrows AraException{
        if(
tag.getLft() > tagItem.getLft()){
            for(
NTag t tagList.values()){
                if(
parentTagOrigen == parentTagDestino){
                    if(
t.getLft() > parentTagDestino.getLft() && t.getRgt() < tag.getRgt()){
                        if(
t.getLft() > tagItem.getLft()){
                            
t.setLft(t.getLft() + 2);
                            
t.setRgt(t.getRgt() + 2);
                            
update(credencial,t,txn);
                        }
                    }
                } else {
                    if((
t.getLft() > tagItem.getLft() && t.getRgt() < parentTagDestino.getRgt() && != tag) || (t.getRgt() < tag.getRgt() && t.getLft() > parentTagOrigen.getLft() && != tag)){
                        
t.setLft(t.getLft() + 2);
                        
t.setRgt(t.getRgt() + 2);
                        
update(credencial,t,txn);
                    }
                }
                
            }
        } else {
            for(
NTag t tagList.values()){
                if(
parentTagOrigen == parentTagDestino){
                    if(
t.getLft() > tag.getLft() && t.getLft() <= tagItem.getLft()){
                        
t.setLft(t.getLft() -2);
                        
t.setRgt(t.getRgt() - 2);
                        
update(credencial,t,txn);
                    }
                } else {
                    if((
t.getRgt() < parentTagOrigen.getRgt() && t.getLft() > tag.getLft() && != tag) || (t.getLft() > parentTagDestino.getLft() && t.getLft() <= tagItem.getLft() && != tag)){
                        
t.setLft(t.getLft() -2);
                        
t.setRgt(t.getRgt() - 2);
                        
update(credencial,t,txn);
                    }
                }
            }
        }
        
tag.setLft(tagItem.getLft() + 2);
        
tag.setRgt(tagItem.getLft() + 3);
        if(
parentTagDestino.getLft() > parentTagOrigen.getLft()){
            
parentTagDestino.setLft(parentTagDestino.getLft() - 2);
            
parentTagOrigen.setRgt(parentTagOrigen.getRgt() - 2);
        } else if(
parentTagDestino.getLft() < parentTagOrigen.getLft()){
            
parentTagDestino.setRgt(parentTagDestino.getRgt() + 2);
            
parentTagOrigen.setLft(parentTagOrigen.getLft() + 2);
        }
    }
    
    private 
void updateBeforeTag(NTag tagNTag tagItemNTag parentTagOrigenNTag parentTagDestinoMap<IntegerNTagtagListCredencial credencialTransaction txnthrows AraException{
        if(
tag.getLft() > tagItem.getLft()){
            for(
NTag t tagList.values()){
                if(
parentTagOrigen == parentTagDestino){
                    if(
t.getLft() > tagItem.getLft() && t.getRgt() < tag.getRgt()){
                        
t.setLft(t.getLft() + 2);
                        
t.setRgt(t.getRgt() + 2);
                        
update(credencial,t,txn);
                    }
                } else {
                    if((
t.getLft() > tagItem.getLft() && t.getRgt() < parentTagDestino.getRgt() && != tag) || (t.getRgt() < tag.getRgt() && t.getLft() > parentTagOrigen.getLft() && != tag)){
                        
t.setLft(t.getLft() + 2);
                        
t.setRgt(t.getRgt() + 2);
                        
update(credencial,t,txn);
                    }
                }
            }
            
tag.setLft(tagItem.getLft());
            
tag.setRgt(tagItem.getRgt());
            
tagItem.setLft(tagItem.getLft() + 2);
            
tagItem.setRgt(tagItem.getRgt() + 2);
        } else {
            for(
NTag t tagList.values()){
                if(
parentTagOrigen == parentTagDestino){
                    if(
t.getLft() > tag.getLft() && t.getRgt() < tagItem.getRgt() && t.getIdtagvalor() != tag.getIdtagvalor()){
                        
t.setLft(t.getLft() -2);
                        
t.setRgt(t.getRgt() - 2);
                        
update(credencial,t,txn);
                    }
                } else {
                    if((
t.getRgt() < parentTagOrigen.getRgt() && t.getLft() > tag.getLft() && != tag) || (t.getLft() > parentTagDestino.getLft() && t.getLft() <= tagItem.getLft() && != tag)){
                        
t.setLft(t.getLft() -2);
                        
t.setRgt(t.getRgt() - 2);
                        
update(credencial,t,txn);
                    }
                }
            }
            
tag.setLft(tagItem.getLft() - 2);
            
tag.setRgt(tagItem.getRgt() - 2);
            if(
parentTagDestino.getLft() > parentTagOrigen.getLft()){
                
parentTagDestino.setLft(parentTagDestino.getLft() - 2);
                
parentTagOrigen.setRgt(parentTagOrigen.getRgt() - 2);
            } else if(
parentTagDestino.getLft() < parentTagOrigen.getLft()){
                
parentTagDestino.setRgt(parentTagDestino.getRgt() + 2);
                
parentTagOrigen.setLft(parentTagOrigen.getLft() + 2);
            }
        }
    }
    
    private 
void updateFeedBackTag(NTag tagNTag tagItemNTag parentTagOrigenNTag parentTagDestinoMap<IntegerNTagtagListCredencial credencialTransaction txnthrows AraException{
        if(
tag.getLft() > tagItem.getLft()){
            for(
NTag t tagList.values()){
                if(
t.getLft() > parentTagDestino.getLft() && t.getRgt() < tag.getRgt()){
                    if(
t.getLft() > tagItem.getLft()){
                        
t.setLft(t.getLft() + 2);
                        
t.setRgt(t.getRgt() + 2);
                        
update(credencial,t,txn);
                    }
                }
            }
            
tag.setLft(tagItem.getRgt());
            
tag.setRgt(tagItem.getRgt() + 1);
            
tagItem.setRgt(tagItem.getRgt() + 2);
        } else {
            for(
NTag t tagList.values()){
                if(
t.getLft() > parentTagDestino.getLft() && t.getRgt() < tagItem.getRgt() && t.getIdtagvalor() != tag.getIdtagvalor()){
                    
//if(t.getLft() > tagItem.getLft()){
                    
t.setLft(t.getLft() - 2);
                    
t.setRgt(t.getRgt() - 2);
                    
update(credencial,t,txn);
                    
//}
                
}
            }
            
tag.setLft(tagItem.getRgt() - 2);
            
tag.setRgt(tagItem.getRgt() - 1);
            
tagItem.setLft(tagItem.getLft() - 2);
        }
    } 


La solución completa para el hilo: aquí.