SUMMARY:
In Strategy Web and Strategy Developer, it is possible to create a stand-alone filter that uses the "in" qualification as shown in the screenshot below:


ACTION:
This technical note provides sample code that shows how to create this filter using Strategy Web SDK:
package com.sdk.samples.standalone;
import com.Strategy.web.beans.WebBeanException;
import com.Strategy.web.objects.WebAttribute;
import com.Strategy.web.objects.WebAttributeForm;
import com.Strategy.web.objects.WebAttributeForms;
import com.Strategy.web.objects.WebConstantNode;
import com.Strategy.web.objects.WebExpression;
import com.Strategy.web.objects.WebFilter;
import com.Strategy.web.objects.WebFolder;
import com.Strategy.web.objects.WebFormShortcutNode;
import com.Strategy.web.objects.WebIServerSession;
import com.Strategy.web.objects.WebNode;
import com.Strategy.web.objects.WebObjectSource;
import com.Strategy.web.objects.WebObjectsException;
import com.Strategy.web.objects.WebObjectsFactory;
import com.Strategy.web.objects.WebOperatorNode;
import com.Strategy.web.objects.admin.WebObjectsAdminException;
import com.Strategy.web.preferences.PreferencesException;
import com.Strategy.webapi.EnumDSSXMLApplicationType;
import com.Strategy.webapi.EnumDSSXMLDataType;
import com.Strategy.webapi.EnumDSSXMLExpressionType;
import com.Strategy.webapi.EnumDSSXMLFolderNames;
import com.Strategy.webapi.EnumDSSXMLFunction;
import com.Strategy.webapi.EnumDSSXMLNodeType;
import com.Strategy.webapi.EnumDSSXMLObjectTypes;
public class CreateNewFilterInList {
static WebObjectsFactory factory=WebObjectsFactory.getInstance();
static WebIServerSession serverSession = factory.getIServerSession();
public static void main(String[] args) throws WebBeanException, WebObjectsException, PreferencesException, WebObjectsAdminException {
serverSession.setServerName("servername");
serverSession.setProjectName("Strategy Tutorial");
serverSession.setServerPort(0);
serverSession.setLogin("Administrator");
serverSession.setPassword("");
serverSession.setApplicationType(EnumDSSXMLApplicationType.DssXmlApplicationCustomApp);
WebObjectSource objSource = factory.getObjectSource();
WebAttribute attribute = (WebAttribute) objSource.getObject("8D679D4B11D3E4981000E787EC6DE8A4", EnumDSSXMLObjectTypes.DssXmlTypeAttribute, true);
System.out.println(attribute.getDisplayName());
String folderID = objSource.getFolderID(EnumDSSXMLFolderNames.DssXmlFolderNamePublicReports);
WebFolder folder =(WebFolder) objSource.getObject(folderID, EnumDSSXMLObjectTypes.DssXmlTypeFolder, true);
WebAttributeForms regionForms = attribute.getBrowseForms();
WebAttributeForm regionForm = null;
System.out.println(regionForms.size());
for (int i = 0; i<regionForms.size(); i++){
WebAttributeForm attForm = regionForms.get(i);
System.out.println(attForm.getUseName());
if(attForm.getUseName().equalsIgnoreCase("ID")){
regionForm = attForm;
}
}
WebFilter filter = objSource.getNewFilter();
WebExpression exp = filter.getExpression();
WebOperatorNode root = (WebOperatorNode) exp.getRootNode();
System.out.println(exp.getXML());
WebOperatorNode opNode = exp.createOperatorNode(EnumDSSXMLExpressionType.DssXmlFilterListFormQual, EnumDSSXMLFunction.DssXmlFunctionIn , root);
System.out.println(exp.getXML());
WebFormShortcutNode shNode = exp.createFormShortcutNode(attribute, regionForm, opNode);
System.out.println(exp.getXML());
WebConstantNode constNode = exp.createConstantNode("1", EnumDSSXMLDataType.DssXmlDataTypeReal, opNode);
WebConstantNode constNode2 = exp.createConstantNode("2", EnumDSSXMLDataType.DssXmlDataTypeReal, opNode);
WebConstantNode constNode3 = exp.createConstantNode("3", EnumDSSXMLDataType.DssXmlDataTypeReal, opNode);
System.out.println(exp.getXML());
WebFilter newFilter = (WebFilter) objSource.save(filter, "RegionInFilter", folder);
}
}