Initializing Connect
Every application when it starts they need to first initialize Core. This can be done by invoking initialize API of Android:siminov.connect.Siminov | iOS:SIKSiminov | Windows:Siminov.Connect.Siminov class by passing required parameters to the method.
There are two ways to initialize Connect on Android.
public class ApplicationSiminov extends Application {
public void onCreate() {
super.onCreate();
initializeSiminov();
}
private void initializeSiminov() {
IInitializer initializer = siminov.connect.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.connect.Siminov.initialize();
initializer.addParameter(getApplicationContext());
initializer.start();
}
}
Note
- If you are initializing siminov from activity sub class then you should pass application context not the activity context. See above example.
siminov.connect.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();
}
- Important points about Initializing Siminov
Note
Application should call siminov.connect.Siminov initialize only once in the life time of application.
Once siminov initialize it can not be re initialized.
id<SICIInitializer> initializer = [SIKSiminov initializer];
[initializer initialize];
[SIKSiminov initializer] API returns SIKIInitializer interface through which we can pass parameters needed by Siminov Framework to work functionally.
@protocol SIKIInitializer <NSObject>
- (void)addParameter:(id)object;
- (void)initialize;
@end
Note
Application should call SIKSiminov 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.Connect.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();
}
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, siminov 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.
Android: Resource Manager
public class ResourceManager {
public ApplicationDescriptor getApplicationDescriptor();
public void SetApplicationDescriptor(final ApplicationDescriptor applicationDescriptor);
public ServiceDescriptor RequiredServiceDescriptorBasedOnPath(final String serviceDescriptorPath);
public ServiceDescriptor RequiredServiceDescriptorBasedOnName(final String serviceDescriptorName);
public Request requiredRequestBasedOnServiceDescriptorPath(final String serviceDescriptorPath, final String requestName);
public Request requireRequestBasedOnServiceDescriptorName(final String serviceDescriptorName, final String requestName);
public INotificationEvents getNotificationEventHandler();
public ISyncEvents getSyncEventHandler();
public IEnumerator<SyncDescriptor> GetSyncDescriptors();
public SyncDescriptor getSyncDescriptor(final String syncDescriptorName);
}
iOS: Resource Manager
@interface SIKResourceManager : NSObject
+ (SIKResourceManager *)getInstance;
- (SIKApplicationDescriptor *)getApplicationDescriptor;
- (void)setApplicationDescriptor:(SIKApplicationDescriptor *)appDescriptor;
- (SIKServiceDescriptor *)requiredServiceDescriptorBasedOnPath:(NSString *)serviceDescriptorPath;
- (SIKServiceDescriptor *)requiredServiceDescriptorBasedOnName:(NSString *)serviceDescriptorName;
- (SIKRequest *)requiredRequestBasedOnServiceDescriptorPath:(NSString *)serviceDescriptorPath requestName:(NSString *)requestName;
- (SIKRequest *)requireRequestBasedOnServiceDescriptorName:(NSString *)serviceDescriptorName requestName:(NSString *)requestName;
- (id<SIKINotificationEvents>)getNotificationEventHandler;
- (id<SIKISyncEvents>)getSyncEventHandler;
- (NSEnumerator *)getSyncDescriptors;
- (SIKSyncDescriptor *)getSyncDescriptor:(NSString *)syncDescriptorName;
@end
Windows: Resource Manager
public class ResourceManager {
public ApplicationDescriptor GetApplicationDescriptor();
public void SetApplicationDescriptor(ApplicationDescriptor applicationDescriptor);
public ServiceDescriptor RequiredServiceDescriptorBasedOnPath(String serviceDescriptorPath);
public ServiceDescriptor RequiredServiceDescriptorBasedOnName(String serviceDescriptorName);
public Request RequiredRequestBasedOnServiceDescriptorPath(String serviceDescriptorPath, String requestName);
public Request RequireRequestBasedOnServiceDescriptorName(String serviceDescriptorName, String requestName);
public INotificationEvents GetNotificationEventHandler();
public ISyncEvents GetSyncEventHandler();
public IEnumerator<SyncDescriptor> GetSyncDescriptors();
public SyncDescriptor GetSyncDescriptor(String syncDescriptorName);
}