/*
* Created on 18/08/2003
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package sce.list;
/**
* @author TOSHIBA
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public aspect OrderingDListImplAspect {
pointcut ordem():execution(DNode DListImpl.insertLast(Object));
DNode around() : ordem() {
Object[] argm = thisJoinPoint.getArgs();
return ((DListImpl)thisJoinPoint.getThis()).insertLast(argm[0],0);
}
public DNode DListImpl.insertLast(Object parObject,int order) {
int position = 0;
DNodeImpl toInsert=null;
DNode navigator=null;
if(!this.isEmpty()){
navigator=this.header;
}
toInsert = new DNodeImpl(parObject,null,null);
toInsert.setOrder(order);
if(this.isEmpty()){
this.insertFirst(toInsert);
}else if((order > navigator.getNext().getOrder())){
toInsert.setNext(navigator.getNext());
toInsert.setPrevious(navigator);
navigator.getNext().setPrevious(toInsert);
navigator.setNext(toInsert);
this.size++;
}else{
boolean ins = false;
while(navigator.getNext()!=this.tailer){
navigator = navigator.getNext();
if(order>navigator.getOrder()){
toInsert.setNext(navigator);
toInsert.setPrevious(navigator.getPrevious());
navigator.getPrevious().setNext(toInsert);
navigator.setPrevious(toInsert);
this.size++;
ins=true;
break;
}
}
if(!ins){
toInsert.setNext(navigator.getNext());
toInsert.setPrevious(navigator);
navigator.getNext().setPrevious(toInsert);
navigator.setNext(toInsert);
this.size++;
}
}
return(toInsert);
}
}