package com.example.sapflightlistandroid;

import java.sql.Time;
import java.util.Date;
import java.util.Iterator;
import android.app.Activity;

import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import com.sybase.collections.GenericList;
import com.sybase.mobile.Application;
import com.sybase.mobile.ConnectionProperties;
import com.sybase.mobile.RegistrationStatus;
import com.sybase.persistence.ConnectionProfile;
import com.sybase.persistence.LoginCredentials;
import com.sybase.persistence.SynchronizationGroup;
import de.sup.android.mbo.SAPFlightListDB;
import de.sup.android.mbo.SAPFlightListMBO;
public class MainActivity extends Activity {
private static String username = "supAdmin";
private static String password = "s3pAdmin";
private static String host = "111.111.111.111";
private static int port = 5001;
private static int sync_port = 2480;
private static int timeout = 6000;
boolean initializationDone = false;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeApplication();
}
private void initializeApplication() {
	try {
		Application app = Application.getInstance();
		app.setApplicationIdentifier("SAPFlightList");
		app.setApplicationContext(MainActivity.this);

		// Verknüpfung der Cache-Datenbank mit der Anwendung
		SAPFlightListDB.setApplication(app);

		// Erzeugung eines Verbindungsprofils
		ConnectionProfile cp = SAPFlightListDB.getSynchronizationProfile();
		cp.setServerName(host);
		cp.setPortNumber(sync_port);
		cp.setNetworkProtocol("http");
		cp.setAsyncReplay(true);
		cp.setDomainName("default");
		cp.save();

		// Verbindungsdaten zum Unwired Server
		ConnectionProperties connProps =
		app.getConnectionProperties();
		LoginCredentials loginCredentials = new
		LoginCredentials(username, password);
		connProps.setLoginCredentials(loginCredentials);
		connProps.setServerName(host);
		connProps.setPortNumber(port);
		connProps.setSecurityConfiguration("admin");
		
		//Anwendung registrieren, falls dies noch nicht geschehen ist (erster Lauf)
		if (app.getRegistrationStatus() !=RegistrationStatus.REGISTERED) {
			app.registerApplication(timeout);
		} 
		else {
			app.startConnection(timeout);
		}

		// Verbindung zur Cache-Datenbank
		SAPFlightListDB.subscribe();
		SAPFlightListDB.submitPendingOperations();

		// Synchronisation (falls nicht synchron)
		if (!SAPFlightListDB.isSynchronized("default")) {
			// Änderungslogs ausschalten
			SAPFlightListDB.disableChangeLog();
			SynchronizationGroup sg = SAPFlightListDB.getSynchronizationGroup("default");
			// Aenderungsbenachrichtigungen aktivieren
			sg.setEnableSIS(true);
			sg.save();
			// Datenbank bei Bedarf erzeugen
			if (!SAPFlightListDB.databaseExists()) {
				SAPFlightListDB.createDatabase();
			} 
			else {
				SAPFlightListDB.openConnection();
			}
			SAPFlightListDB.synchronize();
}
// Änderungslogs wieder aktivieren
SAPFlightListDB.enableChangeLog();
} catch (Exception e) {
	e.printStackTrace();
} finally {
// Flag setzen, z.B. für anderen Thread
	initializationDone = true;
}
// Daten über findAll-
	Query abfragen und in Textfeld ausgeben
	GenericList<SAPFlightListMBO> flights = SAPFlightListMBO.findAll();
	EditText textfield = (EditText)
	this.findViewById(R.id.editText1);
	for (Iterator<SAPFlightListMBO> i = flights.iterator(); i.hasNext();) {
		SAPFlightListMBO flight = (SAPFlightListMBO)
		i.next();
		String airlineID = flight.getAIRLINE();
		String airportTO = flight.getAIRPORTFR();
		String airportFROM = flight.getAIRPORTTO();
		Date arrivalDate = flight.getARRDATE();
		Time arrivalTime = flight.getARRTIME();
		textfield.append(airlineID + " " + airportTO + " " + airportFROM + " " + arrivalDate + " " +arrivalTime + "\n\n");
	}
}
}

