commit
7842530c71
29 changed files with 171 additions and 180 deletions
3
NEWS.rst
3
NEWS.rst
|
|
@ -70,11 +70,12 @@ Changes
|
||||||
* Update JodaTime
|
* Update JodaTime
|
||||||
* Update Jasper Reports
|
* Update Jasper Reports
|
||||||
* Update EasyMock
|
* Update EasyMock
|
||||||
* Update JDBC driver
|
* Update JDBC drivers (PostgreSQL + MySQL)
|
||||||
* Update AspectJ Weaver
|
* Update AspectJ Weaver
|
||||||
* Update JAX-RS API
|
* Update JAX-RS API
|
||||||
* Update BeanShell
|
* Update BeanShell
|
||||||
* Update Quartz Framework
|
* Update Quartz Framework
|
||||||
|
* Update Hibernate
|
||||||
|
|
||||||
* Update LibrePlan version to 1.6.0
|
* Update LibrePlan version to 1.6.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,11 +92,11 @@ Develop LibrePlan in Intellij IDEA using MySQL
|
||||||
LibrePlan using MySQL you have to do 2 small changes:
|
LibrePlan using MySQL you have to do 2 small changes:
|
||||||
|
|
||||||
* In section `Configure project to run`_ you have to set the *Profiles* to:
|
* In section `Configure project to run`_ you have to set the *Profiles* to:
|
||||||
``-dev -mysql -userguide -reports -i18n``
|
``dev mysql -userguide -reports -i18n``
|
||||||
|
|
||||||
* Remember that the three last profiles that are being disabled is just to save
|
* Remember that the three last profiles that are being disabled is just to save
|
||||||
compilation time and not mandatory. However, to develop using MySQL you have
|
compilation time and not mandatory. However, to develop using MySQL you have
|
||||||
to set at least the first two: ``-dev`` and ``-mysql``.
|
to set at least the first two: ``dev`` and ``mysql``.
|
||||||
|
|
||||||
|
|
||||||
.. _LibrePlan: http://www.libreplan.com/
|
.. _LibrePlan: http://www.libreplan.com/
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.xnap.commons</groupId>
|
<groupId>com.googlecode.gettext-commons</groupId>
|
||||||
<artifactId>maven-gettext-plugin</artifactId>
|
<artifactId>gettext-maven-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<targetBundle>app.i18n.Messages</targetBundle>
|
<targetBundle>app.i18n.Messages</targetBundle>
|
||||||
<poDirectory>${project.build.sourceDirectory}/../resources/i18n</poDirectory>
|
<poDirectory>${project.build.sourceDirectory}/../resources/i18n</poDirectory>
|
||||||
|
|
@ -40,16 +40,16 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-source-plugin</artifactId>
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>default</id>
|
<id>default</id>
|
||||||
<phase>package</phase>
|
<phase>package</phase>
|
||||||
<goals>
|
<goals>
|
||||||
<goal>jar-no-fork</goal>
|
<goal>jar-no-fork</goal>
|
||||||
</goals>
|
</goals>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
@ -59,7 +59,7 @@
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Gettext commons -->
|
<!-- Gettext commons -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xnap.commons</groupId>
|
<groupId>com.googlecode.gettext-commons</groupId>
|
||||||
<artifactId>gettext-commons</artifactId>
|
<artifactId>gettext-commons</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,20 +31,24 @@ import org.zkoss.util.Locales;
|
||||||
|
|
||||||
public class I18nHelper {
|
public class I18nHelper {
|
||||||
|
|
||||||
private static HashMap<Locale, I18n> localesCache = new HashMap<Locale, I18n>();
|
private static HashMap<Locale, I18n> localesCache = new HashMap<>();
|
||||||
|
|
||||||
public static I18n getI18n() {
|
public static I18n getI18n() {
|
||||||
if (localesCache.keySet().contains(Locales.getCurrent())) {
|
if ( localesCache.keySet().contains(Locales.getCurrent()) ) {
|
||||||
return localesCache.get(Locales.getCurrent());
|
return localesCache.get(Locales.getCurrent());
|
||||||
}
|
}
|
||||||
|
|
||||||
I18n i18n = I18nFactory.getI18n(I18nHelper.class, "app.i18n.Messages", Locales.getCurrent(),
|
I18n i18n = I18nFactory.getI18n(
|
||||||
|
I18nHelper.class,
|
||||||
|
"app.i18n.Messages",
|
||||||
|
Locales.getCurrent(),
|
||||||
org.xnap.commons.i18n.I18nFactory.FALLBACK);
|
org.xnap.commons.i18n.I18nFactory.FALLBACK);
|
||||||
|
|
||||||
localesCache.put(Locales.getCurrent(), i18n);
|
localesCache.put(Locales.getCurrent(), i18n);
|
||||||
|
|
||||||
return i18n;
|
return i18n;
|
||||||
}
|
}
|
||||||
|
// TODO refactor symbol _
|
||||||
public static String _(String str) {
|
public static String _(String str) {
|
||||||
return getI18n().tr(str);
|
return getI18n().tr(str);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Gettext commons -->
|
<!-- Gettext commons -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xnap.commons</groupId>
|
<groupId>com.googlecode.gettext-commons</groupId>
|
||||||
<artifactId>gettext-commons</artifactId>
|
<artifactId>gettext-commons</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
@ -149,7 +149,7 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.liquibase</groupId>
|
<groupId>org.liquibase</groupId>
|
||||||
<artifactId>liquibase-maven-plugin</artifactId>
|
<artifactId>liquibase-maven-plugin</artifactId>
|
||||||
<version>3.5.0</version>
|
<version>3.5.1</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<phase>process-resources</phase>
|
<phase>process-resources</phase>
|
||||||
|
|
@ -178,7 +178,7 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.liquibase</groupId>
|
<groupId>org.liquibase</groupId>
|
||||||
<artifactId>liquibase-maven-plugin</artifactId>
|
<artifactId>liquibase-maven-plugin</artifactId>
|
||||||
<version>3.5.0</version>
|
<version>3.5.1</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<phase>process-resources</phase>
|
<phase>process-resources</phase>
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
*/
|
*/
|
||||||
@Repository
|
@Repository
|
||||||
@Scope(BeanDefinition.SCOPE_SINGLETON)
|
@Scope(BeanDefinition.SCOPE_SINGLETON)
|
||||||
public class ConnectorDAO extends GenericDAOHibernate<Connector, Long>
|
public class ConnectorDAO extends GenericDAOHibernate<Connector, Long> implements IConnectorDAO {
|
||||||
implements IConnectorDAO {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
|
|
@ -50,8 +49,8 @@ public class ConnectorDAO extends GenericDAOHibernate<Connector, Long>
|
||||||
@Override
|
@Override
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public Connector findUniqueByName(String name) {
|
public Connector findUniqueByName(String name) {
|
||||||
Criteria c = getSession().createCriteria(Connector.class).add(
|
Criteria c = getSession().createCriteria(Connector.class).add(Restrictions.eq("name", name));
|
||||||
Restrictions.eq("name", name));
|
|
||||||
return (Connector) c.uniqueResult();
|
return (Connector) c.uniqueResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -63,6 +62,7 @@ public class ConnectorDAO extends GenericDAOHibernate<Connector, Long>
|
||||||
|
|
||||||
private boolean existsOtherConnectorByName(Connector connector) {
|
private boolean existsOtherConnectorByName(Connector connector) {
|
||||||
Connector found = findUniqueByName(connector.getName());
|
Connector found = findUniqueByName(connector.getName());
|
||||||
|
|
||||||
return found != null && found != connector;
|
return found != null && found != connector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,7 @@ import org.libreplan.business.common.entities.JobSchedulerConfiguration;
|
||||||
*
|
*
|
||||||
* @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl>
|
* @author Miciele Ghiorghis <m.ghiorghis@antoniusziekenhuis.nl>
|
||||||
*/
|
*/
|
||||||
public interface IJobSchedulerConfigurationDAO extends
|
public interface IJobSchedulerConfigurationDAO extends IGenericDAO<JobSchedulerConfiguration, Long> {
|
||||||
IGenericDAO<JobSchedulerConfiguration, Long> {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all {@link JobSchedulerConfiguration}
|
* Returns all {@link JobSchedulerConfiguration}
|
||||||
|
|
@ -52,8 +51,7 @@ public interface IJobSchedulerConfigurationDAO extends
|
||||||
* @param jobGroup
|
* @param jobGroup
|
||||||
* @param jobName
|
* @param jobName
|
||||||
*/
|
*/
|
||||||
JobSchedulerConfiguration findByJobGroupAndJobName(String jobGroup,
|
JobSchedulerConfiguration findByJobGroupAndJobName(String jobGroup, String jobName);
|
||||||
String jobName);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if there exists other @{link JobSchedulerConfiguration} with
|
* Returns true if there exists other @{link JobSchedulerConfiguration} with
|
||||||
|
|
@ -63,8 +61,7 @@ public interface IJobSchedulerConfigurationDAO extends
|
||||||
* @param jobSchedulerConfiguration
|
* @param jobSchedulerConfiguration
|
||||||
* the <code>{@link JobSchedulerConfiguration}</code>
|
* the <code>{@link JobSchedulerConfiguration}</code>
|
||||||
*/
|
*/
|
||||||
boolean existsByJobGroupAndJobNameAnotherTransaction(
|
boolean existsByJobGroupAndJobNameAnotherTransaction(JobSchedulerConfiguration jobSchedulerConfiguration);
|
||||||
JobSchedulerConfiguration jobSchedulerConfiguration);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns unique {@link JobSchedulerConfiguration} for the specified
|
* Returns unique {@link JobSchedulerConfiguration} for the specified
|
||||||
|
|
@ -75,6 +72,5 @@ public interface IJobSchedulerConfigurationDAO extends
|
||||||
* @param jobName
|
* @param jobName
|
||||||
* the jobName
|
* the jobName
|
||||||
*/
|
*/
|
||||||
JobSchedulerConfiguration findUniqueByJobGroupAndJobNameAnotherTransaction(
|
JobSchedulerConfiguration findUniqueByJobGroupAndJobNameAnotherTransaction(String jobGroup, String jobName);
|
||||||
String jobGroup, String jobName);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
*/
|
*/
|
||||||
@Repository
|
@Repository
|
||||||
@Scope(BeanDefinition.SCOPE_SINGLETON)
|
@Scope(BeanDefinition.SCOPE_SINGLETON)
|
||||||
public class JobSchedulerConfigurationDAO extends
|
public class JobSchedulerConfigurationDAO extends GenericDAOHibernate<JobSchedulerConfiguration, Long>
|
||||||
GenericDAOHibernate<JobSchedulerConfiguration, Long> implements
|
implements IJobSchedulerConfigurationDAO {
|
||||||
IJobSchedulerConfigurationDAO {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
|
|
@ -50,28 +49,24 @@ public class JobSchedulerConfigurationDAO extends
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public JobSchedulerConfiguration findByJobGroupAndJobName(String jobGroup,
|
public JobSchedulerConfiguration findByJobGroupAndJobName(String jobGroup, String jobName) {
|
||||||
String jobName) {
|
return (JobSchedulerConfiguration) getSession().createCriteria(JobSchedulerConfiguration.class)
|
||||||
return (JobSchedulerConfiguration) getSession()
|
|
||||||
.createCriteria(JobSchedulerConfiguration.class)
|
|
||||||
.add(Restrictions.eq("jobGroup", jobGroup))
|
.add(Restrictions.eq("jobGroup", jobGroup))
|
||||||
.add(Restrictions.eq("jobName", jobName)).uniqueResult();
|
.add(Restrictions.eq("jobName", jobName)).uniqueResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
public List<JobSchedulerConfiguration> findByConnectorName(
|
public List<JobSchedulerConfiguration> findByConnectorName(String connectorName) {
|
||||||
String connectorName) {
|
Criteria c = getSession().createCriteria(JobSchedulerConfiguration.class)
|
||||||
Criteria c = getSession().createCriteria(
|
.add(Restrictions.eq("connectorName", connectorName));
|
||||||
JobSchedulerConfiguration.class).add(
|
|
||||||
Restrictions.eq("connectorName", connectorName));
|
|
||||||
return ((List<JobSchedulerConfiguration>) c.list());
|
return ((List<JobSchedulerConfiguration>) c.list());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
|
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
|
||||||
public boolean existsByJobGroupAndJobNameAnotherTransaction(
|
public boolean existsByJobGroupAndJobNameAnotherTransaction(JobSchedulerConfiguration jobSchedulerConfiguration) {
|
||||||
JobSchedulerConfiguration jobSchedulerConfiguration) {
|
|
||||||
return existsOtherJobByGroupAndName(jobSchedulerConfiguration);
|
return existsOtherJobByGroupAndName(jobSchedulerConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -82,18 +77,17 @@ public class JobSchedulerConfigurationDAO extends
|
||||||
* @param jobSchedulerConfiguration
|
* @param jobSchedulerConfiguration
|
||||||
* the {@link JobSchedulerConfiguration}
|
* the {@link JobSchedulerConfiguration}
|
||||||
*/
|
*/
|
||||||
private boolean existsOtherJobByGroupAndName(
|
private boolean existsOtherJobByGroupAndName(JobSchedulerConfiguration jobSchedulerConfiguration) {
|
||||||
JobSchedulerConfiguration jobSchedulerConfiguration) {
|
|
||||||
JobSchedulerConfiguration found = findByJobGroupAndJobName(
|
JobSchedulerConfiguration found = findByJobGroupAndJobName(
|
||||||
jobSchedulerConfiguration.getJobGroup(),
|
jobSchedulerConfiguration.getJobGroup(),
|
||||||
jobSchedulerConfiguration.getJobName());
|
jobSchedulerConfiguration.getJobName());
|
||||||
|
|
||||||
return found != null && found != jobSchedulerConfiguration;
|
return found != null && found != jobSchedulerConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
|
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
|
||||||
public JobSchedulerConfiguration findUniqueByJobGroupAndJobNameAnotherTransaction(
|
public JobSchedulerConfiguration findUniqueByJobGroupAndJobNameAnotherTransaction(String jobGroup, String jobName) {
|
||||||
String jobGroup, String jobName) {
|
|
||||||
return findByJobGroupAndJobName(jobGroup, jobName);
|
return findByJobGroupAndJobName(jobGroup, jobName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ public class Connector extends BaseEntity {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private List<ConnectorProperty> properties = new ArrayList<ConnectorProperty>();
|
private List<ConnectorProperty> properties = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for Hibernate. Do not use!
|
* Constructor for Hibernate. Do not use!
|
||||||
|
|
@ -90,34 +90,33 @@ public class Connector extends BaseEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, String> getPropertiesAsMap() {
|
public Map<String, String> getPropertiesAsMap() {
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<>();
|
||||||
for (ConnectorProperty property : properties) {
|
for (ConnectorProperty property : properties) {
|
||||||
map.put(property.getKey(), property.getValue());
|
map.put(property.getKey(), property.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@AssertTrue(message = "connector name is already being used")
|
@AssertTrue(message = "connector name is already being used")
|
||||||
public boolean isUniqueConnectorNameConstraint() {
|
public boolean isUniqueConnectorNameConstraint() {
|
||||||
if (StringUtils.isBlank(name)) {
|
if ( StringUtils.isBlank(name) ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
IConnectorDAO connectorDAO = Registry.getConnectorDAO();
|
IConnectorDAO connectorDAO = Registry.getConnectorDAO();
|
||||||
if (isNewObject()) {
|
if ( isNewObject() ) {
|
||||||
return !connectorDAO.existsByNameAnotherTransaction(this);
|
return !connectorDAO.existsByNameAnotherTransaction(this);
|
||||||
} else {
|
} else {
|
||||||
Connector found = connectorDAO
|
Connector found = connectorDAO.findUniqueByNameAnotherTransaction(name);
|
||||||
.findUniqueByNameAnotherTransaction(name);
|
|
||||||
return found == null || found.getId().equals(getId());
|
return found == null || found.getId().equals(getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isActivated() {
|
public boolean isActivated() {
|
||||||
return getPropertiesAsMap()
|
return getPropertiesAsMap().get(PredefinedConnectorProperties.ACTIVATED).equalsIgnoreCase("Y");
|
||||||
.get(PredefinedConnectorProperties.ACTIVATED).equalsIgnoreCase(
|
|
||||||
"Y");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -126,23 +125,15 @@ public class Connector extends BaseEntity {
|
||||||
* @return true if connection values are valid
|
* @return true if connection values are valid
|
||||||
*/
|
*/
|
||||||
public boolean areConnectionValuesValid() {
|
public boolean areConnectionValuesValid() {
|
||||||
String serverUrl = getPropertiesAsMap().get(
|
String serverUrl = getPropertiesAsMap().get(PredefinedConnectorProperties.SERVER_URL);
|
||||||
PredefinedConnectorProperties.SERVER_URL);
|
|
||||||
try {
|
try {
|
||||||
new URL(serverUrl);
|
new URL(serverUrl);
|
||||||
} catch (MalformedURLException e) {
|
} catch (MalformedURLException e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isBlank(getPropertiesAsMap().get(
|
return !StringUtils.isBlank(getPropertiesAsMap().get(PredefinedConnectorProperties.USERNAME)) &&
|
||||||
PredefinedConnectorProperties.USERNAME))) {
|
!StringUtils.isBlank(getPropertiesAsMap().get(PredefinedConnectorProperties.PASSWORD));
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (StringUtils.isBlank(getPropertiesAsMap().get(
|
|
||||||
PredefinedConnectorProperties.PASSWORD))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,12 +41,11 @@ public class ConnectorBootstrap implements IConnectorBootstrap {
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void loadRequiredData() {
|
public void loadRequiredData() {
|
||||||
for (PredefinedConnectors predefinedConnector : PredefinedConnectors
|
for (PredefinedConnectors predefinedConnector : PredefinedConnectors.values()) {
|
||||||
.values()) {
|
|
||||||
String name = predefinedConnector.getName();
|
String name = predefinedConnector.getName();
|
||||||
|
|
||||||
Connector connector = connectorDAO.findUniqueByName(name);
|
Connector connector = connectorDAO.findUniqueByName(name);
|
||||||
if (connector == null) {
|
if ( connector == null ) {
|
||||||
connector = Connector.create(name);
|
connector = Connector.create(name);
|
||||||
connector.setProperties(predefinedConnector.getProperties());
|
connector.setProperties(predefinedConnector.getProperties());
|
||||||
connectorDAO.save(connector);
|
connectorDAO.save(connector);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
|
|
||||||
<changeSet id="use-capacity-instead-of-effort_duration-and-not_over_assignable" author="ogonzalez">
|
<changeSet id="use-capacity-instead-of-effort_duration-and-not_over_assignable" author="ogonzalez">
|
||||||
<comment>Convert from duration + notAssignable (not over assignable) to capacity property</comment>
|
<comment>Convert from duration + notAssignable (not over assignable) to capacity property</comment>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
<changeSet id="add-new-column-ldap-host" author="calvarinop">
|
<changeSet id="add-new-column-ldap-host" author="calvarinop">
|
||||||
<comment>Add new column to store ldap host</comment>
|
<comment>Add new column to store ldap host</comment>
|
||||||
<addColumn tableName="configuration">
|
<addColumn tableName="configuration">
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
|
|
||||||
<changeSet author="smontes" id="initial-database-creation-customer-comunication">
|
<changeSet author="smontes" id="initial-database-creation-customer-comunication">
|
||||||
<createTable tableName="customer_comunication">
|
<createTable tableName="customer_comunication">
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
|
|
||||||
<changeSet id="change-column-notes-in-task_element-to-text"
|
<changeSet id="change-column-notes-in-task_element-to-text"
|
||||||
author="jaragunde" dbms="postgresql">
|
author="jaragunde" dbms="postgresql">
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
|
|
||||||
<changeSet id="add-id_cost_category-column-to-criterion-table" author="ltilve">
|
<changeSet id="add-id_cost_category-column-to-criterion-table" author="ltilve">
|
||||||
<comment>Add column to criterion table to store the relationship with cost category</comment>
|
<comment>Add column to criterion table to store the relationship with cost category</comment>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
|
|
||||||
|
|
||||||
<changeSet id="adding-email_template-table" author="vova/jeroen">
|
<changeSet id="adding-email_template-table" author="vova/jeroen">
|
||||||
|
|
@ -25,10 +24,10 @@
|
||||||
tableName="email_template"
|
tableName="email_template"
|
||||||
/>
|
/>
|
||||||
<createIndex tableName="email_template" indexName="language_index">
|
<createIndex tableName="email_template" indexName="language_index">
|
||||||
<column name="language"></column>
|
<column name="language"/>
|
||||||
</createIndex>
|
</createIndex>
|
||||||
<createIndex tableName="email_template" indexName="type_index">
|
<createIndex tableName="email_template" indexName="type_index">
|
||||||
<column name="type"></column>
|
<column name="type"/>
|
||||||
</createIndex>
|
</createIndex>
|
||||||
<sql>
|
<sql>
|
||||||
INSERT INTO email_template VALUES(1, 0, 3, 'Task assigned to resource : Autogenerated content text', 'Autogenerated subject text');
|
INSERT INTO email_template VALUES(1, 0, 3, 'Task assigned to resource : Autogenerated content text', 'Autogenerated subject text');
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
|
|
||||||
<changeSet author="mrego" id="initial-database-creation-1">
|
<changeSet author="mrego" id="initial-database-creation-1">
|
||||||
<createTable tableName="advance_assignment">
|
<createTable tableName="advance_assignment">
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
|
|
||||||
<changeSet id="resize-precision-in-planning_data" author="dpino">
|
<changeSet id="resize-precision-in-planning_data" author="dpino">
|
||||||
<comment>Resize precision for 'progress_by_duration' and 'progress_by_num_hours' fields</comment>
|
<comment>Resize precision for 'progress_by_duration' and 'progress_by_num_hours' fields</comment>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<databaseChangeLog
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
|
||||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
|
||||||
|
|
||||||
<include file="src/main/resources/db.changelog-database.xml"/>
|
<include file="src/main/resources/db.changelog-database.xml"/>
|
||||||
<include file="src/main/resources/db.changelog-initial.xml"/>
|
<include file="src/main/resources/db.changelog-initial.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
changeLogFile src/main/resources/db.changelog.xml
|
changeLogFile: src/main/resources/db.changelog.xml
|
||||||
driver ${jdbcDriver.className}
|
driver: ${jdbcDriver.className}
|
||||||
url ${dataSource.url}
|
url: ${dataSource.url}
|
||||||
username ${dataSource.user}
|
username: ${dataSource.user}
|
||||||
password ${dataSource.password}
|
password: ${dataSource.password}
|
||||||
verbose true
|
verbose: true
|
||||||
dropFirst false
|
dropFirst: false
|
||||||
promptOnNonLocalDatabase false
|
promptOnNonLocalDatabase: false
|
||||||
|
|
||||||
# If there will be an error with checksum use this command:
|
# If there will be an error with checksum use this command:
|
||||||
#clearCheckSums true
|
#clearCheckSums: true
|
||||||
|
|
@ -50,7 +50,7 @@ import org.springframework.test.context.transaction.TransactionalTestExecutionLi
|
||||||
* @author Bob McCune
|
* @author Bob McCune
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
public class DBUnitTestExecutionListener extends TransactionalTestExecutionListener {
|
class DBUnitTestExecutionListener extends TransactionalTestExecutionListener {
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(DBUnitTestExecutionListener.class);
|
private static final Log logger = LogFactory.getLog(DBUnitTestExecutionListener.class);
|
||||||
|
|
||||||
|
|
@ -65,6 +65,7 @@ public class DBUnitTestExecutionListener extends TransactionalTestExecutionListe
|
||||||
DataSource dataSource = getDataSource(testContext);
|
DataSource dataSource = getDataSource(testContext);
|
||||||
Connection conn = DataSourceUtils.getConnection(dataSource);
|
Connection conn = DataSourceUtils.getConnection(dataSource);
|
||||||
IDatabaseConnection dbUnitConn = getDBUnitConnection(conn);
|
IDatabaseConnection dbUnitConn = getDBUnitConnection(conn);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
IDataSet dataSets[] = getDataSets(testContext);
|
IDataSet dataSets[] = getDataSets(testContext);
|
||||||
for (IDataSet dataSet : dataSets) {
|
for (IDataSet dataSet : dataSets) {
|
||||||
|
|
@ -78,63 +79,65 @@ public class DBUnitTestExecutionListener extends TransactionalTestExecutionListe
|
||||||
|
|
||||||
private DataSource getDataSource(TestContext context) {
|
private DataSource getDataSource(TestContext context) {
|
||||||
DataSource dataSource;
|
DataSource dataSource;
|
||||||
Map beans = context.getApplicationContext().getBeansOfType(
|
Map beans = context.getApplicationContext().getBeansOfType(DataSource.class);
|
||||||
DataSource.class);
|
|
||||||
if (beans.size() > 1) {
|
if ( beans.size() > 1 ) {
|
||||||
dataSource = (DataSource) beans.get(DEFAULT_DATASOURCE_NAME);
|
dataSource = (DataSource) beans.get(DEFAULT_DATASOURCE_NAME);
|
||||||
if (dataSource == null) {
|
|
||||||
throw new NoSuchBeanDefinitionException(
|
if ( dataSource == null ) {
|
||||||
"Unable to locate default data source.");
|
throw new NoSuchBeanDefinitionException("Unable to locate default data source.");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dataSource = (DataSource) beans.values().iterator().next();
|
dataSource = (DataSource) beans.values().iterator().next();
|
||||||
}
|
}
|
||||||
|
|
||||||
return dataSource;
|
return dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IDatabaseConnection getDBUnitConnection(Connection c)
|
private IDatabaseConnection getDBUnitConnection(Connection c) throws DatabaseUnitException {
|
||||||
throws DatabaseUnitException
|
|
||||||
{
|
|
||||||
IDatabaseConnection conn = new DatabaseConnection(c);
|
IDatabaseConnection conn = new DatabaseConnection(c);
|
||||||
DatabaseConfig config = conn.getConfig();
|
DatabaseConfig config = conn.getConfig();
|
||||||
config.setFeature("http://www.dbunit.org/features/qualifiedTableNames",
|
// TODO resolve depracated method
|
||||||
true);
|
config.setFeature("http://www.dbunit.org/features/qualifiedTableNames", true);
|
||||||
config.setProperty("http://www.dbunit.org/properties/tableType",
|
config.setProperty("http://www.dbunit.org/properties/tableType", TABLE_TYPES);
|
||||||
TABLE_TYPES);
|
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IDataSet[] getDataSets(TestContext context) throws Exception {
|
private IDataSet[] getDataSets(TestContext context) throws Exception {
|
||||||
String dataFiles[] = getDataLocations(context);
|
String dataFiles[] = getDataLocations(context);
|
||||||
IDataSet dataSets[] = new IDataSet[dataFiles.length];
|
IDataSet dataSets[] = new IDataSet[dataFiles.length];
|
||||||
|
|
||||||
for (int i = 0; i < dataFiles.length; i++) {
|
for (int i = 0; i < dataFiles.length; i++) {
|
||||||
Resource resource = new ClassPathResource(dataFiles[i]);
|
Resource resource = new ClassPathResource(dataFiles[i]);
|
||||||
Class clazz = getDataSetType(context);
|
Class clazz = getDataSetType(context);
|
||||||
Constructor con = clazz.getConstructor(InputStream.class);
|
Constructor con = clazz.getConstructor(InputStream.class);
|
||||||
dataSets[i] = (IDataSet) con.newInstance(resource.getInputStream());
|
dataSets[i] = (IDataSet) con.newInstance(resource.getInputStream());
|
||||||
}
|
}
|
||||||
|
|
||||||
return dataSets;
|
return dataSets;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Class getDataSetType(TestContext context) {
|
private Class getDataSetType(TestContext context) {
|
||||||
Class<?> testClass = context.getTestClass();
|
Class<?> testClass = context.getTestClass();
|
||||||
DBUnitConfiguration config = testClass
|
DBUnitConfiguration config = testClass.getAnnotation(DBUnitConfiguration.class);
|
||||||
.getAnnotation(DBUnitConfiguration.class);
|
|
||||||
return config.type();
|
return config.type();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String[] getDataLocations(TestContext context) {
|
private String[] getDataLocations(TestContext context) {
|
||||||
Class<?> testClass = context.getTestClass();
|
Class<?> testClass = context.getTestClass();
|
||||||
DBUnitConfiguration config = testClass
|
DBUnitConfiguration config = testClass.getAnnotation(DBUnitConfiguration.class);
|
||||||
.getAnnotation(DBUnitConfiguration.class);
|
|
||||||
if (config == null) {
|
if ( config == null ) {
|
||||||
throw new IllegalStateException("Test class '" + testClass
|
throw new IllegalStateException(
|
||||||
+ " has is missing @DBUnitConfiguration annotation.");
|
"Test class '" + testClass + " has is missing @DBUnitConfiguration annotation.");
|
||||||
}
|
}
|
||||||
if (config.locations().length == 0) {
|
if ( config.locations().length == 0 ) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"@DBUnitConfiguration annotation doesn't specify any DBUnit configuration locations.");
|
"@DBUnitConfiguration annotation doesn't specify any DBUnit configuration locations.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return config.locations();
|
return config.locations();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
|
||||||
xsi:schemaLocation="
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
|
||||||
http://www.springframework.org/schema/beans
|
|
||||||
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
|
|
||||||
|
|
||||||
<bean id="dataSourceReal"
|
<bean id="dataSourceReal"
|
||||||
class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"
|
class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"
|
||||||
|
|
|
||||||
|
|
@ -213,8 +213,8 @@
|
||||||
-->
|
-->
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.xnap.commons</groupId>
|
<groupId>com.googlecode.gettext-commons</groupId>
|
||||||
<artifactId>maven-gettext-plugin</artifactId>
|
<artifactId>gettext-maven-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
<targetBundle>i18n.Messages</targetBundle>
|
<targetBundle>i18n.Messages</targetBundle>
|
||||||
<poDirectory>${project.build.sourceDirectory}/../resources/i18n</poDirectory>
|
<poDirectory>${project.build.sourceDirectory}/../resources/i18n</poDirectory>
|
||||||
|
|
@ -273,10 +273,6 @@
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-web</artifactId>
|
<artifactId>spring-web</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.security</groupId>
|
|
||||||
<artifactId>spring-security-config</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-context-support</artifactId>
|
<artifactId>spring-context-support</artifactId>
|
||||||
|
|
@ -297,6 +293,10 @@
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-acl</artifactId>
|
<artifactId>spring-security-acl</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.security</groupId>
|
||||||
|
<artifactId>spring-security-config</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- Spring Test -->
|
<!-- Spring Test -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
@ -418,6 +418,8 @@
|
||||||
<groupId>org.apache.cxf</groupId>
|
<groupId>org.apache.cxf</groupId>
|
||||||
<artifactId>cxf-rt-rs-client</artifactId>
|
<artifactId>cxf-rt-rs-client</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Jackson -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.jaxrs</groupId>
|
<groupId>com.fasterxml.jackson.jaxrs</groupId>
|
||||||
<artifactId>jackson-jaxrs-json-provider</artifactId>
|
<artifactId>jackson-jaxrs-json-provider</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -297,7 +297,8 @@ public class SchedulerManager implements ISchedulerManager {
|
||||||
@Override
|
@Override
|
||||||
public String getNextFireTime(JobSchedulerConfiguration jobSchedulerConfiguration) {
|
public String getNextFireTime(JobSchedulerConfiguration jobSchedulerConfiguration) {
|
||||||
try {
|
try {
|
||||||
CronTrigger trigger = (CronTrigger) this.scheduler.getTrigger(TriggerKey.triggerKey(
|
CronTrigger trigger = (CronTrigger)
|
||||||
|
this.scheduler.getTrigger(TriggerKey.triggerKey(
|
||||||
jobSchedulerConfiguration.getJobName() + TRIGGER_SUFFIX,
|
jobSchedulerConfiguration.getJobName() + TRIGGER_SUFFIX,
|
||||||
jobSchedulerConfiguration.getJobGroup() + TRIGGER_SUFFIX));
|
jobSchedulerConfiguration.getJobGroup() + TRIGGER_SUFFIX));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,8 @@ import static org.libreplan.web.I18nHelper._;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller for managing Order files
|
* Controller for managing Order files.
|
||||||
|
*
|
||||||
* Created by
|
* Created by
|
||||||
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
|
* @author Vova Perebykivskiy <vova@libreplan-enterprise.com>
|
||||||
* on 12.24.2015.
|
* on 12.24.2015.
|
||||||
|
|
@ -69,6 +70,7 @@ import static org.libreplan.web.I18nHelper._;
|
||||||
|
|
||||||
public class OrderFilesController extends GenericForwardComposer {
|
public class OrderFilesController extends GenericForwardComposer {
|
||||||
|
|
||||||
|
// TODO refactor Autowired?
|
||||||
@Autowired
|
@Autowired
|
||||||
IConfigurationModel configurationModel;
|
IConfigurationModel configurationModel;
|
||||||
|
|
||||||
|
|
@ -88,6 +90,7 @@ public class OrderFilesController extends GenericForwardComposer {
|
||||||
@Override
|
@Override
|
||||||
public void doAfterCompose(Component comp) throws Exception {
|
public void doAfterCompose(Component comp) throws Exception {
|
||||||
super.doAfterCompose(comp);
|
super.doAfterCompose(comp);
|
||||||
|
// TODO resolve deprecated
|
||||||
comp.setVariable("orderFilesController", this, true);
|
comp.setVariable("orderFilesController", this, true);
|
||||||
messages = new MessagesForUser(messagesContainer);
|
messages = new MessagesForUser(messagesContainer);
|
||||||
}
|
}
|
||||||
|
|
@ -99,15 +102,12 @@ public class OrderFilesController extends GenericForwardComposer {
|
||||||
if ( !(configurationModel.getRepositoryLocation() == null) )
|
if ( !(configurationModel.getRepositoryLocation() == null) )
|
||||||
repositoryDirectory = new File(configurationModel.getRepositoryLocation());
|
repositoryDirectory = new File(configurationModel.getRepositoryLocation());
|
||||||
|
|
||||||
if ( repositoryDirectory != null && repositoryDirectory.exists() ) return true;
|
return repositoryDirectory != null && repositoryDirectory.exists();
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isUploadButtonDisabled(){
|
public boolean isUploadButtonDisabled(){
|
||||||
if ( isRepositoryExists() ) return false;
|
return !isRepositoryExists();
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ListitemRenderer getFilesRenderer(){
|
public ListitemRenderer getFilesRenderer(){
|
||||||
|
|
@ -119,6 +119,7 @@ public class OrderFilesController extends GenericForwardComposer {
|
||||||
Listcell nameCell = new Listcell();
|
Listcell nameCell = new Listcell();
|
||||||
listitem.appendChild(nameCell);
|
listitem.appendChild(nameCell);
|
||||||
Label label = new Label(file.getName());
|
Label label = new Label(file.getName());
|
||||||
|
|
||||||
label.addEventListener("onClick", new EventListener() {
|
label.addEventListener("onClick", new EventListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onEvent(Event event) throws Exception {
|
public void onEvent(Event event) throws Exception {
|
||||||
|
|
@ -130,6 +131,7 @@ public class OrderFilesController extends GenericForwardComposer {
|
||||||
Filedownload.save(fileToDownload.getAbsoluteFile(), null);
|
Filedownload.save(fileToDownload.getAbsoluteFile(), null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
label.setClass("label-highlight");
|
label.setClass("label-highlight");
|
||||||
label.setTooltiptext("Download file");
|
label.setTooltiptext("Download file");
|
||||||
nameCell.appendChild(label);
|
nameCell.appendChild(label);
|
||||||
|
|
@ -170,7 +172,7 @@ public class OrderFilesController extends GenericForwardComposer {
|
||||||
if ( Messagebox.OK != status ) {
|
if ( Messagebox.OK != status ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {}
|
} catch (InterruptedException ignored) {}
|
||||||
|
|
||||||
|
|
||||||
if ( isRepositoryExists() ) {
|
if ( isRepositoryExists() ) {
|
||||||
|
|
@ -206,20 +208,18 @@ public class OrderFilesController extends GenericForwardComposer {
|
||||||
public void upload() {
|
public void upload() {
|
||||||
configurationModel.init();
|
configurationModel.init();
|
||||||
|
|
||||||
String directory = "";
|
String directory;
|
||||||
if ( isRepositoryExists() ){
|
if ( isRepositoryExists() ){
|
||||||
|
|
||||||
String projectCode = orderElementModel.getOrderElement().getCode();
|
String projectCode = orderElementModel.getOrderElement().getCode();
|
||||||
directory = configurationModel.getRepositoryLocation() + "orders" + "/" + projectCode;
|
directory = configurationModel.getRepositoryLocation() + "orders" + "/" + projectCode;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Fileupload fileupload = new Fileupload();
|
|
||||||
|
|
||||||
// Location of file: libreplan-webapp/src/main/webapp/planner/fileupload.zul
|
// Location of file: libreplan-webapp/src/main/webapp/planner/fileupload.zul
|
||||||
fileupload.setTemplate("fileupload.zul");
|
Fileupload.setTemplate("fileupload.zul");
|
||||||
|
|
||||||
|
|
||||||
Media media = fileupload.get();
|
Media media = Fileupload.get();
|
||||||
|
|
||||||
File dir = new File(directory);
|
File dir = new File(directory);
|
||||||
String filename = media.getName();
|
String filename = media.getName();
|
||||||
|
|
@ -277,13 +277,14 @@ public class OrderFilesController extends GenericForwardComposer {
|
||||||
public void openWindow(IOrderElementModel orderElementModel) {
|
public void openWindow(IOrderElementModel orderElementModel) {
|
||||||
setOrderElementModel(orderElementModel);
|
setOrderElementModel(orderElementModel);
|
||||||
|
|
||||||
if ( isRepositoryExists() ) updateListbox();
|
if ( isRepositoryExists() )
|
||||||
|
updateListbox();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listbox is updating after re set the model for it
|
* Listbox is updating after re set the model for it
|
||||||
*/
|
*/
|
||||||
public void updateListbox(){
|
private void updateListbox(){
|
||||||
OrderElement currentOrder = orderElementModel.getOrderElement();
|
OrderElement currentOrder = orderElementModel.getOrderElement();
|
||||||
filesList.setModel(new ListModelList(orderFileModel.findByParent(currentOrder)));
|
filesList.setModel(new ListModelList(orderFileModel.findByParent(currentOrder)));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@
|
||||||
username-parameter="j_username"
|
username-parameter="j_username"
|
||||||
password-parameter="j_password"/>
|
password-parameter="j_password"/>
|
||||||
<http-basic />
|
<http-basic />
|
||||||
<logout />
|
<logout logout-url="/j_spring_security_logout" />
|
||||||
<remember-me />
|
<remember-me />
|
||||||
<csrf disabled="true"/>
|
<csrf disabled="true"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,11 @@
|
||||||
</div>
|
</div>
|
||||||
</n:td>
|
</n:td>
|
||||||
<n:td class="usuario">${i18n:_('user')}: ${templateCtrl.username}</n:td>
|
<n:td class="usuario">${i18n:_('user')}: ${templateCtrl.username}</n:td>
|
||||||
<n:td><n:a href="${contextPath}/j_spring_security_logout" class="cerrar_sesion">[${i18n:_('Log out')}]</n:a></n:td>
|
<n:td>
|
||||||
|
<n:a href="${contextPath}/j_spring_security_logout" class="cerrar_sesion">
|
||||||
|
[${i18n:_('Log out')}]
|
||||||
|
</n:a>
|
||||||
|
</n:td>
|
||||||
</n:tr>
|
</n:tr>
|
||||||
</n:table>
|
</n:table>
|
||||||
</n:div>
|
</n:div>
|
||||||
|
|
@ -113,7 +117,6 @@
|
||||||
|
|
||||||
<center border="none">
|
<center border="none">
|
||||||
<borderlayout width="auto" height="100%">
|
<borderlayout width="auto" height="100%">
|
||||||
<!-- borderlayout class="main-layout" height="2000px" width="2000px"-->
|
|
||||||
<west class="perspectives-column" width="90px" >
|
<west class="perspectives-column" width="90px" >
|
||||||
<vbox vflex="1" height="100%">
|
<vbox vflex="1" height="100%">
|
||||||
<hbox id="perspectiveButtonsInsertionPoint" sclass="toolbar-box global-commands" height="30px" width="100%">
|
<hbox id="perspectiveButtonsInsertionPoint" sclass="toolbar-box global-commands" height="30px" width="100%">
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,18 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns:p="http://www.springframework.org/schema/p"
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
|
||||||
|
|
||||||
<bean id="dataSourceReal"
|
<bean id="dataSourceReal"
|
||||||
class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"
|
class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"
|
||||||
p:driverClass="${jdbcDriver.className}" p:jdbcUrl="${testDataSource.url}"
|
p:driverClass="${jdbcDriver.className}"
|
||||||
p:username="${testDataSource.user}" p:password="${testDataSource.password}"
|
p:jdbcUrl="${testDataSource.url}"
|
||||||
p:maxConnectionsPerPartition="10"
|
p:username="${testDataSource.user}"
|
||||||
p:minConnectionsPerPartition="4"
|
p:password="${testDataSource.password}"
|
||||||
p:partitionCount="3"/>
|
p:maxConnectionsPerPartition="10"
|
||||||
|
p:minConnectionsPerPartition="4"
|
||||||
|
p:partitionCount="3"/>
|
||||||
|
|
||||||
<bean id="dataSource"
|
<bean id="dataSource"
|
||||||
class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy"
|
class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy"
|
||||||
|
|
|
||||||
31
pom.xml
31
pom.xml
|
|
@ -128,16 +128,22 @@
|
||||||
</properties>
|
</properties>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
<!-- MySQL profile
|
<!-- MySQL profile -->
|
||||||
TODO change version mysql for JDK8
|
|
||||||
-->
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>mysql</id>
|
<id>mysql</id>
|
||||||
<properties>
|
<properties>
|
||||||
<!-- JDBC driver properties -->
|
<!-- JDBC driver properties -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
If 6.X driver will not throw exceptions (with Timezone), use this configuration:
|
||||||
|
|
||||||
|
<jdbcDriver.className>com.mysql.cj.jdbc.Driver</jdbcDriver.className>
|
||||||
|
<dataSource.url>jdbc:mysql://localhost/libreplan${libreplan.mode}?useSSL=false</dataSource.url>
|
||||||
|
-->
|
||||||
|
|
||||||
<jdbcDriver.groupId>mysql</jdbcDriver.groupId>
|
<jdbcDriver.groupId>mysql</jdbcDriver.groupId>
|
||||||
<jdbcDriver.artifactId>mysql-connector-java</jdbcDriver.artifactId>
|
<jdbcDriver.artifactId>mysql-connector-java</jdbcDriver.artifactId>
|
||||||
<jdbcDriver.version>5.1.38</jdbcDriver.version>
|
<jdbcDriver.version>5.1.39</jdbcDriver.version>
|
||||||
<jdbcDriver.className>com.mysql.jdbc.Driver</jdbcDriver.className>
|
<jdbcDriver.className>com.mysql.jdbc.Driver</jdbcDriver.className>
|
||||||
<!-- Data source properties -->
|
<!-- Data source properties -->
|
||||||
<dataSource.url>jdbc:mysql://localhost/libreplan${libreplan.mode}</dataSource.url>
|
<dataSource.url>jdbc:mysql://localhost/libreplan${libreplan.mode}</dataSource.url>
|
||||||
|
|
@ -212,9 +218,9 @@
|
||||||
|
|
||||||
<!-- Gettext commons -->
|
<!-- Gettext commons -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xnap.commons</groupId>
|
<groupId>com.googlecode.gettext-commons</groupId>
|
||||||
<artifactId>gettext-commons</artifactId>
|
<artifactId>gettext-commons</artifactId>
|
||||||
<version>0.9.6</version>
|
<version>0.9.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
@ -612,12 +618,12 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.liquibase</groupId>
|
<groupId>org.liquibase</groupId>
|
||||||
<artifactId>liquibase-core</artifactId>
|
<artifactId>liquibase-core</artifactId>
|
||||||
<version>3.5.0</version>
|
<version>3.5.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.liquibase</groupId>
|
<groupId>org.liquibase</groupId>
|
||||||
<artifactId>liquibase-maven-plugin</artifactId>
|
<artifactId>liquibase-maven-plugin</artifactId>
|
||||||
<version>3.5.0</version>
|
<version>3.5.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- jqPlot -->
|
<!-- jqPlot -->
|
||||||
|
|
@ -761,8 +767,8 @@
|
||||||
<version>3.5.1</version>
|
<version>3.5.1</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<verbose>true</verbose>
|
<verbose>true</verbose>
|
||||||
<source>1.7</source>
|
<source>1.8</source>
|
||||||
<target>1.7</target>
|
<target>1.8</target>
|
||||||
<encoding>UTF-8</encoding>
|
<encoding>UTF-8</encoding>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
@ -820,8 +826,7 @@
|
||||||
<!-- Log to the console. -->
|
<!-- Log to the console. -->
|
||||||
<requestLog implementation="org.mortbay.jetty.NCSARequestLog">
|
<requestLog implementation="org.mortbay.jetty.NCSARequestLog">
|
||||||
<!--
|
<!--
|
||||||
This do anything for Jetty,
|
This do anything for Jetty, but is a workaround for a Maven bug
|
||||||
but is aworkaround for a Maven bug
|
|
||||||
that prevents the requestLog from being set.
|
that prevents the requestLog from being set.
|
||||||
-->
|
-->
|
||||||
<append>true</append>
|
<append>true</append>
|
||||||
|
|
@ -891,7 +896,7 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.liquibase</groupId>
|
<groupId>org.liquibase</groupId>
|
||||||
<artifactId>liquibase-maven-plugin</artifactId>
|
<artifactId>liquibase-maven-plugin</artifactId>
|
||||||
<version>3.5.0</version>
|
<version>3.5.1</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue