MicroStrategy - SDK - Security Filters

mstr-sdk

How can we create security filter?

How can we determine a list of users who have no security filter?

public class FindUsersWithoutSecurityFilter {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        String methodName = "main";
        FindUsersWithoutSecurityFilter p = new FindUsersWithoutSecurityFilter();
        WebIServerSession session = getServerSession();
        WebObjectSource source = session.getFactory().getObjectSource();

        String outputFileName = "C:\\Khai\\UsersWithoutSecurityFilter.txt";
        //new PrintWriter(ServerUtil.getFileWriter(fileName, true));
        //new File(path)
        PrintWriter outputPrintWriter = new PrintWriter(new FileWriter(new File(outputFileName), true));

        WebFolder allUsers = p.getAllUsers(source); 
        int allUsersCount = allUsers.size();
        int i = 0;
        WebUserSecurityFilters sFilters;
        for (i = 0; i < allUsersCount; i++) {
            WebUserEntity userEntity = (WebUserEntity) allUsers.get(i);
            if (userEntity.isGroup()) {
                // We do not have security filter assign to groups so we do not have to do any here
            } else {
                WebUser user = (WebUser) userEntity;
                System.out.println("main.  Processing user:" + user.getDisplayName() + ",GUID:" + user.getID());
                try {
                    user.populate();
                    String loginID = user.getLoginName();
                    sFilters = user.getSecurityFilters();
                    if (sFilters.size() == 0) {
                        System.out.println("User without security filter:" + loginID + ",GUID:" + user.getID());
                        outputPrintWriter.println(loginID);
                        outputPrintWriter.flush();
                    } else {
                        System.out.println("User with security filter:" + loginID + ",GUID:" + user.getID());                        
                    }
                } catch(Exception e) {
                    Log.logger.logp(Level.SEVERE,  FindUsersWithoutSecurityFilter.class.getName(), methodName,e.getMessage(),e);
                    System.exit(1);
                }
            }
        }
        outputPrintWriter.close();
    }

    public static WebIServerSession getServerSession() {

        WebIServerSession sessionInfo = null;

        try {

            String serverName = "...";
            //String Project = "";
            String loginName = "Administrator";
            String password = "...";
            WebObjectsFactory woFact = WebObjectsFactory.getInstance();
            sessionInfo = woFact.getIServerSession();
            sessionInfo.setServerName(serverName);
            //sessionInfo.setProjectName(Project);
            sessionInfo.setLogin(loginName);
            sessionInfo.setPassword(password);
            sessionInfo.setAuthMode(EnumDSSXMLAuthModes.DssXmlAuthStandard);
            //sessionInfo.setApplicationType(EnumDSSXMLApplicationType.DssXmlApplicationCustomApp);

            //Create a new session
            sessionInfo.getSessionID();

        } catch (WebObjectsException ex) {
            System.out.println("Error creating a sesion");
        }
        return sessionInfo;
    }
    public WebFolder getAllUsers(WebObjectSource source) {

        String methodName = "getAllUsers";
        WebFolder searchResults = null;
        try {
            WebSearch search = null;
            search = source.getNewSearchObject();
            search.setAsync(false);
            search.types().add(EnumDSSXMLObjectSubTypes.DssXmlSubTypeUser);
            search.setSearchFlags(search.getSearchFlags() | EnumDSSXMLSearchFlags.DssXmlSearchAbbreviationWildCard);
            //search.setDisplayName("*");
            search.setAbbreviationPattern("*");
            search.setDomain(EnumDSSXMLSearchDomain.DssXmlSearchConfigurationAndAllProjects);
            search.submit();
            searchResults = search.getResults();
        } catch (Exception e) {
            Log.logger.logp(Level.SEVERE,  FindUsersWithoutSecurityFilter.class.getName(), methodName,e.getMessage(),e);
        }
        return searchResults;
    }
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License