sascha@4067: package de.intevation.aft; sascha@4067: sascha@4072: import java.io.File; sascha@4072: sascha@4073: import java.sql.SQLException; sascha@4073: sascha@4072: import org.w3c.dom.Document; sascha@4072: sascha@4077: import javax.xml.xpath.XPathConstants; sascha@4077: sascha@4072: import de.intevation.utils.XML; sascha@4072: sascha@4072: import de.intevation.db.ConnectionBuilder; sascha@4072: sascha@4067: public class Sync sascha@4067: { sascha@4072: public static final String FLYS = "flys"; sascha@4072: public static final String AFT = "aft"; sascha@4072: sascha@4077: public static final String XPATH_DIPS = "/sync/dips/@file"; sascha@4077: sascha@4072: public static final String CONFIG_FILE = sascha@4072: System.getProperty("config.file", "config.xml"); sascha@4072: sascha@4067: public static void main(String [] args) { sascha@4072: sascha@4072: File configFile = new File(CONFIG_FILE); sascha@4072: sascha@4072: if (!configFile.isFile() || !configFile.canRead()) { sascha@4072: System.err.println("cannot read config file"); sascha@4072: System.exit(1); sascha@4072: } sascha@4072: sascha@4072: Document config = XML.parseDocument(configFile, Boolean.FALSE); sascha@4072: sascha@4072: if (config == null) { sascha@4072: System.err.println("cannot load config"); sascha@4072: System.exit(1); sascha@4072: } sascha@4072: sascha@4077: String dipsF = (String)XML.xpath( sascha@4077: config, XPATH_DIPS, XPathConstants.STRING, null, null); sascha@4077: sascha@4077: if (dipsF == null || dipsF.length() == 0) { sascha@4077: System.err.println("Cannot find path to DiPS xml in config."); sascha@4077: System.exit(1); sascha@4077: } sascha@4077: sascha@4077: File dipsFile = new File(dipsF); sascha@4077: sascha@4077: if (!dipsFile.isFile() || !dipsFile.canRead()) { sascha@4077: System.err.println("Cannot find '" + dipsF + "'"); sascha@4077: System.exit(1); sascha@4077: } sascha@4077: sascha@4077: Document dips = XML.parseDocument(dipsFile, Boolean.FALSE); sascha@4077: sascha@4077: if (dips == null) { sascha@4077: System.err.println("Cannot load DiPs document."); sascha@4077: System.exit(1); sascha@4077: } sascha@4077: sascha@4073: ConnectionBuilder aftConnectionBuilder = sascha@4073: new ConnectionBuilder(AFT, config); sascha@4073: sascha@4072: ConnectionBuilder flysConnectionBuilder = sascha@4072: new ConnectionBuilder(FLYS, config); sascha@4072: sascha@4077: SyncContext syncContext = null; sascha@4073: try { sascha@4077: syncContext = new SyncContext( sascha@4077: aftConnectionBuilder.getConnectedStatements(), sascha@4077: flysConnectionBuilder.getConnectedStatements(), sascha@4077: dips); sascha@4075: Rivers rivers = new Rivers(); sascha@4077: rivers.sync(syncContext); sascha@4073: } sascha@4073: catch (SQLException sqle) { sascha@4075: sqle.printStackTrace(); sascha@4073: System.err.println("syncing failed: " + sqle.getMessage()); sascha@4073: } sascha@4073: finally { sascha@4077: if (syncContext != null) { sascha@4077: syncContext.close(); sascha@4075: } sascha@4073: } sascha@4067: } sascha@4067: } sascha@4067: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :