#import "sapbenutzerViewController.h"
#import "CallbackHandler.h"
#import "SUPSyncStatusListener.h"
#import "SUPApplication.h"
#import "SUPApplicationCallback.h"
#import "SUPRegistrationStatus.h"
#import "SAPBenutzerListeSAPBenutzerListeDB.h"
#import "CallbackHandler.h"
#import "SUPEngine.h"
#import "SUPDataVault.h"
#import "SUPConnectionProfile.h"
#import "SAPBenutzerListeLocalKeyGenerator.h"
#import "SUPSyncStatusInfo.h"
#import "SAPBenutzerListeSAPBenutzerListeMBO.h"
#import "SUPObjectList.h"
@implementation sapbenutzerViewController
- (void)viewDidLoad
{
	[super viewDidLoad];
	NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
	self.SUPServerName = @"mysupserver";
	self.SUPServerPort = @"5001";
	self.SUPUserName = @"supAdmin";
	self.SUPFarmID = @"0";
	self.SUPPassword = @"geheim";
	[self initializeApplication];
}
- (void)didReceiveMemoryWarning
{
	[super didReceiveMemoryWarning];
}
- (void)viewDidAppear:(BOOL)animated {
	[super viewDidAppear:animated];
}
- (void)initializeApplication
{
	@try {
		SUPApplication* app = [SUPApplication getInstance];
	app.applicationIdentifier = @"SAPBenutzerListe";
	CallbackHandler *ch = [CallbackHandler getInstance];
	[self setCallbackHandler:ch];
	[app setApplicationCallback:[self callbackHandler]];
	[SAPBenutzerListeSAPBenutzerListeDB registerCallbackHandler:self.callbackHandler];
	SUPConnectionProperties* props = app.connectionProperties;
	[props setServerName:self.SUPServerName];
	[props setPortNumber:[self.SUPServerPort intValue]];
	[props setFarmId:self.SUPFarmID];
	SUPLoginCredentials* login = [SUPLoginCredentials getInstance];
	login.username = self.SUPUserName;
	login.password = self.SUPPassword;
	props.activationCode = nil;
	props.loginCredentials = login;
	SUPConnectionProfile *cp = [SAPBenutzerListeSAPBenutzerListeDB getConnectionProfile];
	[cp.syncProfile setDomainName:@"default"];
	[SAPBenutzerListeSAPBenutzerListeDB
	setApplication:app];
	[app registerApplication:30];
	while([app registrationStatus] != SUPRegistrationStatus_REGISTERED)
	{
		NSLog(@"waiting for registration...");
		@autoreleasepool {
			[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
	}
}
while([app connectionStatus] != SUPConnectionStatus_CONNECTED)
{
	NSLog(@"waiting for connection...");
	@autoreleasepool {
		[[NSRunLoop currentRunLoop] runUntilDate:[NSDate
		dateWithTimeIntervalSinceNow:1]];
	}
}
SUPConnectionProfile *sp = [SAPBenutzerListeSAPBenutzerListeDB getSynchronizationProfile];
[sp setAsyncReplay:NO];
[sp setUser:self.SUPUserName];
[sp setPassword:self.SUPPassword];
[sp setServerName:self.SUPServerName];
[SAPBenutzerListeSAPBenutzerListeDB subscribe];
[SAPBenutzerListeSAPBenutzerListeDB submitPendingOperations];
[SAPBenutzerListeSAPBenutzerListeDB deleteDatabase];
[SAPBenutzerListeSAPBenutzerListeDB createDatabase];
[SAPBenutzerListeSAPBenutzerListeDB synchronize];
SUPObjectList* benutzerListe = [SAPBenutzerListeSAPBenutzerListeMBO findAll];
int length = [benutzerListe length];
NSLog(@"SAP Nutzerliste: %d", [benutzerListe length]);
if([benutzerListe length] > 0) {
	for(SAPBenutzerListeSAPBenutzerListeMBO *benutzer in benutzerListe) {
		NSString *username = [benutzer USERNAME];
		NSLog(@"SAP Nutzer: %@ %@ %@",username, firstname, lastname);
		self.textFeld.text = [self.textFeld.text
		stringByAppendingString:username];
		self.textFeld.text =
	[self.textFeld.text stringByAppendingString:@"\n"];
	}
}
}
@catch (NSException *exception) {
	NSLog(@"%@: %@", [exception name], [exception reason]);
}
}
@end