r882 - in trunk: echobase-domain/src/main/java/fr/ifremer/echobase/config echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb echobase-ui echobase-ui/src/main/java/fr/ifremer/echobase/ui echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb echobase-ui/src/main/resources/i18n echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb src/site/rst
Author: tchemit Date: 2013-11-04 08:45:35 +0100 (Mon, 04 Nov 2013) New Revision: 882 Url: http://forge.codelutin.com/projects/echobase/repository/revisions/882 Log: fixes #3667: Faciliter la cr?\195?\169ation de nouvelles bases Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java trunk/echobase-ui/pom.xml trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp trunk/src/site/rst/db.rst Modified: trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java =================================================================== --- trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-domain/src/main/java/fr/ifremer/echobase/config/EchoBaseConfiguration.java 2013-11-04 07:45:35 UTC (rev 882) @@ -23,10 +23,10 @@ package fr.ifremer.echobase.config; import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import fr.ifremer.echobase.EchoBaseDateConverter; import fr.ifremer.echobase.EchoBaseTechnicalException; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.config.ApplicationConfig; @@ -37,6 +37,9 @@ import java.io.File; import java.io.IOException; import java.net.URL; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import java.util.Map; import java.util.Properties; @@ -124,9 +127,26 @@ } } - @Override - public String toString() { - return ReflectionToStringBuilder.toString(this); + public static final Comparator<EchoBaseConfigurationOption> CONFIGURATION_OPTION_COMPARATOR = new Comparator<EchoBaseConfigurationOption>() { + @Override + public int compare(EchoBaseConfigurationOption o1, EchoBaseConfigurationOption o2) { + return o1.key.compareTo(o2.key); + } + }; + + public String printConfig() { + StringBuilder builder = new StringBuilder(); + List<EchoBaseConfigurationOption> options = Lists.newArrayList(EchoBaseConfigurationOption.values()); + Collections.sort(options, CONFIGURATION_OPTION_COMPARATOR); + builder.append("Echobase configuration:"); + builder.append("\n--------------------------------------------------------------------------------\n"); + for (EchoBaseConfigurationOption option : options) { + builder.append(String.format("\n%1$-40s = %2$s", + option.getKey(), + applicationConfig.getOption(option))); + } + builder.append("\n--------------------------------------------------------------------------------"); + return builder.toString(); } public Properties getProperties() { @@ -240,8 +260,8 @@ key + "in your configuration file named echobase.properties)" ); - if (log.isInfoEnabled()) { - log.info(key + " = " + directory); + if (log.isDebugEnabled()) { + log.debug(key + " = " + directory); } try { FileUtil.createDirectoryIfNecessary(directory); Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/embeddedapplication/EmbeddedApplicationService.java 2013-11-04 07:45:35 UTC (rev 882) @@ -373,8 +373,8 @@ "could not find resource " + resourcePath); try { File outputFile = new File(targetDirectory, resourceName); - if (log.isInfoEnabled()) { - log.info("Copy binary file from " + resourceName + " to " + + if (log.isDebugEnabled()) { + log.debug("Copy binary file from " + resourceName + " to " + outputFile); } OutputStream outputStream = new FileOutputStream(outputFile); Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/workingDb/WorkingDbConfigurationService.java 2013-11-04 07:45:35 UTC (rev 882) @@ -159,7 +159,8 @@ try { String sql = String.format(CREATE_DB_SQL_QUERY, dbName, jdbcConf.getLogin()); if (log.isInfoEnabled()) { - log.info("Create new postgres database: " + dbName + " with sql: " + sql); + log.info("Create new postgres database: " + dbName + + " with sql statement: " + sql); } getEchoBasePersistenceContext().getContext().getHibernateSession().doWork( new AbstractTopiaContext.SQLWork(sql) { @@ -172,9 +173,8 @@ } ); } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Can't create a new database: " + dbName, e); - } + throw new EchoBaseTechnicalException( + "Can't create a new database: " + dbName, e); } } Modified: trunk/echobase-ui/pom.xml =================================================================== --- trunk/echobase-ui/pom.xml 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-ui/pom.xml 2013-11-04 07:45:35 UTC (rev 882) @@ -134,6 +134,10 @@ <name>echobase.data.dir</name> <value>${project.build.directory}/echobase-data</value> </systemProperty> + <systemProperty> + <name>echobase.embedded</name> + <value>true</value> + </systemProperty> </systemProperties> </configuration> </plugin> @@ -149,6 +153,7 @@ <echobase.data.dir> ${project.build.directory}/echobase-data </echobase.data.dir> + <echobase.embedded>true</echobase.embedded> <JAVA_OPTS>-Xms512m -Xmx2048m -XX:MaxPermSize=256m</JAVA_OPTS> </systemProperties> </configuration> @@ -164,6 +169,7 @@ <echobase.data.dir> ${project.build.directory}/echobase-data </echobase.data.dir> + <echobase.embedded>true</echobase.embedded> <JAVA_OPTS>-Xms512m -Xmx2048m -XX:MaxPermSize=256m</JAVA_OPTS> </systemProperties> </configuration> Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/EchoBaseApplicationContext.java 2013-11-04 07:45:35 UTC (rev 882) @@ -197,6 +197,10 @@ "Could not init logger.", e); } + if (log.isInfoEnabled()) { + log.info(configuration.printConfig()); + } + // initialize internal root context TopiaContext internalRootContext = EchobaseTopiaContexts.newInternalDb( @@ -212,8 +216,6 @@ Locale.getDefault(), getConfiguration(), getDbMeta()); -// , -// getSpatialDataCache()); // init database (and create minimal admin user if required) initInternalDatabase(serviceContext); @@ -242,10 +244,6 @@ return defaultUsersCreated; } -// public SpatialDataCache getSpatialDataCache() { -// return spatialDataCache; -// } - public EchoBaseServiceContext newServiceContext(Locale locale, TopiaContext topiaInternalContext, TopiaContext topiaContext) { @@ -255,8 +253,6 @@ locale, configuration, dbMeta); -// , -// spatialDataCache); TopiaEchoBaseInternalPersistenceContext internalPersistenceContext = new TopiaEchoBaseInternalPersistenceContext(topiaInternalContext); @@ -275,8 +271,6 @@ public void close() { try { -// spatialDataCache.clear(); - if (internalRootContext != null) { // release internal db EchoBaseEntityHelper.releaseRootContext(internalRootContext); @@ -431,8 +425,7 @@ } protected void extractFiles(EchoBaseServiceContext serviceContext) throws IOException { - EmbeddedApplicationService service = - serviceContext.newService(EmbeddedApplicationService.class); + EchoBaseConfiguration configuration = serviceContext.getConfiguration(); // copy drivers Modified: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/workingDb/CreatePostgresDb.java 2013-11-04 07:45:35 UTC (rev 882) @@ -95,20 +95,22 @@ } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Could not create db", e); - } +// if (log.isErrorEnabled()) { +// log.error("Could not create db", e); +// } try { //close working db if something is wrong. getEchoBaseSession().releaseWorkingDb(); } finally { metaJdbcConf = null; jdbcConf = null; - addFieldError( - "conf.url", - _("echobase.error.workingDbConfiguration.couldNotCreate", - e.getMessage())); +// addFieldError( +// "conf.url", +// _("echobase.error.workingDbConfiguration.couldNotCreate", +// e.getMessage())); } + + throw e; } return result; } @@ -120,28 +122,30 @@ addFieldError( "conf.driverType", _("echobase.error.workingDbConfiguration.createOnlyOnPostgresql")); - } - jdbcConf = JdbcConfiguration.newConfig( - getConf().getDriverType(), getConf().getUrl(), - login, password); + } else { + jdbcConf = JdbcConfiguration.newConfig( + getConf().getDriverType(), getConf().getUrl(), + login, password); - // gets the meta db configuration - metaJdbcConf = EchoBaseEntityHelper.newMetaWorkingDb(jdbcConf); + // gets the meta db configuration + metaJdbcConf = EchoBaseEntityHelper.newMetaWorkingDb(jdbcConf); - // check connection is ok - try { - EchoBaseEntityHelper.checkJDBCConnection(metaJdbcConf); - } catch (SQLException e) { - jdbcConf = null; - addFieldError( - "login", - _("echobase.error.workingDbConfiguration.couldNotConnect", - e.getMessage())); - addFieldError( - "password", - _("echobase.error.workingDbConfiguration.couldNotConnect", - e.getMessage())); + // check connection is ok + try { + EchoBaseEntityHelper.checkJDBCConnection(metaJdbcConf); + } catch (SQLException e) { + jdbcConf = null; + addFieldError( + "login", + _("echobase.error.workingDbConfiguration.couldNotConnect", + e.getMessage())); + addFieldError( + "password", + _("echobase.error.workingDbConfiguration.couldNotConnect", + e.getMessage())); + } } + } } Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_en_GB.properties 2013-11-04 07:45:35 UTC (rev 882) @@ -38,6 +38,7 @@ echobase.action.show.import.documentation=How to import data echobase.action.show.importDb.documentation=How to import a database echobase.action.show.showData.documentation=How to display spatial data +echobase.action.show.workingDb.documentation=How to connect to a working database echobase.action.toEnglish=English echobase.action.toFrench=French echobase.action.usingEnglish=English Modified: trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties =================================================================== --- trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-ui/src/main/resources/i18n/echobase-ui_fr_FR.properties 2013-11-04 07:45:35 UTC (rev 882) @@ -38,6 +38,7 @@ echobase.action.show.import.documentation=Comment importer des données echobase.action.show.importDb.documentation=Comment importer une base echobase.action.show.showData.documentation=Comment visualiser des données +echobase.action.show.workingDb.documentation=Comment se connecter à une base de travail echobase.action.toEnglish=En anglais echobase.action.toFrench=En français echobase.action.usingEnglish=Version anglaise Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/workingDb/manage.jsp 2013-11-04 07:45:35 UTC (rev 882) @@ -78,6 +78,13 @@ </s:else> </legend> + <div class="cleanBoth help"> + <s:a href="%{getDocumentation('db.html', null)}" target="doc"> + <s:text name="echobase.action.show.workingDb.documentation"/> + </s:a> + </div> + <br/> + <s:select key="conf.driverType" cssStyle="font-size: 140%" label="%{getText('echobase.label.driverType')}" requiredLabel="true" list="driverTypes" disabled="%{confExists}"/> @@ -101,18 +108,16 @@ <ul id="dbeditorToolbar" class="toolbar floatRight"> <s:if test="confExists"> - <s:if test="echoBaseSession.user.admin"> - <li> - <s:submit action="createPostgresDb" theme="simple" - key="echobase.action.createPostgresDb"/> - </li> - </s:if> <li> <s:submit action="connect" theme="simple" key="echobase.action.connectToWorkingDb"/> </li> <s:if test="echoBaseSession.user.admin"> <li> + <s:submit action="createPostgresDb" theme="simple" + key="echobase.action.createPostgresDb"/> + </li> + <li> <s:submit action="clone" theme="simple" key="echobase.action.clone"/> </li> Modified: trunk/src/site/rst/db.rst =================================================================== --- trunk/src/site/rst/db.rst 2013-11-03 10:39:54 UTC (rev 881) +++ trunk/src/site/rst/db.rst 2013-11-04 07:45:35 UTC (rev 882) @@ -101,7 +101,8 @@ su postgres -- Création de l'utilisateur de la base *userName* +- Création de l'utilisateur de la base *userName* (avec des droits de création + de base) :: @@ -109,21 +110,16 @@ - Création de la base de donnée *dbName* -:: +Depuis la version *2.4*, vous pouvez directement créer les bases depuis +l'interface web : - createdb -U postgres -E UTF-8 -O userName dbName +Après avoir créé une configuration de base de travail postgresql, une action +**Créer la base** est disponible (pour les utilisateurs *administrateur*). -- Donner les droits d'acces à l'utilisateur echobase (cela varie d'un système à - l'autre, donc se référer à la documentation du système). Cela fonctionne - lorsqu'on peut accéder à la base via cette commande : +A noter que l'utilisateur pour se connecter à la base doit avoir des droits de +création de base. -:: - psql -h localhost -U userName dbName - -- Il faut ensuite ne pas oublier de créer une configuration de base de travail - pour pouvoir accéder à cette base. - Spatialiser une base postgresql -------------------------------
participants (1)
-
tchemit@users.forge.codelutin.com