Get a session by persistence unit name instead by class type

Description

Sometimes we need create a Session by persistence unit name instead by class type, so we can have the same class mapped in several diferent database even in different database engine (Oracle, mssql server,etc.) with the same design.

To support that I included some modification in source files:

BurrowFramework.cs:
/// <summary>
/// Numero método incluido para Framework
/// </summary>
/// <param name="configurationId"></param>
/// <returns></returns>
public ISessionFactory GetSessionFactoryByName(string configurationId)
{
if (PersistenceUnitRepo.Instance == null)
PersistenceUnitRepo.Initialize(BurrowEnvironment.Configuration);
return PersistenceUnitRepo.Instance.GetPUByName(configurationId).SessionFactory;
}
/// <summary>
/// Oscar Orduz.
/// </summary>
/// <param name="configurationId"></param>
/// <returns></returns>
public ISession GetSessionByName(string configurationId)
{
AbstractConversation c = ((AbstractConversation)CurrentConversation);
return c.GetSessionByName(configurationId);
}

AbstractConversation.cs

/// <summary>
/// Oscar Orduz
/// </summary>
/// <param name="configurationId"></param>
/// <returns></returns>
public ISession GetSessionByName(string configurationId)
{
SessionManager sm = string.IsNullOrEmpty(configurationId) ? GetSessionManager() : GetSessionManagerByName(configurationId);
return GetSession(sm);
}
/// <summary>
/// Método creado para el manejo de la sesión para el framework de PS
/// </summary>
/// <param name="configurationId"></param>
/// <returns></returns>
internal SessionManager GetSessionManagerByName(string configurationId)
{
return sessManagers[PersistenceUnitRepo.Instance.GetPUByName(configurationId)];
}

PersistenceUnitRepo.cs
/// <summary>
/// Método creado para la recuperación por nombre
/// </summary>
/// <param name="configurationId"></param>
/// <returns></returns>
public PersistenceUnit GetPUByName(string configurationId)
{
if (PersistenceUnits.Count == 1)
{
return PersistenceUnits[0];
}
foreach (PersistenceUnit pu in persistenceUnits)
{
if (pu.Name == configurationId)
{
return pu;
}
}

throw new GeneralException("Persistence Unit cannot be found for " + configurationId);
}

Environment

None

Activity

Fixed

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

Who's Looking?

Open Who's Looking?
Created December 19, 2008 at 3:34 PM
Updated January 24, 2009 at 2:04 PM
Resolved January 24, 2009 at 2:04 PM
Who's Looking?