рдбреЗрдЯрд╛рдмреЗрд╕ рддрд░реНрдХ рд╡рд┐рднрд╛рдЧ (рдкреНрд░рдпрд╛рд╕ рдХреНрд░рдорд╛рдВрдХ 2)

рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдереЛрдбрд╝рд╛ рдЧрдбрд╝рдмрдбрд╝ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓рдЧрд╛рддрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЖрдЗрдП рд╣рдо рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреЗрдЬ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЙрд▓ рдХреЛрдб рдХреЛ рддрд┐рддрд░ рдмрд┐рддрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред

рд▓реЗрдХрд┐рди рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдмрд╛рдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо MongoDB рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

рдпрд╣рд╛рдБ рдореИрдВ рдХрд╛рдо рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░реВрдВрдЧрд╛:

рдПрдХ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ, рдЙрд╕реЗ DBData рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ 3 рддрд░реАрдХреЗ рд╣реЛрдВрдЧреЗ: рд▓реЛрдб, рд╕реЗрд╡, рдбрд┐рд▓реАрдЯред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ DBData рдЪрдХреНрдХрд░ рд╣реЛрдЧрд╛ред


рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдмрд╕ рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдкрд░ рдХрдИ рдореБрд╢реНрдХрд┐рд▓реЗрдВ рд╣реИрдВред рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдЕрдкрдбреЗрдЯ рдореЗрд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдЪрд░реНрдЪрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИред рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рд╕рддреНрдп рдиреЗ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рд▓рд┐рдпрд╛ред



рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░рдмрдВрдзрди рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИ - рд╡рд╣ рд╣рдорд╛рд░реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрдВ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЪрдордХрд╛рдиреЗ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рдЯрд╛рд╕реНрдХрдореИрдирд░
{
/// рд▓рд┐рдВрдХ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ
рдирд┐рдЬреА рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ
/// рд╣рдорд╛рд░реЗ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ MongoDB рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ
рдирд┐рдЬреА рдбреЗрдЯрд╛рдмреЗрд╕ currentDatabase ;
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ ( )
{
рдЗрдирд╕реНрдЯрд╛рдВрд╕ = рдпрд╣ ;
currentDatabase = рдирдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ ( ) ;
currentDatabaseред RunServer ( ) ;
}
/// рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдПрдХ рд╕реВрдЪрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ GetInstance ( )
{
рдпрд╣ рд╡рд╛рдкрд╕реА ;
}
/// рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ GetDatabase ( )
{
currentDatabase рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ ;
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп CloseDBServer ( )
{
рдЕрдЧрд░ ( currentDatabase ! = null )
{ currentDatabase рдХреНрд▓реЛрдЬрд╝рд░рд╡рд░ ( ) ; }
}
}


рдЕрдм MongoDB рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдбрд╛рдкреНрдЯрд░ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдЪрд┐рддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд░реВрдкреЛрдВ рдореЗрдВред

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рдбреЗрдЯрд╛рдмреЗрд╕
{
/// MongoDB рд╕рд░реНрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдирд┐рдЬреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ MongoDBProcess ;
/// MongoDB рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рдореЛрдВрдЧреЛ рдореЛрдВрдЧреЛ = рдирдпрд╛ рдореЛрдВрдЧреЛ ( ) ;
/// рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕
IMongoDatabase db ;

/// рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп RunServer ( )
{{ }
/// рд╕рд░реНрд╡рд░ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдХреНрд▓реЛрдЬрд╝рд░рд╡рд░ ( )
{{ }

/// рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ ID рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ DBData рд▓реЛрдб ( DBData argObject )
{
MethodInfo locMethodGetCollection = GetCollection ( argObject ) ;
var locCollection = locMethodGetCollectionред рдЖрд╣реНрд╡рд╛рди ( db, null ) ;
MethodInfo locMethodLoad = GetMethod ( locCollection, "FindOne" , 1 , "рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ" ) ;
рдСрдмреНрдЬреЗрдХреНрдЯ [ ] locArgs = { new { ID = argObjectред рдЖрдИрдбреА } } ;
рд╡рд╛рдкрд╕реА ( DBData ) locMethodLoadред рдЖрд╣реНрд╡рд╛рди ( locCollection, locArgs ) ;
}
/// рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реЗрд╡ рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕рд╣реЗрдЬреЗрдВ ( DBData argObject )
{
MethodInfo locMethodGetCollection = GetCollection ( argObject ) ;
var locCollection = locMethodGetCollectionред рдЖрд╣реНрд╡рд╛рди ( db, null ) ;
MethodInfo locMethodSave = GetMethod ( рд▓реЛрдХреЛрд▓рдХреНрд╢рди, "рд╕рд╣реЗрдЬреЗрдВ" , 1 , "рдСрдмреНрдЬреЗрдХреНрдЯ" ) ;
рдСрдмреНрдЬреЗрдХреНрдЯ [ ] locArgs = { argObject } ;
locMethodSaveред рдЖрд╣реНрд╡рд╛рди ( locCollection, locArgs ) ;
}
/// рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдЯрд╛рдПрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╣рдЯрд╛рдПрдВ ( DBData argObject )
{
MethodInfo locMethodGetCollection = GetCollection ( argObject ) ;
var locCollection = locMethodGetCollectionред рдЖрд╣реНрд╡рд╛рди ( db, null ) ;
MethodInfo locMethodDelete = GetMethod ( рд▓реЛрдХреЛрд▓рд┐рд▓реЗрд╢рди, "рд╣рдЯрд╛рдПрдВ" , 1 , "рдСрдмреНрдЬреЗрдХреНрдЯ" ) ;
рдСрдмреНрдЬреЗрдХреНрдЯ [ ] locArgs = { new { ID = argObjectред рдЖрдИрдбреА } } ;
locMethodDeleteред рдЖрд╣реНрд╡рд╛рди ( locCollection, locArgs ) ;
}

/// рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓рдВрдмреА рдЧрдгрдирд╛ ( DBData argObject )
{
MethodInfo locMethodGetCollection = GetCollection ( argObject ) ;
var locCollection = locMethodGetCollectionред рдЖрд╣реНрд╡рд╛рди ( db, null ) ;
MethodInfo locMethodCount = GetMethod ( рд▓реЛрдХреЛрд▓рдХреНрд╢рди, "рдХрд╛рдЙрдВрдЯ" ) ;
рд╡рд╛рдкрд╕реА ( рд▓рдВрдмреЗ ) locMethodCountред рдЖрд╣реНрд╡рд╛рди ( рд▓реЛрдХреЛрд▓рд┐рд▓реЗрд╢рди, рдЕрд╢рдХреНрдд ) ;
}

/// рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрд░реЗрд▓реЗрд╕реНрдЯ рд▓реЛрдбрдЕрд▓рд╛рдЗрдб ( DBData argObject )
{
MethodInfo locMethodGeneric = InstantiationLoadAllID ( argObject ) ;
рдСрдмреНрдЬреЗрдХреНрдЯ [ ] locArgs = { argObject } ;
рд╡рд╛рдкрд╕реА ( ArrayList ) locMethodGenericред рдЖрд╣реНрд╡рд╛рди ( рдпрд╣ , locArgs ) ;
}

/// рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдирд┐рдЬреА ArrayList LoadAllID < T > ( DBData argObject ) рдЬрд╣рд╛рдВ T : DBData рд╣реИ
{
ArrayList retArray = рдирдпрд╛ ArrayList ( ) ;
MethodInfo locMethodGetCollection = GetCollection ( argObject ) ;
var locCollection = locMethodGetCollectionред рдЖрд╣реНрд╡рд╛рди ( db, null ) ;

MethodInfo locMethodFindAll = GetMethod ( locCollection, "FindAll" ) ;
ICursor < T > locCursor = locMethodFindAllред ICursor < T > рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ ( рд▓реЛрдХреЛрд▓рд┐рд▓реЗрд╢рди, рдирд▓ ) ;

foreach ( DBData d in locCursorред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ )
{ рд░рд┐рдЯрд╛рдпрд░ред рдЬреЛрдбрд╝реЗрдВ ( рдбреАред рдЖрдИрдбреА ) ; }
рд╡рд╛рдкрд╕реА рд╡рд╛рдкрд╕реА ;
}

рдирд┐рдЬреА MethodInfo GetCollection ( рдСрдмреНрдЬреЗрдХреНрдЯ argObject )
{
MethodInfo locMethodGetCollectionGeneric = null ;

рдкреНрд░рдХрд╛рд░ рдЯрд╛рдЗрдк рдХрд░реЗрдВ = рдЯрд╛рдЗрдкреЛ ( IMongoDatabase ) ;
MethodInfo [ ] myMethod = locTypeред рдЧреЗрдЯрдореЗрдереЛрдбреНрд╕ ( ) ;
foreach ( рдореЗрдереЗрдореЗрдЯ рдореЗрдВ MethodInfo m )
{
рдЕрдЧрд░ ( mред name == "GetCollection" )
{
ParameterInfo [ ] рдкреА = рдПрдоред GetParameters ( ) ;
рдпрджрд┐ ( mред ReturnType ред IsGenericType && piред рд▓рдВрдмрд╛рдИ == 0 )
{
locMethodGetCollectionGeneric = m ;
рддреЛрдбрд╝рдирд╛ ;
}
}
}
рдкреНрд░рдХрд╛рд░ locObjectType = argObjectред GetType ( ) ;
рдЯрд╛рдЗрдк [ ] locTypeArgs = { locObjectType } ;
locMethodGetCollectionGeneric рд▓реМрдЯреЗрдВред MakeGenericMethod ( locTypeArgs ) ;
}

рдирд┐рдЬреА MethodInfo InstantiationLoadAllID ( рдСрдмреНрдЬреЗрдХреНрдЯ argObject )
{
MethodInfo locMethodGeneric = рдЕрд╢рдХреНрдд ;
рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк = рдЯрд╛рдЗрдкреЛрдлрд╝ ( рдбреЗрдЯрд╛рдмреЗрд╕ ) ;
MethodInfo [ ] locMethod = locTypeред GetMethods ( BindingFlagsред NonPublic | BindingFlagsред рдЗрдВрд╕реНрдЯреЗрдВрд╕ )
foreach ( рдореЗрдереЗрдореЗрдЯреЛ рдореЗрдВ рдореЗрдердЗрдирдлреЛ рдореА )
{
рдЕрдЧрд░ ( рдПрдоред рдирд╛рдо == "рд▓реЛрдбрдПрд▓рд╛рдЗрдб" )
{
ParameterInfo [ ] рдкреА = рдПрдоред GetParameters ( ) ;
рдпрджрд┐ ( mред рдЗрд╕реНрдЧреЗрдиреЗрд░рд┐рдХрдореЗрдереЛрдб && piред рд▓рдВрдмрд╛рдИ == 1 )
{
locMethodGeneric = m ;
рддреЛрдбрд╝рдирд╛ ;
}
}
}
рдкреНрд░рдХрд╛рд░ locObjectType = argObjectред GetType ( ) ;
рдЯрд╛рдЗрдк [ ] locTypeArgs = { locObjectType } ;
locMethodGeneric рд▓реМрдЯреЗрдВред MakeGenericMethod ( locTypeArgs ) ;
}

рдирд┐рдЬреА MethodInfo GetMethod ( рдСрдмреНрдЬреЗрдХреНрдЯ argObject, рд╕реНрдЯреНрд░рд┐рдВрдЧ argMethodName )
{
рд╡рд╛рдкрд╕реА GetMethod ( argObject, argMethodName, 0 , null ) ;
}

рдирд┐рдЬреА MethodInfo GetMethod ( рдСрдмреНрдЬреЗрдХреНрдЯ argObject, string argMethodName, int argParamCount, string artTypeP1 )
{
MethodInfo locMethod = рдЕрд╢рдХреНрдд ;

рдкреНрд░рдХрд╛рд░ рдЯрд╛рдЗрдк рдХрд░реЗрдВ = argObjectред GetType ( ) ;
MethodInfo [ ] locMethods = locTypeред рдЧреЗрдЯрдореЗрдереЛрдбреНрд╕ ( ) ;
foreach ( MethodInfo m in locMethods )
{
рдЕрдЧрд░ ( рдПрдоред рдирд╛рдо == argMethodName )
{
ParameterInfo [ ] рдкреА = рдПрдоред GetParameters ( ) ;
рдЕрдЧрд░ ( рдкреАред рд▓рдВрдмрд╛рдИ == argParamCount )
{
рдЕрдЧрд░ ( рдкреАред рд▓рдВрдмрд╛рдИ == 1 )
{
рдЕрдЧрд░ ( pi [ 0 ] ред ParameterType ред Name ! = artTypeP1 )
{ рдЬрд╛рд░реА ; }
}
locMethod = m ;
рддреЛрдбрд╝рдирд╛ ;
}
}
}
рд▓реЛрдХреЗрдордереЛрдб рд▓реМрдЯреЗрдВ ;
}
}


рд▓реЗрдХрд┐рди рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдПрдбреЗрдкреНрдЯрд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореВрд▓ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдмрдЪрд╛рдпрд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореВрд▓ рд╡рд░реНрдЧ рд╣реИ:

рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ DBData
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯ рдЖрдИрдбреА ;
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ DBData ( )
{ }

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ DBData ( int argID )
{ ID = argID ; }

рдирд┐рдЬреА рдбреЗрдЯрд╛рдмреЗрд╕ GetDB ( )
{
рдЯрд╛рд╕реНрдХрдореИрдирдЬрд░ рдХреЛ рд▓реМрдЯрд╛рдПрдВ ред GetInstance ( ) ред рдЧреЗрдЯрдбрд╛рдмреЗрд╕ ( ) ;
}

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ int рдЧрдгрдирд╛ ( )
{
рд╡рд╛рдкрд╕реА ( int ) рдЧреЗрдЯрдмреАрдбреА ( ) ред рдЧрд┐рдирддреА ( рдпрд╣ ) ;
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕рд╣реЗрдЬреЗрдВ ( )
{
GetDB ( ) ред рдмрдЪрд╛рдУ ( рдпрд╣ ) ;
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╣рдЯрд╛рдПрдВ ( )
{
GetDB ( ) ред рд╣рдЯрд╛рдПрдВ ( рдпрд╣ ) ;
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд╕реНрддреБ рд▓реЛрдб ( )
{
рд░рд┐рдЯрд░реНрди рдЧреЗрдЯрдмреАрдбреА ( ) ред рд▓реЛрдб ( рдпрд╣ ) ;
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ArrayList LoadAllID ( )
{
рд░рд┐рдЯрд░реНрди рдЧреЗрдЯрдмреАрдбреА ( ) ред рд▓реЛрдбрдПрд▓рд╛рдЗрдб ( рдпрд╣ ) ;
}
}


рдЕрдЧрд▓рд╛, рд╡рд╛рд░рд┐рд╕ рдмрдирд╛рдПрдВ:

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рд░рдгрдиреАрддрд┐рдпрд╛рдБ : DBData
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо ;

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рдгрдиреАрддрд┐рдпрд╛рдБрдбреЗрдЯрд╛ ( ) : рдЖрдзрд╛рд░ ( )
{ }

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рдгрдиреАрддрд┐рдпрд╛рдБрдбреЗрдЯрд╛ ( int argID ) : рдЖрдзрд╛рд░ ( argID )
{ }

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рдгрдиреАрддрд┐рдпрд╛рдБрдбрддрд╛ ( int argID, рд╕реНрдЯреНрд░рд┐рдВрдЧ argName )
{
ID = argID ;
рдирд╛рдо = argName ;
}
}


рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдердорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:

рд░рдгрдиреАрддрд┐рдпрд╛рдБрдбреЗрдЯрд╛ рдПрд╕рдбреА = рдирдИ рд░рдгрдиреАрддрд┐рдпрд╛рдБрдбрд╛рдЯрд╛ ( 1 , "рдЯреЗрд╕реНрдЯ 1 " ) ;
рдПрд╕рдбреАред рдмрдЪрд╛рдУ ( ) ;



рдФрд░ рдкрд╕рдВрдж рд╣реИред рдХреНрдпрд╛ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)

рдпреБрдкреАрдбреАред рдпрд╣рд╛рдВ рдореИрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рдлреЗрдВрдХ рджреВрдВрдЧрд╛ рдЬреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдмреЗрд╕реЛрдВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ (рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд╛рдирджрд╛рд░ рд╣реИрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ)

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рдбреЗрдЯрд╛рдмреЗрд╕
{

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ DBData рд▓реЛрдб ( DBData argObject )
{ }
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ рд╢реВрдиреНрдп рд╕рд╣реЗрдЬреЗрдВ ( DBData argObject )
{ }
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рд╛рд░ рд╢реВрдиреНрдп рд╣рдЯрд╛рдПрдВ ( DBData argObject )
{ }
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ MongoDb : рдбреЗрдЯрд╛рдмреЗрд╕
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ DBData рд▓реЛрдб ( DBData argObject )
{ }
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕рд╣реЗрдЬреЗрдВ ( DBData argObject )
{ }
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╣рдЯрд╛рдПрдВ ( DBData argObject )
{ }
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ AnyDb : рдбреЗрдЯрд╛рдмреЗрд╕
{
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ DBData рд▓реЛрдб ( DBData argObject )
{ }
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╕рд╣реЗрдЬреЗрдВ ( DBData argObject )
{ }
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рд╣рдЯрд╛рдПрдВ ( DBData argObject )
{ }
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рдЯрд╛рд╕реНрдХрдореИрдирд░
{
рдирд┐рдЬреА рдбреЗрдЯрд╛рдмреЗрд╕ currentDatabase ;
/// рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ GetDatabase ( )
{
currentDatabase рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ ;
}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп ChangeDB ( )
{
рдпрджрд┐ ( рдорд╛рдирдЧреЛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ )
{
currentDatabase = рдирдпрд╛ MongoDb ( )
}
рдЕрдЧрд░ ( рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЬрдм рдХреЛрдИ рдЕрдиреНрдп )
{
currentDatabase = рдирдпрд╛ AnyDb ( )
}
}
}

Source: https://habr.com/ru/post/In144645/


All Articles