Initializing Core
Every application when it starts they need to first initialize Core. This can be done by invoking initialize API of Android:siminov.core.Siminov | iOS:SICSiminov | Windows:Siminov.Core.Siminov class by passing required parameters to the method.
There are two ways to initialize Core on Android.
public class ApplicationSiminov extends Application {
public void onCreate() {
super.onCreate();
initializeSiminov();
}
private void initializeSiminov() {
IInitializer initializer = siminov.core.Siminov.initialize();
initializer.addParameter(this);
initializer.start();
}
}
Note
- Android provides support in every application to create an application wide class. The base class for this is the android.app.Application class.
public class HomeActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
initializeSiminov();
}
private void initializeSiminov() {
IInitializer initializer = siminov.core.Siminov.initialize();
initializer.addParameter(getApplicationContext());
initializer.start();
}
}
Note
- If you are initializing Core from activity sub class then you should pass application context not the activity context. See above example.
Note
Application should call siminov.core.Siminov initialize only once in the life time of application.
Once Core is initialized it can not be re-initialized.
siminov.core.Siminov.initialize() API returns IInitializer interface implemented class through which we can pass parameters needed by Siminov Framework to work functionally.
public interface IInitializer {
public void addParameter(Object object);
public void start();
}
id<SICIInitializer> initializer = [SICSiminov initializer];
[initializer initialize];
[SICSiminov initializer] API returns SICIInitializer interface through which we can pass parameters needed by Siminov Framework to work functionally.
@protocol SICIInitializer <NSObject>
- (void)addParameter:(id)object;
- (void)initialize;
@end
Note
Application should call SICSiminov initialize only once in the life time of application.
Once Core is initialized it can not be re-initialized.
sealed partial class App : Application
{
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
new Siminov.Core.Sample.Siminov().InitializeSiminov();
}
}
Siminov.Core.Siminov.Initialize() API returns IInitializer interface implemented class through which we can pass parameters needed by Siminov Framework to work functionally.
public interface IInitializer
{
void AddParameter(Object object);
void Start();
}
Note
- Windows provides support in every application to create an application wide class. The base class for this is the Windows.UI.Xaml.Application class.
Note
Application should call Siminov.Core.Siminov initialize only once in the life time of application.
Once Core is initialized it can not be re-initialized.
Siminov provides Initialization Layer which handles the creation of databases required by application. Siminov follows below steps to create databases required by application.
-
Step 1: Then application invokes initialize method, it checks whether database exists or not.
-
Step 2: If application database does not exists, Core will create database required by the application.
-
Step 3: If application database exists, then it will read all descriptors defined by application based on load initially property defined in ApplicationDescriptor.xml file.
Any resource created by siminov framework is places in resource layer of siminov. You can use API's provided by Resources class to get required object.
public final class ResourceManager {
public static ResourceManager getInstance();
public Context getApplicationContext();
public void setApplicationContext(final Context context);
public ApplicationDescriptor getApplicationDescriptor();
public void setApplicationDescriptor(final ApplicationDescriptor applicationDescriptor);
public Iterator<String> getDatabaseDescriptorPaths();
public DatabaseDescriptor getDatabaseDescriptorBasedOnPath(final String databaseDescriptorPath);
public DatabaseDescriptor getDatabaseDescriptorBasedOnName(final String databaseDescriptorName);
public Iterator<DatabaseDescriptor> getDatabaseDescriptors();
public DatabaseDescriptor getDatabaseDescriptorBasedOnClassName(final String className);
public String getDatabaseDescriptorNameBasedOnClassName(final String className);
public DatabaseDescriptor getDatabaseDescriptorBasedOnTableName(final String tableName);
public String getDatabaseDescriptorNameBasedOnTableName(final String tableName);
public EntityDescriptor getEntityDescriptorBasedOnClassName(final String className);
public EntityDescriptor getEntityDescriptorBasedOnTableName(final String tableName);
public Iterator<EntityDescriptor> getEntityDescriptors();
public EntityDescriptor requiredEntityDescriptorBasedOnClassName(final String className);
public DatabaseBundle getDatabaseBundle(final String databaseName);
public Iterator<DatabaseBundle> getDatabaseBundles();
public void removeDatabaseBundle(final String databaseDescriptorName);
public ISiminovEvents getSiminovEventHandler();
public IDatabaseEvents getDatabaseEventHandler();
}
@interface SICResourceManager : NSObject {
}
+ (SICResourceManager*)getInstance;
- (SICApplicationDescriptor *)getApplicationDescriptor;
- (void)setApplicationDescriptor:(SICApplicationDescriptor * const)applicationDescriptorInstance;
- (NSEnumerator *)getDatabaseDescriptorPaths;
- (SICDatabaseDescriptor *)getDatabaseDescriptorBasedOnPath:(NSString *)databaseDescriptorPath;
- (SICDatabaseDescriptor *)getDatabaseDescriptorBasedOnName:(NSString *)databaseDescriptorName;
- (NSEnumerator *)getDatabaseDescriptors;
- (SICDatabaseDescriptor *)getDatabaseDescriptorBasedOnClassName:(NSString *)className;
- (SICDatabaseDescriptor *)getDatabaseDescriptorBasedOnTableName:(NSString *)tableName;
- (NSString *)getDatabaseDescriptorNameBasedOnTableName:(NSString *)tableName;
- (SICEntityDescriptor *)getEntityDescriptorBasedOnClassName:(NSString * const)className;
- (SICEntityDescriptor *)getEntityDescriptorBasedOnTableName:(NSString * const)tableName;
- (NSEnumerator *)getEntityDescriptors;
- (SICEntityDescriptor *)requiredEntityDescriptorBasedOnClassName:(NSString * const)className;
- (SICDatabaseBundle *)getDatabaseBundle:(NSString * const)databaseName;
- (NSEnumerator *)getDatabaseBundles;
- (void)removeDatabaseBundle:(NSString * const)databaseDescriptorName;
- (id<SICISiminovEvents>)getSiminovEventHandler;
- (id<SICIDatabaseEvents>)getDatabaseEventHandler;
@end
public class ResourceManager
{
static ResourceManager GetInstance();
ApplicationDescriptor GetApplicationDescriptor();
void SetApplicationDescriptor(ApplicationDescriptor applicationDescriptor);
IEnumerator<String> GetDatabaseDescriptorPaths();
DatabaseDescriptor GetDatabaseDescriptorBasedOnPath(String databaseDescriptorPath);
DatabaseDescriptor GetDatabaseDescriptorBasedOnName(String databaseDescriptorName);
IEnumerator<DatabaseDescriptor> GetDatabaseDescriptors();
DatabaseDescriptor GetDatabaseDescriptorBasedOnClassName(String className);
String GetDatabaseDescriptorNameBasedOnClassName(String className);
DatabaseDescriptor GetDatabaseDescriptorBasedOnTableName(String tableName);
String GetDatabaseDescriptorNameBasedOnTableName(String tableName);
EntityDescriptor GetEntityDescriptorBasedOnClassName(String className);
EntityDescriptor GetEntityDescriptorBasedOnTableName(String tableName);
IEnumerator<EntityDescriptor> GetEntityDescriptors();
EntityDescriptor RequiredEntityDescriptorBasedOnClassName(String className);
DatabaseBundle GetDatabaseBundle(String databaseName);
IEnumerator<DatabaseBundle> GetDatabaseBundles();
void RemoveDatabaseBundle(String databaseDescriptorName);
ISiminovEvents GetSiminovEventHandler();
IDatabaseEvents GetDatabaseEventHandler();
}