Mercurial > dive4elements > river
view flys-aft/src/main/java/de/intevation/aft/Sync.java @ 4094:b20b710aa86f
Bubble up modifications up to main().
flys-aft/trunk@3605 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 05 Jan 2012 18:58:49 +0000 |
parents | d556e29592f5 |
children | da9df3641578 |
line wrap: on
line source
package de.intevation.aft; import java.io.File; import java.sql.SQLException; import org.w3c.dom.Document; import org.apache.log4j.Logger; import javax.xml.xpath.XPathConstants; import de.intevation.utils.XML; import de.intevation.db.ConnectionBuilder; public class Sync { private static Logger log = Logger.getLogger(Sync.class); public static final String FLYS = "flys"; public static final String AFT = "aft"; public static final String XPATH_DIPS = "/sync/dips/file/text()"; public static final String XPATH_REPAIR = "/sync/dips/repair/text()"; public static final String XPATH_NOTIFICATIONS = "/sync/notifications/notification"; public static final String CONFIG_FILE = System.getProperty("config.file", "config.xml"); public static void main(String [] args) { File configFile = new File(CONFIG_FILE); if (!configFile.isFile() || !configFile.canRead()) { log.error("cannot read config file"); System.exit(1); } Document config = XML.parseDocument(configFile, Boolean.FALSE); if (config == null) { log.error("Cannot load config file."); System.exit(1); } String dipsF = (String)XML.xpath( config, XPATH_DIPS, XPathConstants.STRING, null, null); if (dipsF == null || dipsF.length() == 0) { log.error("Cannot find path to DIPS XML in config."); System.exit(1); } File dipsFile = new File(dipsF); if (!dipsFile.isFile() || !dipsFile.canRead()) { log.error("Cannot find '" + dipsF + "'"); System.exit(1); } Document dips = XML.parseDocument(dipsFile, Boolean.FALSE); if (dips == null) { log.error("Cannot load DIPS document."); System.exit(1); } String repairF = (String)XML.xpath( config, XPATH_REPAIR, XPathConstants.STRING, null, null); if (repairF != null && repairF.length() > 0) { File repairFile = new File(repairF); if (!repairFile.isFile() || !repairFile.canRead()) { log.warn("Cannot open DIPS repair XSLT file."); } else { Document fixed = XML.transform(dips, repairFile); if (fixed == null) { log.warn("Fixing DIPS failed"); } else { dips = fixed; } } } int exitCode = 0; ConnectionBuilder aftConnectionBuilder = new ConnectionBuilder(AFT, config); ConnectionBuilder flysConnectionBuilder = new ConnectionBuilder(FLYS, config); SyncContext syncContext = null; boolean modified = false; try { syncContext = new SyncContext( aftConnectionBuilder.getConnectedStatements(), flysConnectionBuilder.getConnectedStatements(), dips); syncContext.init(); Rivers rivers = new Rivers(); modified = rivers.sync(syncContext); } catch (SQLException sqle) { log.error("syncing failed", sqle); exitCode = 1; } finally { if (syncContext != null) { syncContext.close(); } } if (exitCode != 0) { System.exit(1); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :