Package org.xmlBlaster.contrib.dbwriter

Source Code of org.xmlBlaster.contrib.dbwriter.DbWriterExample

/*------------------------------------------------------------------------------
Name:      Example.java
Project:   xmlBlaster.org
Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
------------------------------------------------------------------------------*/

package org.xmlBlaster.contrib.dbwriter;
import java.util.logging.Logger;
import java.util.logging.LogManager;
import java.util.prefs.Preferences;

import org.xmlBlaster.contrib.I_Info;
import org.xmlBlaster.contrib.dbwatcher.Info;

/**
* Example code to run DbWriter as a standalone application.
* <p>
* You can edit this file and change the configuration settings.
* </p>
* <p>
* Simple usage example:
* </p>
* <p>
* <tt>java org.xmlBlaster.contrib.dbwriter.Example -db.password secret</tt>
* </p>
* <p>
* <tt>java -Djava.util.logging.config.file=testlog.properties org.xmlBlaster.contrib.dbwriter.Example -db.password secret</tt>
* </p>
* <p>
* <tt>java -Djdbc.drivers=com.microsoft.sqlserver.jdbc.SQLServerDriver -Ddb.url=jdbc:sqlserver://localhost:1433/database=xmlBlaster -Ddb.user=xmlblast -Ddb.password=secret org.xmlBlaster.contrib.dbwriter.DbWriterExample -protocol SOCKET -plugin/socket/hostname laghi</tt>
* </p>
*/
public class DbWriterExample {
   private static Logger log = Logger.getLogger(DbWriterExample.class.getName());


   /**
    * Example for polling the DB
    * @param prefs Configuration
    * @throws Exception Can be of any type
    */
   private void pollingExample(Preferences prefs) throws Exception {
      log.info("Start polling test");
     
      I_Info info = new Info(prefs);
      DbWriter processor = new DbWriter(info);
     
      long sleep = info.getLong("example.sleep", 0L);
      if (sleep > 0) {
         log.info("Sleeping for '" + sleep / 1000 + " seconds");
         Thread.sleep(sleep);
      }
      else {
         log.info("Sleeping forever");
         while (true) {
            Thread.sleep(5000L);
         }
      }

      processor.shutdown();
      log.info("Done!");
   }

   /**
    * Example code.
    * <p />
    * <tt>java -Djava.util.logging.config.file=testlog.properties org.xmlBlaster.contrib.dbwatcher.Example -alertScheduler.pollInterval 10000 -db.password secret</tt>
    * @param args Command line
    */
   public static void main(String[] args) {
      try {
         System.setProperty("java.util.logging.config.file", "testlog.properties");
         LogManager.getLogManager().readConfiguration();

         Preferences prefs = loadArgs(args);
        
         DbWriterExample example = new DbWriterExample();
         example.pollingExample(prefs);
      }
      catch (Throwable e) {
         System.err.println("SEVERE: " + e.toString());
         e.printStackTrace();
      }
   }

  
   private static void setPref(String key, String defVal, Preferences prefs) {
      String prop = System.getProperty(key, defVal);
      if (prop != null)
         prefs.put(key, prop);
      else
         prefs.put(key, defVal);
   }
  
   /**
    * Parse command line arguments
    * @param args Command line
    * @return Configuration
    */
   public static Preferences loadArgs(String[] args) {
      try {
         // user: See $HOME/.java/.userPrefs
         // root: See /opt/j2sdk1.4.2_06/jre/.systemPrefs/prefs.xml
         Preferences prefs = Preferences.userRoot();
         prefs.clear();

         // ---- Database settings -----
         String driverClass = System.getProperty("jdbc.drivers", "org.hsqldb.jdbcDriver:oracle.jdbc.driver.OracleDriver:com.microsoft.jdbc.sqlserver.SQLServerDriver:org.postgresql.Driver");
         // String dbUrl = System.getProperty("db.url", "jdbc:oracle:thin:@localhost:1521:orcl");
         String dbUrl = System.getProperty("db.url", "jdbc:postgresql:test//localhost/test");
         // String dbUser = System.getProperty("db.user", "system");
         String dbUser = System.getProperty("db.user", "postgres");
         String dbPassword = System.getProperty("db.password", "");
     
         prefs.put("jdbc.drivers", driverClass);
         prefs.put("db.url", dbUrl);
         prefs.put("db.user", dbUser);
         prefs.put("db.password", dbPassword);

         // ---- Mom settings -----
         /*
         prefs.put("mom.connectQos",
                     "<qos>" +
                     " <securityService type='htpasswd' version='1.0'>" +
                     "   <![CDATA[" +
                     "   <user>michele</user>" +
                     "   <passwd>secret</passwd>" +
                     "   ]]>" +
                     " </securityService>" +
                     " <session name='joe/3'/>'" +
                     " <address type='SOCKET'>" +
                     "   socket://192.168.110.10:7607" +
                     " </address>" +
                     " </qos>");
         System.setProperty("protocol", "SOCKET");
         System.setProperty("protocol/socket/hostname", "192.168.110.10");
        
         */

         // ----- Other DbWriter settings -----
         // prefs.put("mom.subscribeKey", "<key oid='' queryType='XPATH'>//key</key>");
         String subscribeKey = System.getProperty("mom.subscribeKey", "<key oid='transaction'/>");
         prefs.put("mom.subscribeKey", subscribeKey);
        
         prefs.put("mom.subscribeQos", "<qos><initialUpdate>false</initialUpdate><multiSubscribe>false</multiSubscribe><persistent>true</persistent></qos>");
         prefs.put("dbWriter.writer.class", "org.xmlBlaster.contrib.replication.ReplicationWriter");
        
         setPref("example.sleep", "0L", prefs);
         // setPref("pingInterval", "10000L", prefs);
         // setPref("retries", ".-1", prefs);
         // setPref("delay", ".4000", prefs);
         setPref("dispatch/callback/retries", ".-1", prefs);
         setPref("dispatch/callback/delay", ".10000", prefs);
         setPref("queue/callback/maxEntries", "10000", prefs);
        
         for (int i=0; i<args.length-1; i++) {
            if (args[i].startsWith("-")) {
               prefs.put(args[i].substring(1), args[++i]);
            }
         }
         prefs.flush();

         // Log output:
         //prefs.exportSubtree(System.out);
         return prefs;
      }
      catch (Throwable e) {
         e.printStackTrace();
         log.severe("Problems: " + e.toString());
      }
      return null;
   }
}
TOP

Related Classes of org.xmlBlaster.contrib.dbwriter.DbWriterExample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.