Example code for programmers

The following code example illustrates how to use the XML Scripting tool programmatically from a Java application:

package com.ibm.mobileservices.xmlscripting.sample;
 
/**
 * Title:       XML Scripting tool Sample Application for DB2 Everyplace Sync Server
 * Description: Example of using the XML tool API to write custom administration 
                utilities.
 * Copyright:   Copyright (c) 2002
 * Company:     IBM
 */
 
import java.io.FileWriter;
import java.io.FileReader;
 
import com.ibm.mobileservices.xmlscripting.XMLTool;
import com.ibm.mobileservices.xmlscripting.XMLToolFactory;
 
/**
 * Main class for command line invocation of the XML Scripting sample tool.
 */
public class RunXML {
  
  private RunXML(){}
  
  /**
   * Method used when running as an application from the command line.
   * @param String[] an array of command line parameters
   * @return void
   * 
   * Command line arguments: -x|-d filename
   * 
   * -x        create XML file from control database.
   * -d        apply XML file to control database.
   * -v        validate XML file with its DTD.
   * filename       XML file name to process.
   * 
   * Example: java com.ibm.mobileservices.xmlscripting.RunXML -x "c:\mydb.xml"
   * Example: java com.ibm.mobileservices.xmlscripting.RunXML -d "c:\mycommands.xml"
   */
  public static void main(String args[]){
    String filename = null;
    String toOrFromXML = null;
    int xmlType = XMLTool.ADD;
    
    String xml = null;
    if (args != null && (args.length > 1 && args.length < 3) ){
      toOrFromXML = args[0]; //create xml or db from xml? "-x" means create xml, 
      "-d" means populate control db from xml.
      filename = args[1]; //xml file name.
    }
    
    //check if filename is passed in otherwise display help.
    if (filename == null || 
        filename.equals("") || 
        filename.indexOf("?") > -1 ||
        toOrFromXML.indexOf("?") > -1){
      System.out.println("Command line arguments: -x|-d filename\n"+
            " -x        create XML file from control database.\n"+
            " -d        apply XML file to control database.\n"+
            " -v        validate XML file with its DTD.\n"+
            " filename       XML file name to process."+
                     
            " Example: java com.ibm.mobileservices.xmlscripting.sample.RunXML -x \
                       "c:\\mydb.xml\"\n"+
            " Example: java com.ibm.mobileservices.xmlscripting.sample.RunXML -d \
                        "c:\\mycommands.xml\"\n\n");
      return;
    }
    
    if (toOrFromXML.equalsIgnoreCase("-x") || toOrFromXML.equalsIgnoreCase("/x"))
         { //generate xml file:
      System.out.println("Generating xml file: " + filename);
      try{
        //backUpOldFile(filename);        
        
        FileWriter fileWriter = null;      
        try{
          //get ready to write to the file:
          fileWriter = new FileWriter(filename);
          
          //create an instance of XMLTool. Each instance opens separate 
          //connections to the control database. It is strongly recommended 
          //that you use one instance to operate from single thread at a time. 
          //If you use the same instance from multiple threads, the threads will 
          //typically be synchronized on that database connection. If that causes 
          //a bottleneck,create multiple instances of the xml tool to use from 
          //multiple threads. Usually that should not be needed.The only case 
          //it may become handy is the creation and removalof users from the 
          //system. 
          //XMLTool xmlTool = XMLToolFactory.createXMLTool();
          
          //set progress listener
          //    (ProgressListener provides hooks to intercept events).
          //Default progress listener outputs messages to the System.out.
          //A custom progress listener is typically used to re-throw an exception
          //to abort processing of xml tags if the programmar thinks that 
          //is necessary.
          xmlTool.setProgressListener
               (XMLToolFactory.createDefaultProgressListener());
          
          //There are different versions of generateXML, this is one of them:
          xmlTool.generateXML(fileWriter,xmlType);
        }
        finally{
          if (fileWriter!=null) fileWriter.close();
        }
        
        System.out.println("Done generating xml file: " + filename);
        
      }catch(Exception ex){
        System.out.println("Failed generating xml file.");
        System.out.println(ex.getMessage());
      }
    }    
    else if (toOrFromXML.equalsIgnoreCase("-d") || 
           toOrFromXML.equalsIgnoreCase("/d")) 
    { //apply xml to database:
      System.out.println("Applying xml file: " + filename);
      try{
        FileReader aReader = null;
        try{
          //get ready to read the file:
          aReader = new FileReader(filename);
          
          //create an instance of XML Tool:
          XMLTool xmlTool = XMLToolFactory.createXMLTool();
          
          //set progress listener:
          xmlTool.setProgressListener
            (XMLToolFactory.createDefaultProgressListener());
          
          //apply the xml commands:
          xmlTool.applyXML(aReader);
        }
        finally{
          if (aReader!=null) aReader.close();
        }
        System.out.println("Done applying xml.");
      }
      catch(Exception ex){
        System.out.println("Failed applying xml.");
        System.out.println(ex.getMessage());
      }
    }
    else if (toOrFromXML.equalsIgnoreCase("-v") || 
             toOrFromXML.equalsIgnoreCase("/v"))
    { //validate xml System.out.println("Validating xml file: " + filename);
      try{
       FileReader aReader = null;
       try{
        aReader = new FileReader(filename);
        XMLTool xmlTool = XMLToolFactory.createXMLTool();
        xmlTool.setProgressListener
             (XMLToolFactory.createDefaultProgressListener());
        xmlTool.validateXML(aReader);
        }
        finally{
          if (aReader!=null) aReader.close();
        }
        System.out.println("Done validating xml.");
      }
      catch(Exception ex){
        System.out.println("Failed validating xml.");
        System.out.println(ex.getMessage());
      }
    }
  }
} 

Related concepts

Related tasks

Related reference