//****************************************************************************************
// File:          ActivityQueries.java
// Description:     Demo of Activity Queries with Java Access Provider
//                Describes how to execute query method in an activity handler.
// Created by:    Kapila
//****************************************************************************************

import ifs.fnd.ap.Record;
import ifs.fnd.ap.RecordAttribute;
import ifs.fnd.ap.RecordCollection;
import ifs.fnd.ap.Server;
import ifs.fnd.ap.APException;

public abstract class ActivityQueries {
   public static void main(String [] pars) {
      try {
         if(pars.length != 3) {
            System.out.println("Syntax : java ActivityQueries [connectstring] [identity] [password]");
            System.out.println();
            return;
         }
         
         // Create a query argument with condition : COMPANY = '10'
         Record query = new Record("SITE_QUERY");
         Record condition = new Record("SITE");
         condition.add("COMPANY", "10");
         query.addAggregate("CONDITION", condition);
         
         // Create a server and invoke server
         Server srv = new Server();
         srv.setConnectionString(pars[0]);
         srv.setCredentials(pars[1], pars[2]);
         System.out.println();
         System.out.println("Invoking : ManageUsers.ListSites..." );
         query = srv.invoke("ManageUsers", "ListSites", query);
         System.out.println("Invoke done!" );
         
         // Read the results
         RecordAttribute resultAttr = query.find("RESULT");
         System.out.println();
         if(resultAttr!=null){
            System.out.println("Sites");
            System.out.println("======");
            RecordCollection result = resultAttr.getArray();
            for(int i = 0; i < result.size(); i++){
               System.out.println((String)result.get(i).findValue("DESCRIPTION"));
            }
         } 
         else
            System.out.println("No Sites found!");
         System.out.println();
      } 
      catch(APException err) {
         err.printStackTrace(System.out);
      }
   }
}