Merge pull request #135 from PaulLuchyn/master

Added interactive user role list, changesets refactoring
This commit is contained in:
Jeroen Baten 2016-12-12 20:25:14 +01:00 committed by GitHub
commit 2ec65fcc81
10 changed files with 314 additions and 93 deletions

View file

@ -164,7 +164,7 @@ Debian/Ubuntu
* Install requirements::
# apt-get install openjdk-7-jre postgresql postgresql-client tomcat7 libpg-java cutycapt xvfb
# apt-get install openjdk-8-jre postgresql postgresql-client tomcat8 libpg-java cutycapt xvfb
* Connect to database::
@ -201,9 +201,9 @@ Debian/Ubuntu
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.4.1.war
* Create a new file ``/etc/tomcat7/Catalina/localhost/libreplan.xml`` (file
* Create a new file ``/etc/tomcat8/Catalina/localhost/libreplan.xml`` (file
name has to match with ``.war`` name) with database configuration for
Tomcat 7::
Tomcat 8::
<?xml version="1.0" encoding="UTF-8"?>
@ -216,21 +216,18 @@ Debian/Ubuntu
url="jdbc:postgresql://localhost/libreplan" />
</Context>
* Add next lines to Tomcat 7 policy file ``/etc/tomcat7/catalina.policy`` or ``/var/lib/tomcat7/conf`` or ``/etc/tomcat7/policy.d/03catalina.policy``
* Add next lines to Tomcat 8 policy file ``/etc/tomcat8/catalina.policy`` or ``/var/lib/tomcat8/conf`` or ``/etc/tomcat8/policy.d/03catalina.policy``
with the following content::
grant codeBase "file:/var/lib/tomcat7/webapps/libreplan/-" {
grant codeBase "file:/var/lib/tomcat8/webapps/libreplan/-" {
permission java.security.AllPermission;
};
grant codeBase "file:/var/lib/tomcat7/webapps/libreplan.war" {
grant codeBase "file:/var/lib/tomcat8/webapps/libreplan.war" {
permission java.security.AllPermission;
};
.. NOTE::
For Tomcat 6, create a ``/etc/tomcat6/policy.d/51libreplan.policy`` and replace `̀ tomcat7`` by ``tomcat6``.
* Also add next lines to Tomcat 7 policy file::
* Also add next lines to Tomcat 8 policy file::
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
...
@ -240,21 +237,17 @@ Debian/Ubuntu
...
};
.. NOTE::
* Add link to Java JDBC driver for PostgreSQL in Tomcat8 libraries directory::
For Tomcat 6, this is the ``/etc/tomcat6/policy.d/03catalina.policy``.
# ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat8/lib/
* Add link to Java JDBC driver for PostgreSQL in Tomcat6 libraries directory::
* Copy war to Tomcat 8 web applications directory::
# ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat7/lib/
# cp libreplan.war /var/lib/tomcat8/webapps/
* Copy war to Tomcat 7 web applications directory::
* Restart Tomcat 8::
# cp libreplan.war /var/lib/tomcat7/webapps/
* Restart Tomcat 7::
# /etc/init.d/tomcat7 restart
# /etc/init.d/tomcat8 restart
* Go to http://localhost:8080/libreplan/
@ -269,7 +262,7 @@ openSUSE
* Install requirements::
# zypper install java-1_7_0-openjdk postgresql-server postgresql tomcat7 xorg-x11-server
# zypper install java-1_8_0-openjdk postgresql-server postgresql tomcat8 xorg-x11-server
* JDBC Driver manual installation::
@ -324,9 +317,9 @@ openSUSE
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.4.1.war
* Create a new file ``/etc/tomcat7/Catalina/localhost/libreplan.xml`` (file
* Create a new file ``/etc/tomcat8/Catalina/localhost/libreplan.xml`` (file
name has to match with ``.war`` name) with database configuration for
Tomcat 7::
Tomcat 8::
<?xml version="1.0" encoding="UTF-8"?>
@ -339,17 +332,17 @@ openSUSE
url="jdbc:postgresql://localhost/libreplan" />
</Context>
* Add link to Java JDBC driver for PostgreSQL in Tomcat7 libraries directory::
* Add link to Java JDBC driver for PostgreSQL in Tomcat8 libraries directory::
# ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat7/lib/
# ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat8/lib/
* Copy war to Tomcat 7 web applications directory::
* Copy war to Tomcat 8 web applications directory::
# cp libreplan.war /srv/tomcat7/webapps/
# cp libreplan.war /srv/tomcat8/webapps/
* Restart Tomcat 7:
* Restart Tomcat 8:
# /etc/init.d/tomcat7 restart
# /etc/init.d/tomcat8 restart
* Go to http://localhost:8080/libreplan/
@ -358,17 +351,17 @@ Microsoft Windows
Instructions:
* Download and install latest Java Runtime Environment 7uXX (JRE7uXX)::
* Download and install latest Java Runtime Environment 8uXX (JRE8uXX)::
# http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
# http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
* Download and install latest PostgreSQL database::
# http://www.enterprisedb.com/products-services-training/pgdownload#windows
* Download and install Apache Tomcat 6::
* Download and install Apache Tomcat 8::
# http://tomcat.apache.org/download-60.cgi
# https://tomcat.apache.org/download-80.cgi
.. NOTE::
@ -377,7 +370,7 @@ Instructions:
* Set up JDBC41 PostgreSQL Driver::
# Download latest driver: https://jdbc.postgresql.org/download.html
# Copy downloaded *.jar file to JRE location: (e.g. C:\Program Files\Java\jre7\lib\ext)
# Copy downloaded *.jar file to JRE location: (e.g. C:\Program Files\Java\jre8\lib\ext)
* Download latest ``.war`` file from SourceForge.net (for PostgreSQL) and rename it to libreplan.war::
@ -407,9 +400,9 @@ Instructions:
* Configure Apache Tomcat Server
* Put libreplan.war file to Apache Tomcat webapps folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/)
* Put libreplan.war file to Apache Tomcat webapps folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 8.0/webapps/)
* Go to localhost folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 6.0/conf/Catalina/localhost/)
* Go to localhost folder (e.g. C:/Program Files/Apache Software Foundation/Tomcat 8.0/conf/Catalina/localhost/)
and create there libreplan.xml file with this lines of code::
<?xml version="1.0" encoding="UTF-8"?>
@ -425,7 +418,7 @@ Instructions:
* Start Apache Tomcat server
# Example location: C:/Program Files/Apache Software Foundation/Tomcat 6.0/bin/Tomcat6.exe
# Example location: C:/Program Files/Apache Software Foundation/Tomcat 8.0/bin/Tomcat8.exe
If you will face SKIP_IDENTIFIER_CHECK error, refer to:
http://stackoverflow.com/questions/24546304/how-to-skip-java-reserve-keyword-identifier-check-in-tomcat
@ -436,8 +429,8 @@ Logs
----
Since *LibrePlan 1.1.1* log system is configured automatically creating a new
folder under ``/var/log/tomcat6/`` with ``.war`` name. For example:
``/var/log/tomcat6/libreplan/``.
folder under ``/var/log/tomcat8/`` with ``.war`` name. For example:
``/var/log/tomcat8/libreplan/``.
Inside this new directory there will be two files (``libreplan.log`` and
``libreplan-error.log``) that will be rotated every day.
@ -449,8 +442,8 @@ Anyway if you want to set manually LibrePlan log path you will have to
configure ``JAVA_OPTS`` variable in your server. This variable is configured in
different files depending on the distribution:
* Debian or Ubuntu: ``/etc/default/tomcat6``
* Fedora or openSUSE: ``/etc/tomcat6/tomcat6.conf``
* Debian or Ubuntu: ``/etc/default/tomcat8``
* Fedora or openSUSE: ``/etc/tomcat8/tomcat8.conf``
Where you will need to add the next line::
@ -459,7 +452,7 @@ Where you will need to add the next line::
.. WARNING::
You have to be sure that the user running Tomcat (usually ``tomcat6``) has
You have to be sure that the user running Tomcat (usually ``tomcat8``) has
permissions to write in the specified directory.
@ -512,8 +505,8 @@ In order to avoid this problem you need to configure properly ``JAVA_OPTS``
variable in your server. This is configured in different files depending on the
distribution:
* Debian or Ubuntu: ``/etc/default/tomcat6``
* Fedora or openSUSE: ``/etc/tomcat6/tomcat6.conf``
* Debian or Ubuntu: ``/etc/default/tomcat8``
* Fedora or openSUSE: ``/etc/tomcat8/tomcat8.conf``
The next lines show a possible configuration to fix the memory errors (the exact
values depends on the server features)::

View file

@ -153,7 +153,7 @@ Configure project to run
Configure how to run LibrePlan in Eclipse
* Click *Run* and application will be available at
http://localhost:8080/libreplan-webapp/
http://localhost:8080/
Configure Maven profiles

View file

@ -20,7 +20,7 @@ How To Start Development With JetBrains Intellij IDEA
Download LibrePlan source code
------------------------------
* You need to download LibrePlan_ source code to start hacking on it. You have two options:
* You need to download LibrePlan source code to start hacking on it. You have two options:
a) Clone Git repository (recommended)::
@ -45,7 +45,7 @@ Import LibrePlan project
* Select directory with source code of Libreplan
# e.g. C/Users/PC-User/IdeaProjects/libreplan
# e.g. C:/Users/PC-User/IdeaProjects/libreplan
* Select *Import project from external model* > *Maven* and click *Next*
@ -55,7 +55,7 @@ Import LibrePlan project
* Then leave all by default
* Then choose your JDK(SDK), 1.7 strongly preferred
* Then choose your JDK(SDK), 1.8 strongly preferred
* Then define project name or leave default name

View file

@ -26,7 +26,7 @@ import org.apache.commons.lang3.BooleanUtils;
/**
* This is a singleton that contains the compilation options passed from Maven.
*
* Currently we have three options:
* Currently we have four options:
* <ul>
* <li>Enable/Disable the warning changing default password</li>
* <li>
@ -34,6 +34,7 @@ import org.apache.commons.lang3.BooleanUtils;
* (such as wsreader, wswriter, wssubcontracting, manager, hresources, outsourcing and reports)
* </li>
* <li>Enable/Disable E-mail sending functionality</li>
* <li>Enable/Disable "Delete all projects" button</li>
* </ul>
*
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
@ -47,9 +48,11 @@ public class Configuration {
private Boolean defaultPasswordsControl;
private Boolean exampleUsersDisabled;
private boolean exampleUsersDisabled;
private Boolean emailSendingEnabled;
private boolean emailSendingEnabled;
private boolean deleteAllProjectsButtonDisabled;
private Configuration() {
}
@ -73,36 +76,35 @@ public class Configuration {
this.defaultPasswordsControl = defaultPasswordsControl;
}
/**
* Returns the value of example users disabled compilation option.
*/
public static boolean isExampleUsersDisabled() {
return BooleanUtils.isNotFalse(singleton.getExampleUsersDisabled());
}
public Boolean getExampleUsersDisabled() {
public boolean getExampleUsersDisabled() {
return exampleUsersDisabled;
}
public void setExampleUsersDisabled(Boolean exampleUsersDisabled) {
public void setExampleUsersDisabled(boolean exampleUsersDisabled) {
this.exampleUsersDisabled = exampleUsersDisabled;
}
/**
* Returns the value of E-mail sending disabled compilation option.
*/
public static boolean isEmailSendingEnabled() {
return BooleanUtils.isNotFalse(singleton.getEmailSendingEnabled());
}
public Boolean getEmailSendingEnabled() {
public boolean getEmailSendingEnabled() {
return emailSendingEnabled;
}
public void setEmailSendingEnabled(Boolean emailSendingEnabled) {
public void setEmailSendingEnabled(boolean emailSendingEnabled) {
this.emailSendingEnabled = emailSendingEnabled;
}
public boolean isDeleteAllProjectsButtonDisabled() {
return deleteAllProjectsButtonDisabled;
}
public void setDeleteAllProjectsButtonDisabled(boolean deleteAllProjectsButtonDisabled) {
this.deleteAllProjectsButtonDisabled = deleteAllProjectsButtonDisabled;
}
}

View file

@ -177,24 +177,16 @@
</changeSet>
<changeSet id="add-new-column-allow_to_gather_usage_stats_enabled" author="mrego">
<comment>Add new column allow_to_gather_usage_stats_enabled with default value TRUE to configuration table</comment>
<comment>Add new column allow_to_gather_usage_stats_enabled with default value FALSE to configuration table</comment>
<addColumn tableName="configuration">
<column name="allow_to_gather_usage_stats_enabled" type="BOOLEAN" />
</addColumn>
<addDefaultValue tableName="configuration" columnName="allow_to_gather_usage_stats_enabled"
defaultValueBoolean="TRUE" />
defaultValueBoolean="FALSE" />
<addNotNullConstraint tableName="configuration"
columnName="allow_to_gather_usage_stats_enabled"
defaultNullValue="TRUE"
columnName="allow_to_gather_usage_stats_enabled"
defaultNullValue="FALSE"
columnDataType="BOOLEAN" />
</changeSet>
<changeSet id="update allow_to_gather_usage_stats_enabled" author="bogdan/jeroen" runAlways="true">
<comment>Update allow_to_gather_usage_stats_enabled field</comment>
<update tableName="configuration">
<column name="allow_to_gather_usage_stats_enabled" valueBoolean="TRUE"/>
</update>
</changeSet>
<changeSet id="change-column-description-in-order_element-to-text"
@ -661,4 +653,20 @@
columnDataType="BOOLEAN" />
</changeSet>
<changeSet id="update allow_to_gather_usage_stats_enabled" author="bogdan/jeroen" runAlways="true">
<comment>Update allow_to_gather_usage_stats_enabled field</comment>
<update tableName="configuration">
<column name="allow_to_gather_usage_stats_enabled" valueBoolean="TRUE"/>
</update>
</changeSet>
<changeSet author="pluchyn" id="change_default_value_for_gather_usage_stats">
<addDefaultValue tableName="configuration" columnName="allow_to_gather_usage_stats_enabled"
defaultValueBoolean="TRUE"/>
<addNotNullConstraint tableName="configuration"
columnName="allow_to_gather_usage_stats_enabled"
defaultNullValue="TRUE"
columnDataType="BOOLEAN" />
</changeSet>
</databaseChangeLog>

View file

@ -788,9 +788,9 @@
</changeSet>
<changeSet author="mrego" id="initial-database-creation-47">
<createTable tableName="material_assignment">
<createTable tableName="material_assigment">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="material_assignment_pkey"/>
<constraints nullable="false" primaryKey="true" primaryKeyName="material_assigment_pkey"/>
</column>
<column name="version" type="BIGINT">
<constraints nullable="false"/>
@ -805,9 +805,9 @@
</changeSet>
<changeSet author="mrego" id="initial-database-creation-48">
<createTable tableName="material_assignment_template">
<createTable tableName="material_assigment_template">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="material_assignment_template_pkey"/>
<constraints nullable="false" primaryKey="true" primaryKeyName="material_assigment_template_pkey"/>
</column>
<column name="version" type="BIGINT">
<constraints nullable="false"/>
@ -874,7 +874,7 @@
<column name="code" type="VARCHAR(255)"/>
<column name="init_date" type="DATETIME"/>
<column name="deadline" type="DATETIME"/>
<column name="last_advance_measurement_for_spreading" type="DECIMAL(19,2)"/>
<column name="last_advance_meausurement_for_spreading" type="DECIMAL(19,2)"/>
<column name="dirty_last_advance_measurement_for_spreading" type="BOOLEAN"/>
<column name="parent" type="BIGINT"/>
<column name="template" type="BIGINT"/>
@ -1314,7 +1314,7 @@
<column name="constraint_date" type="DATE"/>
<column name="workable_days" type="INTEGER"/>
<column name="allocation_direction" type="INTEGER"/>
<column name="subcontracted_task_data_id" type="BIGINT"/>
<column name="subcontrated_task_data_id" type="BIGINT"/>
<column name="priority" type="INTEGER"/>
</createTable>
</changeSet>
@ -1508,9 +1508,9 @@
</changeSet>
<changeSet author="mrego" id="initial-database-creation-98">
<createTable tableName="work_report_label_type_assignment">
<createTable tableName="work_report_label_type_assigment">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="work_report_label_type_assignment_pkey"/>
<constraints nullable="false" primaryKey="true" primaryKeyName="work_report_label_type_assigment_pkey"/>
</column>
<column name="version" type="BIGINT">
<constraints nullable="false"/>
@ -1744,7 +1744,7 @@
<addUniqueConstraint columnNames="code" constraintName="resources_cost_category_assignment_code_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="resources_cost_category_assignment"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-152">
<addUniqueConstraint columnNames="subcontracted_task_data_id" constraintName="task_subcontracted_task_data_id_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="task"/>
<addUniqueConstraint columnNames="subcontrated_task_data_id" constraintName="task_subcontrated_task_data_id_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="task"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-153">
<addUniqueConstraint columnNames="schedulingdata" constraintName="task_source_schedulingdata_key" deferrable="false" disabled="false" initiallyDeferred="false" tableName="task_source"/>
@ -1984,16 +1984,16 @@
<addForeignKeyConstraint baseColumnNames="unit_type" baseTableName="material" constraintName="fk11d36527f11b2d0" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="unit_type" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-232">
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment" constraintName="fkb3e9425b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assigment" constraintName="fkb3e9425b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-233">
<addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="material_assignment" constraintName="fkb3e9425efda874f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="material_assigment" constraintName="fkb3e9425efda874f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-234">
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment_template" constraintName="fk35254354b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assigment_template" constraintName="fk35254354b5c68337" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-235">
<addForeignKeyConstraint baseColumnNames="order_element_template_id" baseTableName="material_assignment_template" constraintName="fk3525435419b9dfde" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element_template" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="order_element_template_id" baseTableName="material_assigment_template" constraintName="fk3525435419b9dfde" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element_template" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-236">
<addForeignKeyConstraint baseColumnNames="parent_id" baseTableName="material_category" constraintName="fk84c66516b53669f2" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="material_category" referencesUniqueColumn="false"/>
@ -2149,7 +2149,7 @@
<addForeignKeyConstraint baseColumnNames="external_company" baseTableName="subcontracted_task_data" constraintName="fk35bc4ed63804cfa" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="external_company" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-287">
<addForeignKeyConstraint baseColumnNames="subcontracted_task_data_id" baseTableName="task" constraintName="fk3635855b595a0" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="subcontracted_task_data" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="subcontrated_task_data_id" baseTableName="task" constraintName="fk3635855b595a0" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="subcontracted_task_data" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-288">
<addForeignKeyConstraint baseColumnNames="task_element_id" baseTableName="task" constraintName="fk3635854936bb8c" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="task_element" referencesUniqueColumn="false"/>
@ -2209,13 +2209,13 @@
<addForeignKeyConstraint baseColumnNames="resource_id" baseTableName="work_report" constraintName="fkfd7aa62248d21790" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="resource" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-307">
<addForeignKeyConstraint baseColumnNames="label_id" baseTableName="work_report_label_type_assignment" constraintName="fkbb262920c1c2746e" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="label_id" baseTableName="work_report_label_type_assigment" constraintName="fkbb262920c1c2746e" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-308">
<addForeignKeyConstraint baseColumnNames="label_type_id" baseTableName="work_report_label_type_assignment" constraintName="fkbb262920707cd777" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label_type" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="label_type_id" baseTableName="work_report_label_type_assigment" constraintName="fkbb262920707cd777" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="label_type" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-309">
<addForeignKeyConstraint baseColumnNames="work_report_type_id" baseTableName="work_report_label_type_assignment" constraintName="fkbb262920131853a1" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="work_report_type" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="work_report_type_id" baseTableName="work_report_label_type_assigment" constraintName="fkbb262920131853a1" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="work_report_type" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="mrego" id="initial-database-creation-310">
<addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="work_report_line" constraintName="fke2af47f1efda874f" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="order_element" referencesUniqueColumn="false"/>
@ -2255,4 +2255,146 @@
</insert>
</changeSet>
<changeSet author="pluchyn" id="rename_work_report_label_type_assigment">
<renameTable oldTableName="work_report_label_type_assigment"
newTableName="work_report_label_type_assignment"/>
</changeSet>
<!-- Next two changesets are renaming pkey -->
<changeSet author="pluchyn" id="drop_pkey_work_report_label_type_assignment">
<dropPrimaryKey constraintName="work_report_label_type_assigment_pkey"
tableName="work_report_label_type_assignment"/>
</changeSet>
<changeSet author="pluchyn" id="add_pkey_work_report_label_type_assignment">
<addPrimaryKey columnNames="id"
constraintName="work_report_label_type_assignment_pkey"
tableName="work_report_label_type_assignment"/>
</changeSet>
<!-- Next two changesets are renaming fkey constraints -->
<changeSet author="pluchyn" id="drop_fkey_constraints_work_report_label_type_assignment">
<dropForeignKeyConstraint baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920c1c2746e"/>
<dropForeignKeyConstraint baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920707cd777"/>
<dropForeignKeyConstraint baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920131853a1"/>
</changeSet>
<changeSet author="pluchyn" id="add_fkey_constraints_work_report_label_type_assignment">
<addForeignKeyConstraint baseColumnNames="label_id" baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920c1c2746e" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="label" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="label_type_id" baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920707cd777" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="label_type" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="work_report_type_id" baseTableName="work_report_label_type_assignment"
constraintName="fkbb262920131853a1" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="work_report_type" referencesUniqueColumn="false"/>
</changeSet>
<changeSet author="pluchyn" id="rename_material_assigment">
<renameTable oldTableName="material_assigment"
newTableName="material_assignment"/>
</changeSet>
<!-- Next two changesets are renaming pkey -->
<changeSet author="pluchyn" id="drop_pkey_material_assignment">
<dropPrimaryKey constraintName="material_assigment_pkey"
tableName="material_assignment"/>
</changeSet>
<changeSet author="pluchyn" id="add_pkey_material_assignment">
<addPrimaryKey columnNames="id"
constraintName="material_assignment_pkey"
tableName="material_assignment"/>
</changeSet>
<changeSet author="pluchyn" id="rename_material_assigment_template">
<renameTable oldTableName="material_assigment_template"
newTableName="material_assignment_template"/>
</changeSet>
<!-- Next two changesets are renaming pkey -->
<changeSet author="pluchyn" id="drop_pkey_material_assignment_template">
<dropPrimaryKey constraintName="material_assigment_template_pkey"
tableName="material_assignment_template"/>
</changeSet>
<changeSet author="pluchyn" id="add_pkey_material_assignment_template">
<addPrimaryKey columnNames="id"
constraintName="material_assignment_template_pkey"
tableName="material_assignment_template"/>
</changeSet>
<changeSet author="pluchyn" id="rename_order_element-last_advance_meausurement_for_spreading">
<renameColumn oldColumnName="last_advance_meausurement_for_spreading"
newColumnName="last_advance_measurement_for_spreading"
columnDataType="DECIMAL(19,2)"
tableName="order_element"/>
</changeSet>
<changeSet author="pluchyn" id="rename_task-subcontrated_task_data_id">
<renameColumn oldColumnName="subcontrated_task_data_id"
newColumnName="subcontracted_task_data_id"
columnDataType="BIGINT"
tableName="task"/>
</changeSet>
<!-- Next two changesets are renaming unique constraint -->
<changeSet author="pluchyn" id="drop_unique_constraint_task">
<dropUniqueConstraint constraintName="task_subcontrated_task_data_id_key"
tableName="task"/>
</changeSet>
<changeSet author="pluchyn" id="add_unique_constraint_task">
<addUniqueConstraint columnNames="subcontracted_task_data_id"
constraintName="task_subcontracted_task_data_id_key" deferrable="false" disabled="false"
initiallyDeferred="false" tableName="task"/>
</changeSet>
<!-- Next two changesets are renaming fkey constraints -->
<changeSet author="pluchyn" id="drop_fkey-material_assignment-material_assignment_template">
<dropForeignKeyConstraint baseTableName="material_assignment" constraintName="fkb3e9425b5c68337"/>
<dropForeignKeyConstraint baseTableName="material_assignment" constraintName="fkb3e9425efda874f"/>
<dropForeignKeyConstraint baseTableName="material_assignment_template" constraintName="fk35254354b5c68337"/>
<dropForeignKeyConstraint baseTableName="material_assignment_template" constraintName="fk3525435419b9dfde"/>
</changeSet>
<changeSet author="pluchyn" id="add_fkey_material_assignment-material_assignment_template">
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment"
constraintName="fkb3e9425b5c68337" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="material" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="order_element_id" baseTableName="material_assignment"
constraintName="fkb3e9425efda874f" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="order_element" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="material_id" baseTableName="material_assignment_template"
constraintName="fk35254354b5c68337" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="material" referencesUniqueColumn="false"/>
<addForeignKeyConstraint baseColumnNames="order_element_template_id"
baseTableName="material_assignment_template" constraintName="fk3525435419b9dfde"
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION"
referencedColumnNames="id" referencedTableName="order_element_template"
referencesUniqueColumn="false"/>
</changeSet>
<!-- Next two changesets are renaming fkey constraint -->
<changeSet author="pluchyn" id="drop_fkey_task">
<dropForeignKeyConstraint baseTableName="task" constraintName="fk3635855b595a0"/>
</changeSet>
<changeSet author="pluchyn" id="add_fkey_task">
<addForeignKeyConstraint baseColumnNames="subcontracted_task_data_id" baseTableName="task"
constraintName="fk3635855b595a0" deferrable="false" initiallyDeferred="false"
onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id"
referencedTableName="subcontracted_task_data" referencesUniqueColumn="false"/>
</changeSet>
</databaseChangeLog>

View file

@ -143,6 +143,7 @@
<property name="defaultPasswordsControl" value="${default.passwordsControl}"/>
<property name="exampleUsersDisabled" value="${default.exampleUsersDisabled}"/>
<property name="emailSendingEnabled" value="${default.emailSendingEnabled}"/>
<property name="deleteAllProjectsButtonDisabled" value="${default.deleteAllProjectsButtonDisabled}"/>
</bean>
<bean id="scenarioManager" class="org.libreplan.business.scenarios.OnlyMainScenarioAwareManager"/>

View file

@ -24,6 +24,7 @@ package org.libreplan.web.orders;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.LocalDate;
import org.libreplan.business.calendars.entities.BaseCalendar;
import org.libreplan.business.common.Configuration;
import org.libreplan.business.common.Registry;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
import org.libreplan.business.externalcompanies.entities.DeadlineCommunication;
@ -77,7 +78,6 @@ import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.SelectEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Column;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Comboitem;
@ -293,6 +293,22 @@ public class OrderCRUDController extends GenericForwardComposer {
loadLabels();
FilterUtils.writeProjectPlanningFilterChanged(false);
createDeleteAllProjectsButton();
}
/**
* This method is needed to create "Delete all projects" button,
* that is visible only for developers on orders list page.
*/
private void createDeleteAllProjectsButton() {
if (!isDeleteAllProjectsButtonDisabled()) {
Button deleteAllProjectButton = new Button();
deleteAllProjectButton.setLabel("Delete all projects");
deleteAllProjectButton.setDisabled(isDeleteAllProjectsButtonDisabled());
deleteAllProjectButton.addEventListener(Events.ON_CLICK, event -> deleteAllProjects());
orderFilter.appendChild(deleteAllProjectButton);
}
}
private void loadLabels() {
@ -1798,4 +1814,29 @@ public class OrderCRUDController extends GenericForwardComposer {
return getOrder().getBudget().add(getResourcesBudget());
}
private Boolean isDeleteAllProjectsButtonDisabled() {
return Configuration.getInstance().isDeleteAllProjectsButtonDisabled();
}
/**
* Should be public!
* Used in orders/_orderFilter.zul
*/
public void deleteAllProjects() {
boolean canNotDelete = false;
for (Order order : orderModel.getOrders()) {
try {
orderModel.remove(order);
} catch (Exception ignored) {
canNotDelete = true;
continue;
}
}
if (canNotDelete) {
messagesForUser.showMessage(Level.ERROR, "Not all projects were removed") ;
}
listing.setModel(new SimpleListModel<>(orderModel.getOrders()));
listing.invalidate();
}
}

View file

@ -158,6 +158,7 @@ public class UserCRUDController extends BaseCRUDController<User> implements IUse
List<UserRole> roles = new ArrayList<>(Arrays.asList(UserRole.values()));
roles.remove(UserRole.ROLE_BOUND_USER);
// Sorting by ASC
Collections.sort(roles, (arg0, arg1) -> _(arg0.getDisplayName()).compareTo(_(arg1.getDisplayName())));
for (UserRole role : roles) {
@ -202,6 +203,10 @@ public class UserCRUDController extends BaseCRUDController<User> implements IUse
if (comboItem != null) {
addRole(comboItem.getValue());
userRolesCombo.removeItemAt(comboItem.getIndex());
userRolesCombo.setSelectedItem(null);
userRolesCombo.setText(null);
}
}
@ -212,9 +217,34 @@ public class UserCRUDController extends BaseCRUDController<User> implements IUse
public void removeRole(UserRole role) {
userModel.removeRole(role);
userRolesCombo.getItems().clear();
appendAllUserRolesExcept(UserRole.ROLE_BOUND_USER, userModel.getRoles(), userRolesCombo);
Util.reloadBindings(editWindow);
}
/**
* Appends the existing UserRoles to the {@link Combobox} passed.
*
* @param boundUserRole {@link UserRole#ROLE_BOUND_USER} that need to be excluded
* @param userRoles a list of {@link UserRole} that need to be excluded
* @param combo {@link Combobox} to which a list of user roles will be appended
*/
private void appendAllUserRolesExcept(UserRole boundUserRole, List<UserRole> userRoles, Combobox combo) {
List<UserRole> roles = new ArrayList<>(Arrays.asList(UserRole.values()));
roles.remove(boundUserRole);
roles.removeAll(userRoles);
// Sorting by ASC
Collections.sort(roles, (arg0, arg1) -> _(arg0.getDisplayName()).compareTo(_(arg1.getDisplayName())));
for (UserRole role : roles) {
Comboitem item = combo.appendItem(_(role.getDisplayName()));
item.setValue(role);
}
}
public List<Profile> getProfiles() {
return userModel.getProfiles();
}

View file

@ -35,6 +35,7 @@
<default.passwordsControl>true</default.passwordsControl>
<default.exampleUsersDisabled>true</default.exampleUsersDisabled>
<default.emailSendingEnabled>true</default.emailSendingEnabled>
<default.deleteAllProjectsButtonDisabled>true</default.deleteAllProjectsButtonDisabled>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -94,6 +95,9 @@
<!-- Enable example users
(wsreader, wswriter, wssubcontracting, manager, hresources, outsourcing and reports) -->
<default.exampleUsersDisabled>false</default.exampleUsersDisabled>
<!-- Enabling "Delete all projects" button -->
<default.deleteAllProjectsButtonDisabled>false</default.deleteAllProjectsButtonDisabled>
</properties>
</profile>