Skip to content

Commit 6ea24c4

Browse files
committed
Merge remote-tracking branch 'origin/develop'
2 parents 78180f5 + b827310 commit 6ea24c4

File tree

121 files changed

+55290
-71419
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+55290
-71419
lines changed

README.md

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,54 @@
11
# EUSurvey
22
EUSurvey is the official online survey management tool of the European Commission. Its development was started in 2013 under the supervision of [DIGIT](https://ec.europa.eu/dgs/informatics/index_en.htm) and is published as open source software under the terms of the EUPL public license. EUSurvey is a servlet based application and can be installed on any servlet container.
3-
* Travis build on master branch [![Build Status](https://travis-ci.com/EUSurvey/EUSURVEY.svg?branch=master)](https://travis-ci.com/EUSurvey/EUsurvey)
4-
* [Latest Sonar Cloud analysis](https://sonarcloud.io/dashboard?id=EUSURVEY) ![Bugs](https://sonarcloud.io/api/project_badges/measure?project=EUSURVEY&metric=bugs) ![Code smells](https://sonarcloud.io/api/project_badges/measure?project=EUSURVEY&metric=code_smells) ![Coverage](https://sonarcloud.io/api/project_badges/measure?project=EUSURVEY&metric=coverage)
53

64
## Installation requirements
7-
1. Tomcat 8
8-
1. Java 8
9-
1. MySQL 5.7
5+
1. Tomcat 9
6+
1. Java 11
7+
1. MySQL 8.0
108
1. Maven
119

10+
Make sure to create a JRE_HOME environment variable that points to the Java installation folder.
11+
Make sure to create a CATALINA_HOME environment variable that points to Tomcat's installation folder.
12+
Make sure to add Maven's bin folder to the PATH environment variable.
13+
1214
## Quick start
13-
Extensive installation guidelines may be found [here](https://joinup.ec.europa.eu/sites/default/files/document/2017-08/eusurvey_oss_installation_guide_v1_4_0_1.pdf). We give a summary of installation guidelines here.
15+
Extensive installation guidelines may be found in our [installation guide](https://joinup.ec.europa.eu/sites/default/files/document/2017-08/eusurvey_oss_installation_guide_v1_4_0_1.pdf). We give a summary of installation guidelines here.
1416

1517
### Database initialization
16-
1. Create eusurvey schemas;
18+
Connect to the database server using a tool like MySQL Command Line Client to execute the following commands:
19+
20+
1. Create eusurvey schema:
1721
``` sql
18-
create database eusurveydb character set utf8 COLLATE utf8_general_ci;
19-
create database eusurveyreportdb character set utf8 COLLATE utf8_general_ci;
22+
CREATE SCHEMA `eusurveydb` DEFAULT CHARACTER SET utf8mb4;
2023
```
2124

2225
2. Create a user which will access this schema;
2326
``` sql
24-
CREATE USER 'eusurveyuser'@'localhost' IDENTIFIED BY 'eusurveyuser';
27+
CREATE USER 'eusurveyuser'@'localhost' IDENTIFIED BY 'eusurveyuserpassword';
2528
GRANT ALL PRIVILEGES ON eusurveydb.* TO 'eusurveyuser'@'localhost';
2629
GRANT EVENT ON *.* TO 'eusurveyuser'@'localhost';
27-
28-
CREATE USER 'eusurveyruser'@'localhost' IDENTIFIED BY 'eusurveyruser';
29-
GRANT ALL PRIVILEGES ON eusurveyreportdb.* TO 'eusurveyruser'@'localhost';
3030
```
3131

3232
3. Set Mysql variables
3333
``` sql
3434
SET GLOBAL event_scheduler = ON;
35-
SET GLOBAL log_bin_trust_function_creators = 1;
36-
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
3735
```
3836

37+
### Download source code
38+
Either download EUSurvey's source code as a ZIP archive an extract its content or use git to clone the repository.
39+
40+
3941
### Spring properties modification
4042
Modify the spring properties from src/main/config file to match your requirements.
43+
For the standard OSS version please modify src/main/config/oss.
44+
If you want to use docker, please modify src/main/config/ossdocker.
4145

4246
### Run the application
4347
Build EUSurvey's war using the following command:
4448
``` batch
4549
mvn clean install -Denvironment=oss
4650
```
47-
48-
Build & deploy the application on your tomcat manager using the following command:
49-
``` batch
50-
mvn clean tomcat7:deploy
51-
-Dtomcat.admin.password=your_tomcat_password
52-
-Dtomcat.admin=your_tomcat_username
53-
-Dtomcat.deploy.url=your_tomcat_url
54-
-Denvironment=oss
55-
```
51+
Copy the war file from target/eusurvey.war to your Tomcat's webapps folder and restart Tomcat to automatically deploy the application.
5652

5753
## Repository conventions
5854
### Workflow

clean_labels.ps1

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
ECHO "Clean labels"
2+
Get-ChildItem ".\src\main\webapp\WEB-INF\classes" -Filter messages_* | Foreach-Object {
3+
ECHO $_.Name
4+
$data = new-object System.Collections.Hashtable
5+
$last_key = ""
6+
$include_next_line = $false
7+
8+
Get-Content -Encoding utf8 -Path $_.FullName | ForEach-Object {
9+
if ($_.trim() -ne "")
10+
{
11+
if ($include_next_line)
12+
{
13+
if ($_ -match '\\$')
14+
{
15+
$include_next_line = $true
16+
$_ = $_.TrimEnd('\')
17+
}
18+
else
19+
{
20+
$include_next_line = $false
21+
}
22+
$data[$last_key] = $data[$last_key] + $_.Trim()
23+
}
24+
else
25+
{
26+
if ($_ -match '\\$')
27+
{
28+
$include_next_line = $true
29+
$_ = $_.TrimEnd('\')
30+
}
31+
$split = $_.split("=")
32+
$last_key = $split[0].Trim()
33+
$value = ($split | Select-Object -Skip 1) -join '='
34+
$data[$last_key] = $value.Trim()
35+
}
36+
}
37+
}
38+
$data.GetEnumerator() | sort -Property name | ForEach-Object { "{0} = {1}" -f $_.Name, $_.Value } | Set-Content -Encoding utf8NoBOM -Path $_.FullName
39+
}
40+
41+

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<artifactId>eusurvey</artifactId>
88
<name>eusurvey</name>
99
<packaging>war</packaging>
10-
<version>1.5.3.6</version>
10+
<version>1.5.4</version>
1111
<properties>
1212
<java-version>11</java-version>
1313
<org.springframework-version>5.3.20</org.springframework-version>

search_unused_labels.ps1

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
ECHO "Search used labels"
2+
$used_labels = New-Object Collections.Generic.List[String]
3+
Get-ChildItem ".\src\main" -Recurse | Foreach-Object {
4+
$target = get-item $_.FullName
5+
if (!$target.PSIsContainer)
6+
{
7+
Get-Content -Encoding utf8 -Path $_.FullName | ForEach-Object {
8+
if ($_.Contains('getMessage("'))
9+
{
10+
$line = $_
11+
while ($line.IndexOf('getMessage("') -ne -1)
12+
{
13+
$line = $line.Substring($line.IndexOf('getMessage("') + 12)
14+
$used_labels.Add($line.split('"')[0])
15+
}
16+
}
17+
if ($_.Contains("getMessage('"))
18+
{
19+
$line = $_
20+
while ($line.IndexOf("getMessage('") -ne -1)
21+
{
22+
$line = $line.Substring($line.IndexOf("getMessage('") + 12)
23+
$used_labels.Add($line.split("'")[0])
24+
}
25+
}
26+
if ($_.Contains('getMessage(resource, "'))
27+
{
28+
$line = $_
29+
while ($line.IndexOf('getMessage(resource, "') -ne -1)
30+
{
31+
$line = $line.Substring($line.IndexOf('getMessage(resource, "') + 22)
32+
$used_labels.Add($line.split('"')[0])
33+
}
34+
}
35+
if ($_.Contains("getMessage(resource, '"))
36+
{
37+
$line = $_
38+
while ($line.IndexOf("getMessage(resource, '") -ne -1)
39+
{
40+
$line = $line.Substring($line.IndexOf("getMessage(resource, '") + 22)
41+
$used_labels.Add($line.split("'")[0])
42+
}
43+
}
44+
if ($_.Contains('<spring:message code="'))
45+
{
46+
$line = $_
47+
while ($line.IndexOf('<spring:message code="') -ne -1)
48+
{
49+
$line = $line.Substring($line.IndexOf('<spring:message code="') + 22)
50+
$used_labels.Add($line.split('"')[0])
51+
}
52+
}
53+
if ($_.Contains("<spring:message code='"))
54+
{
55+
$line = $_
56+
while ($line.IndexOf("<spring:message code='") -ne -1)
57+
{
58+
$line = $line.Substring($line.IndexOf("<spring:message code='") + 22)
59+
$used_labels.Add($line.split("'")[0])
60+
}
61+
}
62+
}
63+
}
64+
}
65+
66+
$used_labels = $used_labels | Sort-Object | Get-Unique
67+
68+
# Labels always threated as used (check before running)
69+
$force_used = New-Object Collections.Generic.List[String]
70+
# Activity object
71+
$force_used.Add("label.Survey")
72+
$force_used.Add("label.DraftSurvey")
73+
$force_used.Add("label.SurveyAndDraft")
74+
$force_used.Add("label.Activities")
75+
$force_used.Add("label.Results")
76+
$force_used.Add("label.Contribution")
77+
$force_used.Add("label.TestContribution")
78+
$force_used.Add("label.GuestList")
79+
$force_used.Add("label.Privileges")
80+
$force_used.Add("label.Messages")
81+
$force_used.Add("label.Comment")
82+
83+
# Activity property
84+
$force_used.Add("label.n/a")
85+
$force_used.Add("label.State")
86+
$force_used.Add("label.PendingChanges")
87+
$force_used.Add("label.Alias")
88+
$force_used.Add("label.EndNotificationState")
89+
$force_used.Add("label.EndNotificationValue")
90+
$force_used.Add("label.EndNotificationReach")
91+
$force_used.Add("label.ContactCreation")
92+
$force_used.Add("label.Security")
93+
$force_used.Add("label.Password")
94+
$force_used.Add("label.Anonymity")
95+
$force_used.Add("label.Privacy")
96+
$force_used.Add("label.Captcha")
97+
$force_used.Add("label.EditContribution")
98+
$force_used.Add("label.MultiPaging")
99+
$force_used.Add("label.PageWiseValidation")
100+
$force_used.Add("label.WCAGCompliance")
101+
$force_used.Add("label.Owner")
102+
$force_used.Add("label.ProgressBar")
103+
$force_used.Add("label.MotivationPopUp")
104+
$force_used.Add("label.Properties")
105+
$force_used.Add("label.UsefulLink")
106+
$force_used.Add("label.BackgroundDocument")
107+
$force_used.Add("label.Title")
108+
$force_used.Add("label.PivotLanguage")
109+
$force_used.Add("label.Contact")
110+
$force_used.Add("label.Autopublish")
111+
$force_used.Add("label.StartDate")
112+
$force_used.Add("label.EndDate")
113+
$force_used.Add("label.Logo")
114+
$force_used.Add("label.Skin")
115+
$force_used.Add("label.AutoNumberingSections")
116+
$force_used.Add("label.AutoNumberingQuestions")
117+
$force_used.Add("label.ElementOrder")
118+
$force_used.Add("label.SurveyElement")
119+
$force_used.Add("label.Translation")
120+
$force_used.Add("label.ConfirmationPage")
121+
$force_used.Add("label.EscapePage")
122+
$force_used.Add("label.PublishIndividual")
123+
$force_used.Add("label.PublishCharts")
124+
$force_used.Add("label.PublishStatistics")
125+
$force_used.Add("label.PublicSearch")
126+
$force_used.Add("label.PublishQuestionSelection")
127+
$force_used.Add("label.PublishAnswerSelection")
128+
$force_used.Add("label.ExportStatistics")
129+
$force_used.Add("label.ExportContent")
130+
$force_used.Add("label.ExportCharts")
131+
$force_used.Add("label.ExportActivities")
132+
$force_used.Add("label.PublishUploadedElements")
133+
$force_used.Add("label.ExportUploadedElements")
134+
$force_used.Add("label.DeleteColumn")
135+
$force_used.Add("label.Export")
136+
$force_used.Add("label.Token/Contacts/Department/VoterFile")
137+
$force_used.Add("label.Invitations")
138+
$force_used.Add("label.EndNotificationMessage")
139+
$force_used.Add("label.Quorum")
140+
$force_used.Add("label.EligibleLists")
141+
$force_used.Add("label.MaximumPreferentialVotes")
142+
$force_used.Add("label.NumberOfSeatsToAllocate")
143+
$force_used.Add("label.EnableResultsTestPage")
144+
145+
# Activity Event
146+
$force_used.Add("label.Added")
147+
$force_used.Add("label.Applied")
148+
$force_used.Add("label.Modified")
149+
$force_used.Add("label.Discarded")
150+
$force_used.Add("label.Deleted")
151+
$force_used.Add("label.Saved")
152+
$force_used.Add("label.Removed")
153+
$force_used.Add("label.Enabled")
154+
$force_used.Add("label.Disabled")
155+
$force_used.Add("label.Requested")
156+
$force_used.Add("label.Returned")
157+
$force_used.Add("label.Started")
158+
$force_used.Add("label.Created")
159+
$force_used.Add("label.Paused")
160+
$force_used.Add("label.Sent")
161+
$force_used.Add("label.Opened")
162+
$force_used.Add("label.Submitted")
163+
$force_used.Add("label.Accepted")
164+
$force_used.Add("label.Rejected")
165+
$force_used.Add("label.Expired")
166+
167+
# Evote Template Title
168+
$force_used.Add("label.Brussels")
169+
$force_used.Add("label.IspraSeville")
170+
$force_used.Add("label.Luxembourg")
171+
$force_used.Add("label.OutsideCommunity")
172+
$force_used.Add("label.Standard")
173+
174+
ECHO "List unused labels"
175+
$unused_labels = New-Object Collections.Generic.List[String]
176+
Get-Content -Encoding utf8 -Path ".\src\main\webapp\WEB-INF\classes\messages_en.properties" | ForEach-Object {
177+
if ($_.trim() -ne "")
178+
{
179+
$split = $_.split("=")
180+
$last_key = $split[0].Trim()
181+
if (!$last_key.StartsWith("logging.") -And !$last_key.StartsWith("label.lang.") -And !$last_key.StartsWith("label.ECF.") -And !$last_key.StartsWith("domain.") -And !$last_key.StartsWith("label.dgnew."))
182+
{
183+
if (!$used_labels.Contains($last_key) -And !$force_used.Contains($last_key))
184+
{
185+
$unused_labels.Add($last_key)
186+
ECHO $last_key
187+
}
188+
}
189+
}
190+
}
191+
192+
ECHO "Delete unused labels"
193+
PAUSE
194+
$data = New-Object Collections.Generic.List[String]
195+
Get-Content -Encoding utf8 -Path ".\src\main\webapp\WEB-INF\classes\messages_en.properties" | ForEach-Object {
196+
if ($_.trim() -ne "")
197+
{
198+
$split = $_.split("=")
199+
$last_key = $split[0].Trim()
200+
if (!$unused_labels.Contains($last_key))
201+
{
202+
$data.Add($_)
203+
}
204+
}
205+
}
206+
207+
$data | Set-Content -Encoding utf8NoBOM -Path ".\src\main\webapp\WEB-INF\classes\messages_en.properties"

0 commit comments

Comments
 (0)