Code Search for Developers
 
 
  

SessionHandleAdapter.java from BIRT at Krugle


Show SessionHandleAdapter.java syntax highlighted

/*******************************************************************************
 * Copyright (c) 2004 Actuate Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *  Actuate Corporation  - initial API and implementation
 *******************************************************************************/

package org.eclipse.birt.report.designer.core.model;

import java.io.InputStream;
import java.util.Iterator;
import java.util.Map;
import java.util.WeakHashMap;

import org.eclipse.birt.report.designer.core.util.mediator.ReportMediator;
import org.eclipse.birt.report.designer.util.DEUtil;
import org.eclipse.birt.report.model.api.CommandStack;
import org.eclipse.birt.report.model.api.DesignConfig;
import org.eclipse.birt.report.model.api.DesignEngine;
import org.eclipse.birt.report.model.api.DesignFileException;
import org.eclipse.birt.report.model.api.MasterPageHandle;
import org.eclipse.birt.report.model.api.ModuleHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.SimpleMasterPageHandle;
import org.eclipse.birt.report.model.api.SlotHandle;
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.command.ContentException;
import org.eclipse.birt.report.model.api.command.NameException;
import org.eclipse.birt.report.model.api.core.DisposeEvent;
import org.eclipse.birt.report.model.api.core.IDisposeListener;
import org.eclipse.birt.report.model.api.metadata.IMetaDataDictionary;

import com.ibm.icu.util.ULocale;

/**
 * Adapter class to adpat model handle. This adapter provides convenience
 * methods to GUI requirement SessionHandleAdapter responds to model
 * SessionHandle
 * 
 */

/**
 * @author Actuate
 *
 */
public class SessionHandleAdapter
{

	public static final int UNKNOWFILE = -1;
	public static int DESIGNEFILE = 0;
	public static int LIBRARYFILE = 1;
	public static int TEMPLATEFILE = 2;

	private int type = DESIGNEFILE;
	IDisposeListener disposeLitener = new IDisposeListener( ) {

		public void moduleDisposed( ModuleHandle targetElement, DisposeEvent ev )
		{
			ReportMediator media = (ReportMediator) mediatorMap
					.get( targetElement );
			if ( media != null )
			{
				media.dispose( );
			}
			mediatorMap.remove( targetElement );
			targetElement.removeDisposeListener( this );
		}
	};

	// add field support mediator
	private Map mediatorMap = new WeakHashMap( );

	/**
	 * constructor Mark it to private to avoid new opeartion.
	 */
	private SessionHandleAdapter( )
	{

	}

	/**
	 * Get file type
	 * @return
	 *  File type
	 */
	public int getFileType( )
	{
		return type;
	}

	private static SessionHandleAdapter sessionAdapter;

	private SessionHandle sessionHandle;
	private ModuleHandle model;

	/**
	 * Gets singleton instance method
	 * 
	 * @return return SessionHandleAdapter instance
	 */

	public static SessionHandleAdapter getInstance( )
	{
		if ( sessionAdapter == null )
		{
			sessionAdapter = new SessionHandleAdapter( );
		}
		return sessionAdapter;
	}

	/**
	 * Get session handle
	 * @return Session handle
	 */

	public SessionHandle getSessionHandle( )
	{
		if ( sessionHandle == null )
		{
			sessionHandle = new DesignEngine( new DesignConfig( ) )
			.newSessionHandle( ULocale.getDefault( ) );
		}
		return sessionHandle;
	}

	/**
	 * Open a design/library file.
	 * @param fileName
	 * 	The file name
	 * @param input
	 *   The input stream
	 * @throws DesignFileException
	 */
	public ModuleHandle init( String fileName, InputStream input,Map properties) throws DesignFileException
	{
		ModuleHandle handle = init(fileName,input);
		
		postInit( handle,properties );
		setReportDesignHandle(handle);
		return handle;
	}
	
	
	/**
	 * Open a design/library file.
	 * @param fileName
	 * 	The file name
	 * @param input
	 *   The input stream
	 * @throws DesignFileException
	 */
	public ModuleHandle init( String fileName, InputStream input) throws DesignFileException
	{
		ModuleHandle handle = null;
		handle = getSessionHandle( ).openModule( fileName, input );
		
		postInit( handle ,null);
		setReportDesignHandle(handle);
		return handle;
	}

	/**
	 * @param handle
	 * 	The moudle handle
	 * @param properties
	 * 	The properties
	 */
	private void postInit( ModuleHandle handle ,Map properties)
	{
		if(properties!= null && !properties.isEmpty( ))
		{
			String createInfo = model.getCreatedBy( );

			if ( createInfo == null || createInfo.length( ) == 0 )
			{
				try
				{
					handle.initializeModule( properties );
				}
				catch ( SemanticException e )
				{
					//ignore
				}
			}
		}
		SimpleMasterPageHandle masterPage = null;
		if ( handle.getMasterPages( ).getCount( ) == 0 )
		{
			masterPage = handle.getElementFactory( ).newSimpleMasterPage(null); //$NON-NLS-1$
			try
			{
				handle.getMasterPages( ).add( masterPage );
			}
			catch ( ContentException e )
			{
				new DesignFileException( handle.getFileName( ), e );
			}
			catch ( NameException e )
			{
				new DesignFileException( handle.getFileName( ), e );
			}
		}
	}

	/**
	 * Create report design instance
	 * 
	 * @return created report design instance
	 */
	public ModuleHandle creatReportDesign( )
	{
		return getSessionHandle( ).createDesign( );
	}

	/**
	 * @deprecated
	 * @return wrapped report design handle.
	 */
	public ModuleHandle getReportDesignHandle( )
	{
		return model;
	}

	 /**
		 * Sets report design.
		 * 
		 * @param handle
		 *            the model
		 */
	public void setReportDesignHandle( ModuleHandle handle )
	{
		model = handle;

	}

	/**
	 * @deprecated
	 * @return Command stack of current session.
	 */
	public CommandStack getCommandStack( )
	{
		if ( getReportDesignHandle( ) != null )
		{
			return getReportDesignHandle( ).getCommandStack( );
		}

		return null;
	}

	/**
	 * @deprecated
	 * Gets the first MasterPageHandle
	 * 
	 */
	public MasterPageHandle getMasterPageHandle( )
	{
		return getMasterPageHandle( getReportDesignHandle( ) );
	}

	/**
	 * @deprecated
	 * Gets the first MasterPageHandle
	 * 
	 * @param handle
	 * @return
	 */
	public MasterPageHandle getMasterPageHandle( ModuleHandle handle )
	{
		SlotHandle slotHandle = handle.getMasterPages( );
		Iterator iter = slotHandle.iterator( );
		return (MasterPageHandle) iter.next( );
	}

	/**
	 * 
	 * @param handle
	 *            the model
	 * @return get corresponding mediator
	 */
	public ReportMediator getMediator( ModuleHandle handle )
	{
		if ( handle != null )
		{
			handle.addDisposeListener( disposeLitener );
		}
		ReportMediator mediator = (ReportMediator) mediatorMap.get( handle );
		if ( mediator == null )
		{
			mediator = new ReportMediator( );
			mediatorMap.put( handle, mediator );
		}
		return mediator;
	}

	/**
	 * @return the current mediator
	 */
	public ReportMediator getMediator( )
	{
		return getMediator( getReportDesignHandle( ) );
	}

	/**
	 * @param oldObj
	 *            old model
	 * @param newObj
	 *            new model
	 */
	public void resetReportDesign( Object oldObj, Object newObj )
	{
		ReportMediator mediator = (ReportMediator) mediatorMap.get( oldObj );
		if ( mediator == null )
		{
			return;
		}
		mediatorMap.remove( oldObj );
		mediatorMap.put( newObj, mediator );
	}
	
	/**
	 *  Clear the specified module handle
	 * @param handle
	 * 	The module handle
	 */
	public void clear(ModuleHandle handle )
	{
		mediatorMap.remove( handle );
		if(handle == getReportDesignHandle( ))
		{
			setReportDesignHandle( null );
		}
	}
}



See more files for this project here

BIRT

BIRT is an open source, Eclipse-based reporting system that integrates with your application to produce compelling reports for both web and PDF.

Project homepage: http://www.eclipse.org/birt/phoenix/
Programming language(s): Java,XML
License: gpl2

  schematic/
    AutoTextHandleAdapter.java
    CellHandleAdapter.java
    ColumnHandleAdapter.java
    DataItemHandleAdapter.java
    GridHandleAdapter.java
    HandleAdapterFactory.java
    ImageHandleAdapter.java
    LabelHandleAdapter.java
    ListBandProxy.java
    ListHandleAdapter.java
    RowHandleAdapter.java
    TableGroupHandleAdapter.java
    TableHandleAdapter.java
    TextDataHandleAdapter.java
    TextItemHandleAdapter.java
    package.html
  views/
    data/
      DataSetItemModel.java
      DataSetSchemaModel.java
      package.html
    outline/
      EmbeddedImageNode.java
      LibraryNode.java
      ReportElementModel.java
      package.html
    property/
      PropertySheetRootElement.java
      package.html
  DesignElementHandleAdapter.java
  ExtendedItemHandleAdapter.java
  IModelAdapterHelper.java
  ITableAdapterHelper.java
  LibRootModel.java
  LibraryHandleAdapter.java
  ReportDesignHandleAdapter.java
  ReportItemtHandleAdapter.java
  SessionHandleAdapter.java
  package.html