Quick Start (SOAP mode): Creating search rules using the Java API

The following Java code example creates two text patterns that the Output service searches for. The first text pattern is Mortgage. If found, the Output service uses the form design named Mortgage.xdp . The second text pattern is Automobile. If found, the Output service uses the form design named AutomobileLoan.xdp . If neither text pattern is located, the Output service uses the default form design named Loan.xdp. The Loan.pdf is written to the C:\Adobe folder located on the J2EE application server hosting AEM Forms, not the client computer. (See Creating Search Rules.)

/* 
    * This Java Quick Start uses the SOAP mode and contains the following JAR files 
    * in the class path: 
    * 1. adobe-output-client.jar 
    * 2. adobe-livecycle-client.jar 
    * 3. adobe-usermanager-client.jar 
    * 4. activation.jar (required for SOAP mode) 
    * 5. axis.jar (required for SOAP mode) 
    * 6. axis.jar (required for SOAP mode) 
    * 7. commons-codec-1.3.jar (required for SOAP mode) 
    * 8. commons-collections-3.2.jar  (required for SOAP mode) 
    * 9. commons-discovery.jar (required for SOAP mode) 
    * 10. commons-logging.jar (required for SOAP mode) 
    * 11. dom3-xml-apis-2.5.0.jar (required for SOAP mode) 
    * 12. jaxen-1.1-beta-9.jar (required for SOAP mode) 
    * 13. jaxrpc.jar (required for SOAP mode) 
    * 14. log4j.jar (required for SOAP mode) 
    * 15. mail.jar (required for SOAP mode) 
    * 16. saaj.jar (required for SOAP mode) 
    * 17. wsdl4j.jar (required for SOAP mode) 
    * 18. xalan.jar (required for SOAP mode) 
    * 19. xbean.jar (required for SOAP mode) 
    * 20. xercesImpl.jar (required for SOAP mode) 
    *  These JAR files are located in the following path: 
    * <install directory>/sdk/client-libs/common 
    *  
    *  
    * <install directory>/jboss/client 
    *  
    * SOAP required JAR files are located in the following path: 
    * <install directory>/sdk/client-libs/thirdparty 
    *  
    * If you want to invoke a remote forms server instance and there is a 
    * firewall between the client application and the server, then it is  
    * recommended that you use the SOAP mode. When using the SOAP mode,  
    * you have to include these additional JAR files 
    *  
    * For information about the SOAP  
    * mode, see "Setting connection properties" in Programming  
    * with LiveCycle 
    */ 
import com.adobe.livecycle.output.client.*; 
import java.util.*; 
import java.io.File; 
import java.io.FileInputStream; 
import com.adobe.idp.Document; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; 
import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties; 
 
public class CreateSearchRulesSOAP { 
 
    public static void main(String[] args) { 
        try{ 
                                             
            //Set connection properties required to invoke LiveCycle using SOAP mode                                 
            Properties connectionProps = new Properties(); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_SOAP_ENDPOINT, "http://[server]:[port]"); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,ServiceClientFactoryProperties.DSC_SOAP_PROTOCOL);           
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "JBoss"); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator"); 
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password"); 
                             
            //Create a ServiceClientFactory object 
            ServiceClientFactory myFactory = ServiceClientFactory.createInstance(connectionProps); 
                 
            //Create an OutputClient object 
            OutputClient outClient = new OutputClient(myFactory);  
                         
            //Reference form data 
            FileInputStream fileInputStream = new FileInputStream("C:\\Adobe\Loan.xml");     
            Document inXMData = new Document (fileInputStream); 
             
            //Define two text patterns 
            Rule mortageRule = new Rule(); 
            mortageRule.setPattern("Mortgage"); 
            mortageRule.setForm("Mortgage.xdp"); 
             
            Rule automobileRule = new Rule(); 
            automobileRule.setPattern("Automobile"); 
            automobileRule.setForm("AutomobileLoan.xdp"); 
             
            //Add the Rules to a List object 
            List<Rule> myList = new ArrayList<Rule>(); 
            myList.add(mortageRule); 
            myList.add(automobileRule); 
                                     
            //Define PDF run-time options which includes Search Rules     
            PDFOutputOptionsSpec outputOptions = new PDFOutputOptionsSpec(); 
            outputOptions.setFileURI("C:\\Adobe\Loan.pdf"); 
            outputOptions.setRules(myList); 
            outputOptions.setLookAhead(900);  
             
            //Define rendering run-time options 
            RenderOptionsSpec pdfOptions = new RenderOptionsSpec();  
            pdfOptions.setCacheEnabled(new Boolean(true)); 
                 
            //Create a PDF document based on multiple form designs         
            OutputResult outputDocument = outClient.generatePDFOutput( 
                TransformationFormat.PDF, 
                "Loan.xdp", 
                "C:\\Adobe", 
                outputOptions, 
                pdfOptions, 
                inXMData 
            ); 
         
            //Write the results of the operation to OutputLog.xml 
            Document resultData = outputDocument.getStatusDoc(); 
            File myFile = new File("C:\\Adobe\OutputLog.xml"); 
            resultData.copyToFile(myFile); 
            } 
        catch (Exception ee) 
                { 
                    ee.printStackTrace(); 
                } 
        } 
} 

// Ethnio survey code removed