Package nexj.core.meta.persistence

Source Code of nexj.core.meta.persistence.DataSourceType

// Copyright 2010 NexJ Systems Inc. This software is licensed under the terms of the Eclipse Public License 1.0
package nexj.core.meta.persistence;

import java.util.Iterator;

import nexj.core.meta.Metadata;
import nexj.core.meta.MetadataException;
import nexj.core.meta.MetadataLookupException;
import nexj.core.meta.NamedMetadataObject;
import nexj.core.util.LinkedHashTab;
import nexj.core.util.Lookup;

/**
* Describes the data source type.
*/
public class DataSourceType extends NamedMetadataObject
{
   // attributes
  
   /**
    * The persistence flag.
    */
   protected boolean m_bPersistent;

   // associations

   /**
    * The metadata container.
    */
   protected Metadata m_metadata;

   /**
    * The persistence metadata loader class.
    */
   protected Class m_loader;

   /**
    * The persistence metadata exporter class.
    */
   protected Class m_exporter;

   /**
    * The data source adapter map: DataSourceAdapter[String].
    */
   protected Lookup m_adapterMap = new LinkedHashTab(4);

   // constructors
  
   /**
    * Constructs the data source type.
    * @param sName The data source type name.
    */
   public DataSourceType(String sName)
   {
      super(sName);
   }

   // operations
  
   /**
    * Sets the metadata container.
    * @param metadata The metadata container to set.
    */
   public void setMetadata(Metadata metadata)
   {
      verifyNotReadOnly();
      m_metadata = metadata;
   }

   /**
    * @return The metadata container.
    */
   public Metadata getMetadata()
   {
      return m_metadata;
   }

   /**
    * Sets the persistence metadata loader class.
    * @param loader The persistence metadata loader class to set.
    */
   public void setLoader(Class loader)
   {
      verifyNotReadOnly();
      m_loader = loader;
   }

   /**
    * @return The persistence metadata loader class.
    */
   public Class getLoader()
   {
      return m_loader;
   }
  
   /**
    * Sets the persistence metadata exporter class.
    * @param exporter The persistence metadata exporter class to set.
    */
   public void setExporter(Class exporter)
   {
      verifyNotReadOnly();
      m_exporter = exporter;
   }

   /**
    * @return The persistence metadata exporter class.
    */
   public Class getExporter()
   {
      return m_exporter;
   }
  
   /**
    * Adds a new data source adapter to the data source type.
    * @param adapter The data source adapter to add.
    * @throws MetadataException if a data source adapter
    * with the same name already exists.
    */
   public void addAdapter(DataSourceAdapter adapter)
   {
      verifyNotReadOnly();

      Object oldAdapter = m_adapterMap.put(adapter.getName(), adapter);

      if (oldAdapter != null)
      {
         m_adapterMap.put(adapter.getName(), oldAdapter);

         throw new MetadataException("err.meta.adapterDup", new Object[]
         {
            adapter.getName(),
            getName()
         });
      }

      adapter.setType(this);
   }

   /**
    * Gets a data source adapter by name.
    * @param sName The data source adapter name.
    * @return The data source adapter object.
    * @throws MetadataLookupException if the data source adapter does not exist.
    */
   public DataSourceAdapter getAdapter(String sName)
   {
      DataSourceAdapter adapter = (DataSourceAdapter) m_adapterMap.get(sName);

      if (adapter != null)
      {
         return adapter;
      }

      throw new MetadataLookupException("err.meta.adapterLookup", sName, this);
   }

   /**
    * @return The data source adapter count.
    */
   public int getAdapterCount()
   {
      return m_adapterMap.size();
   }

   /**
    * @return An iterator for the contained data source adapter objects.
    */
   public Iterator getAdapterIterator()
   {
      return m_adapterMap.valueIterator();
   }
}
TOP

Related Classes of nexj.core.meta.persistence.DataSourceType

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.