<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Answers to: Programmatically set ivy server's system property?</title><link>https://answers.axonivy.com/questions/226/programmatically-set-ivy-server-s-system-property</link><description>&lt;p&gt;Is there a possibility to programmatically set system properties (e.g. email server settings) from within an ivy application? Is there an API?&lt;/p&gt;</description><atom:link href="https://answers.axonivy.com/questions/226/programmatically-set-ivy-server-s-system-property" rel="self"></atom:link><language>en</language><lastBuildDate>Tue, 20 May 2014 04:53:43 -0400</lastBuildDate><item><title>Answer by trungdv</title><link>https://answers.axonivy.com/questions/226/programmatically-set-ivy-server-s-system-property/704</link><description>&lt;p&gt;Here i have complete class we're using for this purpose:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.Callable;

import ch.ivyteam.db.jdbc.ConnectionUrl;
import ch.ivyteam.db.jdbc.DatabaseConnectionConfiguration;
import ch.ivyteam.ivy.application.IApplication;
import ch.ivyteam.ivy.application.IApplicationConfigurationManager;
import ch.ivyteam.ivy.application.IExternalDatabaseConfiguration;
import ch.ivyteam.ivy.application.restricted.IEnvironment;
import ch.ivyteam.ivy.application.restricted.IGlobalVariable;
import ch.ivyteam.ivy.application.restricted.IWebService;
import ch.ivyteam.ivy.environment.Ivy;
import ch.ivyteam.ivy.security.IRole;
import ch.ivyteam.ivy.security.IUser;
import ch.ivyteam.ivy.security.SecurityManagerFactory;
import ch.ivyteam.ivy.server.IServer;
import ch.ivyteam.ivy.server.ServerFactory;
import ch.ivyteam.ivy.system.IProperty;
import ch.soreco.customers.xabs.DatabaseConfig;
import ch.soreco.customers.xabs.EmailServerConfig;


@SuppressWarnings("restriction")
public class XpertIvyServerUtil {
    public static IServer server;
    public static IApplicationConfigurationManager appConfManager;


    static {
        server = ServerFactory.getServer();
        appConfManager = server.getApplicationConfigurationManager();
    }

    public static IApplication getApplication(final String applicationName) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;IApplication&amp;gt;() {

            @Override
            public IApplication call() throws Exception {
                return appConfManager.findApplication(applicationName);
            }
        });
    }
    public static List&amp;lt;IApplication&amp;gt; getApplicationList() throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;List&amp;lt;IApplication&amp;gt;&amp;gt;() {

            @Override
            public List&amp;lt;IApplication&amp;gt; call() throws Exception {
                return appConfManager.getApplications();
            }
        });
    }

    public static List&amp;lt;IEnvironment&amp;gt; getEnvironmentList(final IApplication application) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;List&amp;lt;IEnvironment&amp;gt;&amp;gt;() {

            @Override
            public List&amp;lt;IEnvironment&amp;gt; call() throws Exception {
                return application.getEnvironments();
            }
        });
    }

    public static IEnvironment getEnvironment(final IApplication application, final String environmentName) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;IEnvironment&amp;gt;() {

            @Override
            public IEnvironment call() throws Exception {
                return application.findEnvironment(environmentName);
            }
        });
    }

    public static void setActiveEnvironment(final IApplication application,final String environmentName) throws Exception{
        SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {
            @Override
            public Void call() throws Exception {
                application.setActiveEnvironment(environmentName);
                return null;
            }
        });
    }

    public static String getActiveEnvironment(final IApplication application) throws Exception{
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;String&amp;gt;() {
            @Override
            public String call() throws Exception {
                return application.getActiveEnvironment();
            }
        });

    }

    public static List&amp;lt;IGlobalVariable&amp;gt; getGlobalVariableList(final IEnvironment environment) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;List&amp;lt;IGlobalVariable&amp;gt;&amp;gt;() {

            @Override
            public List&amp;lt;IGlobalVariable&amp;gt; call() throws Exception {

                return environment.getGlobalVariables();
            }
        });
    }


    public static List&amp;lt;IExternalDatabaseConfiguration&amp;gt; getDatabaseList(final IEnvironment environment) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;List&amp;lt;IExternalDatabaseConfiguration&amp;gt;&amp;gt;() {

            @Override
            public List&amp;lt;IExternalDatabaseConfiguration&amp;gt; call() throws Exception {
                return environment.getExternalDatabaseConfigurations();
            }
        });
    }

    public static List&amp;lt;IWebService&amp;gt; getWebServiceList(final IEnvironment environment) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;List&amp;lt;IWebService&amp;gt;&amp;gt;() {

            @Override
            public List&amp;lt;IWebService&amp;gt; call() throws Exception {
                return environment.getWebServices();
            }
        });
    }



    public static IExternalDatabaseConfiguration getDatabase(final IEnvironment environment, final String databaseName) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;IExternalDatabaseConfiguration&amp;gt;() {

            @Override
            public IExternalDatabaseConfiguration call() throws Exception {
                return environment.findExternalDatabaseConfiguration(databaseName);
            }
        });
    }


    public static DatabaseConfig getDatabaseConfig(final IEnvironment environment, final String databaseName) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;DatabaseConfig&amp;gt;() {

            @Override
            public DatabaseConfig call() throws Exception {
                IExternalDatabaseConfiguration exDB = environment.findExternalDatabaseConfiguration(databaseName);
                DatabaseConnectionConfiguration db = exDB.getDatabaseConnectionConfiguration();
                DatabaseConfig data = new DatabaseConfig();
                data.setUsernameDB(db.getUserName());
                data.setPasswordDB(db.getPassword());

                String connectUrl = db.getConnectionUrl();
                ConnectionUrl url;
                if(connectUrl.contains(";")) {
                    url = new ConnectionUrl(connectUrl.replaceFirst(";DatabaseName=","/"));
                } else {
                    url = new ConnectionUrl(connectUrl);
                }
                data.setPortDB(url.getDbPort());
                data.setIsPortDBDefault(false);
                if("".equals(data.getPortDB()) || data.getPortDB() == null) {
                    data.setIsPortDBDefault(true);
                }
                data.setHostDB(url.getDbHost());
                data.setDatabaseName(url.getDbName());
                return data;
            }
        });
    }

    public static List&amp;lt;IProperty&amp;gt; getSystemProperties() throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;List&amp;lt;IProperty&amp;gt;&amp;gt;() {

            @Override
            public List&amp;lt;IProperty&amp;gt; call() throws Exception {
                return appConfManager.getSystemProperties();
            }
        });
    }

    public static String getSystemProperty(final String propName) throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;String&amp;gt;() {

            @Override
            public String call() throws Exception {
                return appConfManager.getSystemProperty(propName).getValue();
            }
        });
    }


    public static void updateDatabaseConfig(final IEnvironment environment,final String databaseName,final DatabaseConfig input) throws Exception {
        SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {
            @Override
            public Void call() throws Exception {
                IExternalDatabaseConfiguration exDB = XpertIvyServerUtil.getDatabase(environment, databaseName);
                DatabaseConnectionConfiguration db = exDB.getDatabaseConnectionConfiguration();

                db.setConnectionUrl(input.getConnectDBUrl());
                db.setUserName(input.getUsernameDB());
                db.setPassword(input.getPasswordDB());

                exDB.setDatabaseConnectionConfiguration(db);
                return null;
            }
        });
    }


    public static IUser findUser(String userName, IApplication app)
    {
        List&amp;lt;IUser&amp;gt; users = app.getSecurityContext().getUsers();
        IUser foundUser = null;
        for (IUser user : users)
        {
            if (user.getName().equalsIgnoreCase(userName))
            {
                foundUser = user;
                break;
            }
        }
        return foundUser;
    }


    public static void createIUser(final String userName, final String email,
            final String fullUserName, final String password, final Locale eMailLanguage, final String externalSecuritySystemName) throws Exception {
        SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {

            @Override
            public Void call() throws Exception {

                Ivy.session().getSecurityContext().createUser(userName, fullUserName, password, eMailLanguage, email, externalSecuritySystemName);

                return null;
            }
        });
    }

    public static void addIRole(final IUser user, final IRole role) throws Exception {
        SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {

            @Override
            public Void call() throws Exception {

                List&amp;lt;IRole&amp;gt; ivyActualUserRoles = user.getRoles();

                if(!ivyActualUserRoles.contains(role.getName())){
                    user.addRole(role);
                }

                return null;
            }
        });
    }

    public static void removeIRole(final IUser user, final IRole role) throws Exception {
        SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {

            @Override
            public Void call() throws Exception {

                List&amp;lt;IRole&amp;gt; ivyActualUserRoles = user.getRoles();

                if(!ivyActualUserRoles.contains(role.getName())){
                    user.removeRole(role);
                }

                return null;
            }
        });
    }

    public static EmailServerConfig getEmailServerConfig() throws Exception {
        return SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;EmailServerConfig&amp;gt;() {
            @Override
            public EmailServerConfig call() throws Exception {
                EmailServerConfig config =  new EmailServerConfig();
                config.setHostEmailServer(appConfManager.getSystemProperty("EMail.Server.Host").getValue());
                config.setMailAddress(appConfManager.getSystemProperty("EMail.Server.MailAddress").getValue());
                config.setUserEmailServer(appConfManager.getSystemProperty("EMail.Server.User").getValue());
                config.setPasswordEmailServer(appConfManager.getSystemProperty("EMail.Server.Password").getValue());
                config.setPortEmailServer(appConfManager.getSystemProperty("EMail.Server.Port").getValue());
                if(config.getPortEmailServer() == null || config.getPortEmailServer().isEmpty() || config.getPortEmailServer().equals("-1")) {
                    config.setIsPortEmailServerDefault(true);
                }
                return config;
            }
        });
    }

    public static void updateEmailServerConfig(final EmailServerConfig input) throws Exception {
        SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {
            @Override
            public Void call() throws Exception {
                appConfManager.getSystemProperty("EMail.Server.Host").setValue(input.getHostEmailServer());
                appConfManager.getSystemProperty("EMail.Server.MailAddress").setValue(input.getMailAddress());
                appConfManager.getSystemProperty("EMail.Server.User").setValue(input.getUserEmailServer());
                appConfManager.getSystemProperty("EMail.Server.Password").setValue(input.getPasswordEmailServer());
                return null;
            }
        });
    }

    public static void updateGlobalVariableValue(final String globalName,final String globalValue,final IEnvironment environment) throws Exception {
        SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {
            @Override
            public Void call() throws Exception {

                IGlobalVariable variable = environment.findGlobalVariable(globalName);

                if (variable != null) {
                    if (variable.getDefaultGlobalVariable() != null) {
                        variable.setValue(globalValue);
                    } else {
                        environment.createGlobalVariable(globalName, variable.getDescription(), globalValue);
                    }
                }

                return null;
            }
        });
    }

    public static Boolean testConnection (DatabaseConfig input) {
        Boolean isSuccess = false;
        Connection conn;
        try {
            conn = DriverManager.getConnection(input.getConnectDBUrl(), input.getUsernameDB(), input.getPasswordDB());
            isSuccess = conn.isValid(10);// 10 sec
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return isSuccess;
    }
}
&lt;/code&gt;&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">trungdv</dc:creator><pubDate>Tue, 20 May 2014 04:53:43 -0400</pubDate><guid>https://answers.axonivy.com/questions/226/programmatically-set-ivy-server-s-system-property/704</guid></item><item><title>Answer by anphunl</title><link>https://answers.axonivy.com/questions/226/programmatically-set-ivy-server-s-system-property/228</link><description>&lt;p&gt;Dear Daniel,&lt;/p&gt;
&lt;p&gt;We think we can do it via IApplicationConfigurationManager class&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public static void setSystemProperty(final String propName, final String propValue) throws Exception {
    SecurityManagerFactory.getSecurityManager().executeAsSystem(new Callable&amp;lt;Void&amp;gt;() {

        @Override
        public Void call() throws Exception {
            IServer server = ServerFactory.getServer();
            IApplicationConfigurationManager appConfManager = server.getApplicationConfigurationManager();

            IProperty property = appConfManager.getSystemProperty(propName);

            if (property != null) {
                property.setValue(propValue);
            }

            return null;
        }
    });
}
&lt;/code&gt;&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">anphunl</dc:creator><pubDate>Fri, 03 Jan 2014 11:20:57 -0500</pubDate><guid>https://answers.axonivy.com/questions/226/programmatically-set-ivy-server-s-system-property/228</guid></item></channel></rss>