FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

62
FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com FileMaker und Java ...und es öffnen sich neue Welten! DI (FH) DI Bernhard Schulz schubec GmbH

Transcript of FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

Page 1: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

FileMaker und Java...und es öffnen sich neue Welten!

DI (FH) DI Bernhard Schulzschubec GmbH

Page 2: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

DI (FH) DI Bernhard Schulz

‣ Inhaber und Geschäftsführer der schubec GmbH ‣ Betreiber von FileMakerProfis.de

‣ PHP‣ Java‣ Google Web Toolkit‣ Vaadin‣ Wicket‣ SQL Datenbanken‣ Websecurity ‣ Netzwerktechnik

Page 3: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

Vortragsziel

‣ Klären: Was ist Java?‣ Was braucht man um Java nutzen zu können?‣ Die Zugriffsarten‣ JDBC‣ FileMaker API 4 Java

‣ Praxisrelevante Beispiele

‣ Der Vortrag ist keine Java-Schulung

‣ Vollständige Codebeispiele in Folien und bei den Beispielen

Page 4: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

Java‣ Objektorientierte Programmiersprache‣ SUN / Oracle‣ Plattformunabhängig‣ Windows‣ Mac‣ Linux

‣ kostenlos

Page 5: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

Zugriffsmöglichkeiten auf FileMaker‣ Java Database Connectivity (JDBC)

‣ FileMaker API 4 Java‣ in Entwicklung bei schubec‣ in Anlehnung an FileMaker API 4 PHP

Page 6: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC Treiber - woher nehmen?

Page 7: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC‣ Wie ODBC für die Java-Welt‣ FileMaker Server dient als Datenquelle‣ Java-Programm liest Daten aus oder schreibt Daten in Datenquelle

‣ Extrem schnell!!!‣ Bei weitem! schneller als FileMaker API 4 PHP

‣ Extrem robust‣ Einmal eingerichtet, lauft das Ding quasi für immer!

Bild-Quelle: FileMaker ODBC and JDBC Guide

Page 8: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class JdbcTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT Thema, Untertitel FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("Thema")); System.out.println(resultSet.getString("Untertitel")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

Page 9: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class JdbcTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT Thema, Untertitel FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("Thema")); System.out.println(resultSet.getString("Untertitel")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

Verbindungsparameter

Connection-String:

FileMaker 10:jdbc:sequelink://<sequelink host IP

address>:<port>;serverDataSource=<databasename>;DBUser=<databaseusername>; DBPassword=<databasepassword>

FileMaker 11:jdbc:filemaker://<filemaker host IP address>:<port>/ <databasename>?

user=<databaseusername>&password=<databasepassword>

FileMaker 12:jdbc:filemaker://<filemaker host IP address>:<port>/<databasename>?

user=<databaseusername>&password=<databasepassword>

Page 10: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class JdbcTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT Thema, Untertitel FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("Thema")); System.out.println(resultSet.getString("Untertitel")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

Verbindungsparameter

Connection-String:

FileMaker 10:jdbc:sequelink://fm9.langhofer.net:

2399;user=jdbc;password=jdbc;serverDataSource=fmk2012

Page 11: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class JdbcTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT Thema, Untertitel FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("Thema")); System.out.println(resultSet.getString("Untertitel")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

JDBC Treiber laden

JDBC-Treiber:

FileMaker 10:com.ddtek.jdbc.sequelink.SequeLinkDriver

FileMaker 11:com.filemaker.jdbc.Driver

FileMaker 12:com.filemaker.jdbc.Driver

Page 12: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class JdbcTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT Thema, Untertitel FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("Thema")); System.out.println(resultSet.getString("Untertitel")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

SQL Statement

Page 13: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class JdbcTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT Thema, Untertitel FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("Thema")); System.out.println(resultSet.getString("Untertitel")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

SQL-Befehl ausführen

Page 14: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class JdbcTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT Thema, Untertitel FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("Thema")); System.out.println(resultSet.getString("Untertitel")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

Ergebnis ausgeben

Page 15: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBCErgebnis

Page 16: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC‣ Medienfelder können gelesen und geschrieben werden‣ (Das ist über andere Schnittstellen, zB FM API 4 PHP, nicht möglich!)

File file = new File ("/Users/schube/Pictures/FMK_Logo_2012.gif");FileInputStream inputstream = new FileInputStream (file); String sql = "INSERT INTO Medienfeldtest (DasMedienfeld) VALUES(PutAs(?, 'GIFf'))";PreparedStatement prepareStatement = connection.prepareStatement(sql);prepareStatement.setBinaryStream (1, inputstream, (int)file.length ());prepareStatement.execute();

Page 17: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC - Containerfeld Datentypen

Tabelle-Quelle: FileMaker ODBC and JDBC Guide

Page 18: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC & Medienfeld - vollständiger Codepackage com.schubec.demo.fmk2012.jdbc;

import java.io.File;import java.io.FileInputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;

public class JdbcContainerTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

File file = new File ("/Users/schube/Pictures/FMK_Logo_2012.gif"); FileInputStream inputstream = new FileInputStream (file); String sql = "INSERT INTO Medienfeldtest (DasMedienfeld) VALUES(PutAs(?, 'GIFf'))"; PreparedStatement prepareStatement = connection.prepareStatement(sql); prepareStatement.setBinaryStream (1, inputstream, (int)file.length ()); prepareStatement.execute(); } catch (Exception e) { e.printStackTrace(); } }}

Page 19: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC‣ Abfragen basieren auf Tabellenauftreten‣ Abfragen werden mittels SQL-Befehle formuliert

‣ FileMaker Tabellen können erzeugt/geändert werden!

‣ CREATE TABLE‣ ALTER TABLE‣ CREATE INDEX‣ DROP INDEX

Page 20: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC - Datenbankstruktur ändernsql = "CREATE TABLE T1 (C1 VARCHAR, C2 VARCHAR (50), C3 VARCHAR (1001),C4 VARCHAR (500276))";connection.prepareStatement(sql).execute();

sql = "CREATE TABLE T1NN (C1 VARCHAR NOT NULL, C2 VARCHAR (50) NOT NULL, C3 VARCHAR (1001) NOT NULL, C4 VARCHAR (500276) NOT NULL)";connection.prepareStatement(sql).execute();

sql = "CREATE TABLE T2 (C1 DECIMAL, C2 DECIMAL (10,0), C3 DECIMAL (7539,2), C4 DECIMAL (497925,301))";connection.prepareStatement(sql).execute();

sql = "CREATE TABLE T3 (C1 DATE, C2 DATE, C3 DATE, C4 DATE)";connection.prepareStatement(sql).execute();

sql = "CREATE TABLE T4 (C1 TIME, C2 TIME, C3 TIME, C4 TIME)";connection.prepareStatement(sql).execute();

sql = "CREATE TABLE T5 (C1 TIMESTAMP, C2 TIMESTAMP, C3 TIMESTAMP,C4 TIMESTAMP)";connection.prepareStatement(sql).execute();

sql = "CREATE TABLE T6 (C1 BLOB, C2 BLOB, C3 BLOB, C4 BLOB)";connection.prepareStatement(sql).execute();

Beispiel-Quelle: FileMaker ODBC and JDBC Guide

Page 21: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC - Index auslesenpackage com.schubec.demo.fmk2012.jdbc;

import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

public class IndexAuslesenTest { private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { Class.forName("com.ddtek.jdbc.sequelink.SequeLinkDriver") .newInstance();

String jdbcString = "jdbc:sequelink://" + SERVER + ":" + PORT + ";user=" + USERNAME + ";password=" + PASSWORD + ";serverDataSource=" + DATABASE; Connection connection = DriverManager.getConnection(jdbcString);

String sql = "SELECT DISTINCT \"Web Farbe\" AS farbe FROM Themen"; ResultSet resultSet = connection.prepareStatement(sql) .executeQuery(); while (resultSet.next()) { System.out.println(resultSet.getString("farbe")); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }}

Beispiel-Quelle: FileMaker ODBC and JDBC Guide

Page 22: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC

Beispiel-Quelle: FileMaker ODBC and JDBC Guide

‣ Viele weitere SQL-Abfragen möglich!‣ Abfragen, die mit FileMaker gar nicht

oder‣ nur extrem kompliziert‣ möglich wären.

‣ Viel Spass beim SQL-Lernen!‣ Ist ohnehin für FileMaker Entwickler sehr nützlich!‣ Zum Beispiel bei der Session

„FM12 - Mit SQL-Kommandos FileMaker Daten lesen - und schreiben“

‣ von Nico Busch heute um 16 Uhr im Schloss Saal 1!

Page 23: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 Java‣ Basiert auf XML-Schnittstelle des FileMaker Server‣ Idee von FileMaker API 4 PHP von FileMaker Inc. übernommen‣ Entwicklung durch schubec GmbH‣ Lange Erfahrung mit der XML Schnittstelle‣ Entwicklung von FM-and-PHP im Jahre 2001

‣ Momentan im BETA-Stadium‣ Veröffentlichungsdatum und Konditionen ungewiss‣ Bei Interesse bitte an [email protected] wenden

Page 24: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 Java‣ Hat in etwa die gleichen Funktionen und Einschränkungen wie FileMaker

API 4 PHP

‣ Abfragen basieren auf Layouts‣ Medienfelder können nur gelesen werden‣ Performance mittelmässig‣ Benötigt zwingend FileMaker Server

‣ Es können FileMaker Scripts ausgeführt werden!‣ Basiert auf HTTP Protokoll‣ kaum Probleme bei Übertragung über Internet

‣ XML-Schnittstelle bei FileMaker Provider weit verbreitet‣ FileMaker API 4 PHP Programmierer können ganz leicht umsteigen

Page 25: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 Javapackage com.schubec.demo.fmk2012.fmapi4java;

import com.schubec.libraries.fmapi4java.FileMaker;import com.schubec.libraries.fmapi4java.commands.FindAllCommand;import com.schubec.libraries.fmapi4java.enums.Protocol;import com.schubec.libraries.fmapi4java.models.Database;import com.schubec.libraries.fmapi4java.models.Layout;import com.schubec.libraries.fmapi4java.models.Record;import com.schubec.libraries.fmapi4java.results.ResultSet;

public class FmApi4JavaTest {

private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "web"; private static final String PASSWORD = "web"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { FileMaker fm = new FileMaker(SERVER, Protocol.HTTP, USERNAME, PASSWORD); Database db = fm.newDatabase(DATABASE); Layout lay = db.newLayout("Themen"); FindAllCommand command = lay.newFindAllCommand(); ResultSet<Record> result; result = command.execute(); for (Record record : result.getRecords()) { System.out.println(record.getField("Thema").getValue()); System.out.println(record.getField("Untertitel").getValue()); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }

}

Page 26: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 Javapackage com.schubec.demo.fmk2012.fmapi4java;

import com.schubec.libraries.fmapi4java.FileMaker;import com.schubec.libraries.fmapi4java.commands.FindAllCommand;import com.schubec.libraries.fmapi4java.enums.Protocol;import com.schubec.libraries.fmapi4java.models.Database;import com.schubec.libraries.fmapi4java.models.Layout;import com.schubec.libraries.fmapi4java.models.Record;import com.schubec.libraries.fmapi4java.results.ResultSet;

public class FmApi4JavaTest {

private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "web"; private static final String PASSWORD = "web"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { FileMaker fm = new FileMaker(SERVER, Protocol.HTTP, USERNAME, PASSWORD); Database db = fm.newDatabase(DATABASE); Layout lay = db.newLayout("Themen"); FindAllCommand command = lay.newFindAllCommand(); ResultSet<Record> result; result = command.execute(); for (Record record : result.getRecords()) { System.out.println(record.getField("Thema").getValue()); System.out.println(record.getField("Untertitel").getValue()); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }

}

Verbindungsparameter

Page 27: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 Javapackage com.schubec.demo.fmk2012.fmapi4java;

import com.schubec.libraries.fmapi4java.FileMaker;import com.schubec.libraries.fmapi4java.commands.FindAllCommand;import com.schubec.libraries.fmapi4java.enums.Protocol;import com.schubec.libraries.fmapi4java.models.Database;import com.schubec.libraries.fmapi4java.models.Layout;import com.schubec.libraries.fmapi4java.models.Record;import com.schubec.libraries.fmapi4java.results.ResultSet;

public class FmApi4JavaTest {

private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "web"; private static final String PASSWORD = "web"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { FileMaker fm = new FileMaker(SERVER, Protocol.HTTP, USERNAME, PASSWORD); Database db = fm.newDatabase(DATABASE); Layout lay = db.newLayout("Themen"); FindAllCommand command = lay.newFindAllCommand(); ResultSet<Record> result; result = command.execute(); for (Record record : result.getRecords()) { System.out.println(record.getField("Thema").getValue()); System.out.println(record.getField("Untertitel").getValue()); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }

}

Befehl (FindAll / Alle aufrufen)

Page 28: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 Javapackage com.schubec.demo.fmk2012.fmapi4java;

import com.schubec.libraries.fmapi4java.FileMaker;import com.schubec.libraries.fmapi4java.commands.FindAllCommand;import com.schubec.libraries.fmapi4java.enums.Protocol;import com.schubec.libraries.fmapi4java.models.Database;import com.schubec.libraries.fmapi4java.models.Layout;import com.schubec.libraries.fmapi4java.models.Record;import com.schubec.libraries.fmapi4java.results.ResultSet;

public class FmApi4JavaTest {

private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "web"; private static final String PASSWORD = "web"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { FileMaker fm = new FileMaker(SERVER, Protocol.HTTP, USERNAME, PASSWORD); Database db = fm.newDatabase(DATABASE); Layout lay = db.newLayout("Themen"); FindAllCommand command = lay.newFindAllCommand(); ResultSet<Record> result; result = command.execute(); for (Record record : result.getRecords()) { System.out.println(record.getField("Thema").getValue()); System.out.println(record.getField("Untertitel").getValue()); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }

}

Befehl ausführen

Page 29: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 Javapackage com.schubec.demo.fmk2012.fmapi4java;

import com.schubec.libraries.fmapi4java.FileMaker;import com.schubec.libraries.fmapi4java.commands.FindAllCommand;import com.schubec.libraries.fmapi4java.enums.Protocol;import com.schubec.libraries.fmapi4java.models.Database;import com.schubec.libraries.fmapi4java.models.Layout;import com.schubec.libraries.fmapi4java.models.Record;import com.schubec.libraries.fmapi4java.results.ResultSet;

public class FmApi4JavaTest {

private static final String SERVER = "fm9.langhofer.net"; private static final String USERNAME = "web"; private static final String PASSWORD = "web"; private static final String DATABASE = "fmk2012";

public static void main(String[] args) { try { FileMaker fm = new FileMaker(SERVER, Protocol.HTTP, USERNAME, PASSWORD); Database db = fm.newDatabase(DATABASE); Layout lay = db.newLayout("Themen"); FindAllCommand command = lay.newFindAllCommand(); ResultSet<Record> result; result = command.execute(); for (Record record : result.getRecords()) { System.out.println(record.getField("Thema").getValue()); System.out.println(record.getField("Untertitel").getValue()); System.out.println("==============================="); } } catch (Exception e) { e.printStackTrace(); } }

}

Ausgabe

Page 30: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker API 4 JavaErgebnis

Page 31: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC vs. FileMaker API 4 JavaJDBC FMAPI4JAVA (FMAPI4PHP)

Client / Server? Client o. Server Nur Server Nur Server

Protokoll JDBC HTTP HTTP

Geschwindigkeit

Medienfelder lesen

Medienfelder schreiben

Datenbankstruktur ändern

Scripts ausführen

Dokumentation

Verfügbarkeit

Abfragen per SQL-Befehl FM proprietärFM proprietär

Abfragen basieren auf Tabellenauftreten LayoutsLayouts

Page 32: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

JDBC vs. FileMaker API 4 Java‣ Was ist besser?‣ Kommt drauf an...‣ Unterschiedliche Features

‣ Vorschlag: Beides mischen!

Page 33: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - wozu?‣ Viele professionelle & kostenlose Bibliotheken‣ Lesen & Schreiben von Excel, Word, Powerpoint (Apache POI)‣ Reportgeneratoren (iReport)‣ Webinterfaces (Vaadin, GWT, Wicket, etc.)‣ CalDAV

‣ Unterschied zu PHP‣ professionellere Tools & Entwicklung‣ unter anderem durch statische Typisierung

‣ einheitliche Java Umgebungen‣ PHP-Umgebungen unterscheiden sich oft erheblich

‣ ausgereiftere Bibliotheken‣ Application Server‣ Jedoch‣ komplizirteres Deployment‣ höhere Hostingkosten

Page 34: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - HL7

‣ Health Level 7 (HL7) ist eine Gruppe internationaler Standards für den Austausch von Daten zwischen Organisationen im Gesundheitswesen und deren Computersystemen. (Wikipedia)‣ Beispielnachricht:

MSH|^~\&|EPIC|EPICADT|SMS|SMSADT|199912271408|CHARRIS|ADT^A04|1817457|D|2.5|

PID||0493575^^^2^ID 1|454721||DOE^JOHN^^^^|DOE^JOHN^^^^|19480203|M||B|254 MYSTREET AVE^^MYTOWN^OH^44123^USA||(216)123-4567|||M|NON|400003403~1129086|

NK1||ROE^MARIE^^^^|SPO||(216)123-4567||EC|||||||||||||||||||||||||||

PV1||O|168 ~219~C~PMA^^^^^^^^^||||277^ALLEN MYLASTNAME^BONNIE^^^^|||||||||| ||2688684|||||||||||||||||||||||||199912271408||||||002376853

Page 35: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - HAPI

‣ Einlesen in FileMaker?‣ Studentengruppe: Parsen per PHP‣ instabil‣ fehleranfällig

‣ Lösung: FileMaker JDBC und

Page 36: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - HAPI

‣ Universitätsklinik Salzburg / Chirurgie West‣ Problemlose Verarbeitung von mehr als 180.000 HL7

Nachrichten

Page 37: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - HAPI

TextUK für Chirurgie der Paracelsus Medizinische Privatuniversität Salzburg | Stellenwert der QS in der Chirurgie | D. Öfner-Velano

QM an der UK für Chirurgie, SalzburgQM an der UK für Chirurgie, Salzburg

Page 38: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele‣ iReport‣ Reporting Engine, die weit mehr kann als FileMaker‣ kostenlos

Page 39: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 40: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 41: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 42: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 43: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 44: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 45: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 46: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

SELECT

Sessions."Info" AS Sessions_Info,

Sessions."Durchfuehrung_Zeit_von" AS Sessions_Durchfuehrung_Zeit_von,

Sessions."Durchfuehrung_Zeit_bis" AS Sessions_Durchfuehrung_Zeit_bis,

Themen."Thema" AS Themen_Thema,

Themen."Beschreibung" AS Themen_Beschreibung,

Themen."Untertitel" AS Themen_Untertitel,

Sessions."Durchfuehrung_Datum" AS Sessions_Durchfuehrung_Datum,

Themen."Sortfield" AS Themen_Sortfield

FROM

"Themen" Themen INNER JOIN "Sessions" Sessions ON Themen."pkThema" = Sessions."fkThema"

ORDER BY

Sessions."Durchfuehrung_Datum",

Sessions."Durchfuehrung_Zeit_von"

Page 47: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 48: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 49: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 50: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 51: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 52: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele

Page 53: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

iReport

Page 54: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Beispiele‣ iReport‣ Reporting Engine, die weit mehr kann als FileMaker‣ kostenlos

Page 55: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Solr‣ „Suchmaschine“‣ FileMaker Daten hineinfüttern‣ Webinterface nutzen

Page 56: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Solrpackage com.schubec.demo.fmk2012.solr;

import java.net.MalformedURLException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;

import org.apache.log4j.Logger;import org.apache.solr.client.solrj.SolrServer;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;import org.apache.solr.common.SolrInputDocument;

public class Start { private static final String SERVER = "localhost"; private static final String USERNAME = "jdbc"; private static final String PASSWORD = "jdbc"; private static final String PORT = "2399"; private static final String DATABASE = "schubecEmails";

static Logger logger = Logger.getLogger(Start.class);

public static void main(String[] args) throws Exception, MalformedURLException, SolrServerException {

SolrServer solr = new CommonsHttpSolrServer("http://localhost:8983/solr");

Class.forName("com.filemaker.jdbc.Driver").newInstance();

String jdbcString = "jdbc:filemaker://" + SERVER + ":" + PORT + "/" + DATABASE + "?user=" + USERNAME + "&password=" + PASSWORD; System.out.println(jdbcString); Connection connection = DriverManager.getConnection(jdbcString);

String sql = "select MessageID, TheDate, Priority, Body, Subject, EmailFrom, EmailTo from Messages "; ResultSet resultSet = connection.prepareStatement(sql).executeQuery();

while (resultSet.next()) { SolrInputDocument solrdoc = new SolrInputDocument(); solrdoc.addField("id", resultSet.getString("MessageID")); solrdoc.addField("features", resultSet.getString("Body")); solrdoc.addField("popularity", resultSet.getString("Priority")); solrdoc.addField("last_modified", resultSet.getDate("TheDate")); solrdoc.addField("subject", resultSet.getString("Subject")); solrdoc.addField("author", resultSet.getString("EmailFrom")); solrdoc.addField("comments", resultSet.getString("EmailTo")); solr.add(solrdoc); System.out.println("*"); } solr.commit();

System.out.println("Done"); }}

Page 57: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Solr

Page 58: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Java - Solr‣ Performance‣ Facetten‣ „More like this“‣ Rechtschreibprüfung‣ Synonyme‣ Stopwörter‣ Stemming‣ laufen, lief, gelaufen

Page 59: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & CalDAV

Page 60: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Scriptmaster

http://www.360works.com/scriptmaster/

Page 61: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten

FileMaker & Vaadin

Page 62: FMK2012: FileMaker und Java ...und es öffnen sich neue Welten! von Bernhard Schulz

FileMaker Konferenz2010

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Vielen Dank unseren Sponsoren

Danke für das Bewerten dieses Vortrages