LJ,
Field ID or Name is irrelevant. What is suggested is instead of writing:
QualifierInfo qual = ctl.parseQualification("Roles", "'Role ID' =
-900000"); //works in 7.1 just fine also works just fine for qual not
having negative sign
the work-around is to add the following:
List <Field> fields = ctl.getListFieldObjects(formName); // not
required for non-negatives apparently
then change qualifier inputs to use the 'fields' reference:
QualifierInfo qual = ctl.parseQualification(qualStr, fields, null,
Constants.AR_QUALCONTEXT_DEFAULT);
So tell me... defect or no defect? I was told no defect by support,
therefore no ETA on a fix. I suppose that's fine if you don't have a
"negative" outlook on things ;-)
Maybe that's a polite way of saying I have no idea what I'm doing. All I
know is it worked and then it didn't but only for one minor situational
change.
-Eric
________________________________
From: Action Request System discussion list(ARSList)
[mailto:[email protected]] On Behalf Of LJ Longwing
Sent: Thursday, November 12, 2009 12:21 PM
To: [email protected]
Subject: Re: Java API - parseQualification Error - Part 2
**
Eric,
So they are saying the problem is looking up the field name, and if you
use the Field ID it works just fine?
________________________________
From: Action Request System discussion list(ARSList)
[mailto:[email protected]] On Behalf Of Roys, Eric D
Sent: Thursday, November 12, 2009 10:40 AM
To: [email protected]
Subject: Re: Java API - parseQualification Error - Part 2
**
For anyone interested (part 2 of 2)...
Secondary response from support (it doesn't error as before):
Sample API program that works for me.. customer will need to change the
details marked with a " <------" for his test..
import com.bmc.arsys.api.*;
import java.util.*;
public class JavaAPITest {
private ARServerUser server;
private String formName= "Roles"; <------
public JavaAPITest() {
server = new ARServerUser();
server.setServer("atlwin01"); <------
server.setPort(0); <------
server.setUser("Demo"); <------
server.setPassword(""); <------
}
public static void main(String[] args) {
JavaAPITest test = new JavaAPITest();
test.connect();
test.queryEntrysByQual("( \'Create Date\' > \"1/1/2009\" )");
test.queryEntrysByQual("( \'1702\' = -1210 )");
<------
test.cleanup();
}
//
// Connect the current user to the server.
//
void connect() {
System.out.println();
System.out.println("Connecting to AR Server...");
try {
server.verifyUser();
}
catch (ARException e) {
//
//This exception is triggered by a bad server, password or,
//if guest access is turned off, by an unknown username.
//
ARExceptionHandler(e, "Cannot verify user " + server.getUser() +
".");
System.exit(1);
}
System.out.println("Connected to AR Server " +
server.getServer());
}
//
// Retrieve entries from the form using the given qualification. With //
the returned entry set, print out the ID of each entry and the //
contents in its shortDescription field.
//
void queryEntrysByQual(String qualStr) {
System.out.println();
System.out.println ("Retrieving entryies with qualification " +
qualStr);
try {
// Retrieve the detail info of all fields from the form.
List <Field> fields = server.getListFieldObjects(formName);
// Create the search qualifier.
QualifierInfo qual = server.parseQualification(qualStr, fields,
null, Constants.AR_QUALCONTEXT_DEFAULT);
int[] fieldIds = {2, 7, 8};
OutputInteger nMatches = new OutputInteger();
List<SortInfo> sortOrder = new ArrayList<SortInfo>();
sortOrder.add(new SortInfo(2, Constants.AR_SORT_DESCENDING));
// Retrieve entries from the form using the given
// qualification.
List<Entry> entryList = server.getListEntryObjects(formName, qual,
0, Constants.AR_NO_MAX_LIST_RETRIEVE, sortOrder, fieldIds, true,
nMatches);
System.out.println ("Query returned " + nMatches + " matches.");
if( nMatches.intValue() > 0){
// Print out the matches.
System.out.println("Request Id " + "Short Description" );
for( int i = 0; i < entryList.size(); i++ ){
System.out.println (entryList.get(i).getEntryId() + " " +
entryList.get(i).get(Constants.AR_CORE_SHORT_DESCRIPTION));
}
}
}
catch( ARException e ) {
ARExceptionHandler(e, "Problem while querying by qualifier. ");
}
}
public void ARExceptionHandler(ARException e, String errMessage){
System.out.println(errMessage); printStatusList(server.getLastStatus());
System.out.print("Stack Trace:");
e.printStackTrace();
}
public void printStatusList(List<StatusInfo> statusList) { if
(statusList == null || statusList.size()==0) {
System.out.println("Status List is empty."); return; }
System.out.print("Message type: ");
switch(statusList.get(0).getMessageType())
{
case Constants.AR_RETURN_OK:
System.out.println("Note");
break;
case Constants.AR_RETURN_WARNING:
System.out.println("Warning");
break;
case Constants.AR_RETURN_ERROR:
System.out.println("Error");
break;
case Constants.AR_RETURN_FATAL:
System.out.println("Fatal Error");
break;
default:
System.out.println("Unknown (" +
statusList.get(0).getMessageType() + ")"); break; }
System.out.println("Status List:"); for (int i=0; i < statusList.size();
i++) { System.out.println(statusList.get(i).getMessageText());
System.out.println(statusList.get(i).getAppendedText());
}
}
public void cleanup() {
// Logout the user from the server. This releases the resource //
allocated on the server for the user.
server.logout();
System.out.println();
System.out.println("User logged out.");
}
}
_Platinum Sponsor: [email protected] ARSlist: "Where the Answers
Are"_ _Platinum Sponsor: [email protected] ARSlist: "Where the
Answers Are"_
_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor:[email protected] ARSlist: "Where the Answers Are"