Skip to content
Siminov Framework edited this page Dec 25, 2015 · 3 revisions

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.

Android Initialization

There are two ways to initialize Core on Android.

- Initializing Core by extending application class

    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.

- Initializing Core by extending activity 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.

Android:IInitializer Interface

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();
	
    }

iOS Initialization

- Initializing Core from AppDelegate

    id<SICIInitializer> initializer = [SICSiminov initializer];
    [initializer initialize];

iOS:SICIInitializer Interface

[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.

Windows Initialization

- Initializing Core by extending application class

    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();
        }
    }

Windows:IInitializer Interface

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.

Steps Performed While Initializing Core

1. Database Creation

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.

2. Initialize Resource Manager Layer

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.

Android: Resource Manager

    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();
    }

iOS: Resource Manager

    @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

Windows: Resource Manager

    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();
    }
Clone this wiki locally