FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
FileMaker und Java...und es öffnen sich neue Welten!
DI (FH) DI Bernhard Schulzschubec GmbH
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
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
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
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
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?
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
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(); } }}
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>
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
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
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
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
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
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
JDBCErgebnis
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();
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
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(); } }}
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
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
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
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!
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
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
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(); } }
}
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
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)
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
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
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
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
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!
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
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
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
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
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
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
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
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"
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Beispiele
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
iReport
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
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
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"); }}
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Java - Solr
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
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & CalDAV
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/
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
DI (FH) DI Bernhard SchulzFileMaker und Java... ...und es eröffnen sich neue Welten
FileMaker & Vaadin
FileMaker Konferenz2010
FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages
Top Related