Bug 188837 Modify the datetime type dimension's level in cube will lead NPE when show and hide level in crosstab[1102]
Description: Modify the datetime type dimension's level in cube will lead NPE when show and hide level in crosstab[1102] Build number: 2.2.0.v20070524-0630 Steps to reproduce: 1, New a cube with a dimension d1: year->quarter->month->week-of-month 2, New a crosstab using the cube and levels 3, Show all the levels in crosstab 4, Modify the d1 to: quarter->month 5, Turn to crosstab and modify the show/hide levels Expected result: The level can be modified without exceptions Actual result: NPE occurs and crosstab can not be deleted Errors log: java.lang.NullPointerException at org.eclipse.birt.report.item.crosstab.internal.ui.editors.action.AddLevelHandleAction.run(AddLevelHandleAction.java:84) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:545) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3673) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
xtab/org.eclipse.birt.report.item.crosstab.ui/src/org/eclipse/birt/report/item/crosstab/internal/ui/editors/action/AddLevelHandleAction.java
{
			rollBack( );
			ExceptionHandler.handle( e );
			return;
		}
		transEnd( );
	}
	private void processor(List ori, List newList)throws SemanticException
	{
		for (int i=0; i<ori.size( ); i++)
		{
			LevelHandle tempHandle = (LevelHandle)ori.get(i );
			if (!newList.contains( tempHandle ))
			{
				viewHandle.removeLevel( tempHandle.getQualifiedName( ) );
			}
		}
		
		Collections.sort( newList, new LevelComparator() );
		for (int i=0; i<newList.size( ); i++)
		{
			LevelHandle tempHandle = (LevelHandle)newList.get(i );
			if (viewHandle.getLevel( tempHandle.getQualifiedName( ) ) == null)
			{
				insertLevelHandle( tempHandle,i);
			}
		}
	}
	
	private static class LevelComparator implements Comparator