Skip to content

Commit 9ac701d

Browse files
Merge pull request #168 from qbicsoftware/release/0.12.0
Release 0.12.0
2 parents 0e3db89 + 7fbb85e commit 9ac701d

File tree

53 files changed

+1699
-178
lines changed

Some content is hidden

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

53 files changed

+1699
-178
lines changed

.gitignore

+8-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ logs
1919
*/webapp/frontend/index.html
2020
*/package.json
2121
*/tsconfig.json
22-
*/types.d.ts
2322
*/webpack.config.js
2423
*/webpack.generated.js
2524

@@ -31,3 +30,11 @@ error-screenshots/
3130
*/webapp/frontend/generated/theme.d.ts
3231
*/package-lock.json
3332
/logs/
33+
34+
# Ignore Vite generated files created since vaadin 23.2
35+
/frontend/index.html
36+
/frontend/generated/index.ts
37+
/vaadinfrontend/types.d.ts
38+
/frontend/generated/vaadin.ts
39+
/frontend/generated/vaadin-featureflags.ts
40+
/vaadinfrontend/vite.config.ts

README.md

+21-6
Original file line numberDiff line numberDiff line change
@@ -132,16 +132,31 @@ default configuration.
132132
service.host.name=${DM_SERVICE_HOST:localhost}
133133
service.host.protocol=${DM_HOST_PROTOCOL:https}
134134
service.host.port=${DM_SERVICE_PORT:-1}
135-
136135
# route for mail confirmation consumption
137136
email-confirmation-endpoint=${EMAIL_CONFIRMATION_ENDPOINT:login}
138137
email-confirmation-parameter=${EMAIL_CONFIRMATION_PARAMETER:confirm-email}
139-
140138
# route for password reset
141139
password-reset-endpoint=${PASSWORD_RESET_ENDPOINT:new-password}
142140
password-reset-parameter=${PASSWORD_RESET_PARAMETER:user-id}
143141
```
144142

143+
Since the application will retrieve experimental design values from a list of defined vocabularies
144+
a connection to the datasource containing this information is necessary:
145+
146+
| environment variable | description |
147+
|------------------------------|------------------------------------------|
148+
| `OPENBIS_DATASOURCE_URL` | The vocabulary database host API address |
149+
| `OPENBIS_USER_NAME` | The vocabulary database user name |
150+
| `OPENBIS_USER_PASSWORD` | The vocabulary database password |
151+
152+
The application properties file could look like the following:
153+
154+
```properties
155+
openbis.user.name=${OPENBIS_USER_NAME:openbis-username}
156+
openbis.user.password=${OPENBIS_USER_PASSWORD:openbis-password}
157+
openbis.datasource.url=${OPENBIS_DATASOURCE_URL:openbis-url}
158+
```
159+
145160
#### Properties
146161

147162
The environment variables can either be set in the runtime configuration of your IDE or directly in
@@ -162,26 +177,26 @@ spring.datasource.driver-class-name=${USER_DB_DRIVER:com.mysql.cj.jdbc.Driver}
162177
spring.datasource.username=${USER_DB_USER_NAME:myusername}
163178
spring.datasource.password=${USER_DB_USER_PW:astrongpassphrase!}
164179
spring.jpa.hibernate.ddl-auto=update
165-
166180
# mail configuration
167181
spring.mail.username=${MAIL_USERNAME}
168182
spring.mail.password=${MAIL_PASSWORD}
169183
spring.mail.host=${MAIL_HOST:smtp.gmail.com}
170184
spring.mail.default-encoding=UTF-8
171185
spring.mail.port=${MAIL_PORT:587}
172-
173186
# global service route configuration for mail interaction requests
174187
service.host.name=${DM_SERVICE_HOST:localhost}
175188
service.host.protocol=${DM_HOST_PROTOCOL:https}
176189
service.host.port=${DM_SERVICE_PORT:-1}
177-
178190
# route for mail confirmation consumption
179191
email-confirmation-endpoint=${EMAIL_CONFIRMATION_ENDPOINT:login}
180192
email-confirmation-parameter=${EMAIL_CONFIRMATION_PARAMETER:confirm-email}
181-
182193
# route for password reset
183194
password-reset-endpoint=${PASSWORD_RESET_ENDPOINT:new-password}
184195
password-reset-parameter=${PASSWORD_RESET_PARAMETER:user-id}
196+
# openbis-client credentials
197+
openbis.user.name=${OPENBIS_USER_NAME:openbis-username}
198+
openbis.user.password=${OPENBIS_USER_PASSWORD:openbis-password}
199+
openbis.datasource.url=${OPENBIS_DATASOURCE_URL:openbis-url}
185200

186201
```
187202

mariadb-connector/pom.xml database-connector/pom.xml

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

12-
<artifactId>mariadb-connector</artifactId>
12+
<artifactId>database-connector</artifactId>
1313
<dependencyManagement>
1414
<dependencies>
1515
<dependency>
@@ -26,6 +26,11 @@
2626
<version>0.11.1</version>
2727
<scope>compile</scope>
2828
</dependency>
29+
<dependency>
30+
<groupId>life.qbic</groupId>
31+
<artifactId>openbis-client-lib</artifactId>
32+
<version>1.5.0</version>
33+
</dependency>
2934
<dependency>
3035
<groupId>org.springframework.boot</groupId>
3136
<artifactId>spring-boot-starter-data-jpa</artifactId>

mariadb-connector/src/main/java/life/qbic/projectmanagement/persistence/ProjectPreviewJpaRepository.java database-connector/src/main/java/life/qbic/projectmanagement/persistence/ProjectPreviewJpaRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class ProjectPreviewJpaRepository implements ProjectPreviewLookup {
2323

2424
private final ProjectPreviewRepository projectPreviewRepository;
2525

26-
public ProjectPreviewJpaRepository(@Autowired ProjectPreviewRepository projectPreviewRepository) {
26+
public ProjectPreviewJpaRepository(ProjectPreviewRepository projectPreviewRepository) {
2727
Objects.requireNonNull(projectPreviewRepository);
2828
this.projectPreviewRepository = projectPreviewRepository;
2929
}

mariadb-connector/src/main/java/life/qbic/projectmanagement/persistence/ProjectJpaRepository.java database-connector/src/main/java/life/qbic/projectmanagement/persistence/ProjectRepositoryImpl.java

+22-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package life.qbic.projectmanagement.persistence;
22

3+
import static life.qbic.logging.service.LoggerFactory.logger;
4+
35
import java.util.List;
46
import java.util.Optional;
7+
import life.qbic.logging.api.Logger;
8+
import life.qbic.projectmanagement.application.ProjectCreationService;
59
import life.qbic.projectmanagement.domain.project.Project;
610
import life.qbic.projectmanagement.domain.project.ProjectCode;
711
import life.qbic.projectmanagement.domain.project.ProjectId;
@@ -12,7 +16,7 @@
1216

1317

1418
/**
15-
* <b>Project JPA repository</b>
19+
* <b>Project repository implementation</b>
1620
*
1721
* <p>Implementation for the {@link ProjectRepository} interface.
1822
*
@@ -24,25 +28,39 @@
2428
* dependency
2529
* upon creation.
2630
*
31+
* Also handles project storage in openBIS through {@link QbicProjectDataRepo}
32+
*
2733
* @since 1.0.0
2834
*/
2935
@Component
3036
@Scope("singleton")
31-
public class ProjectJpaRepository implements ProjectRepository {
37+
public class ProjectRepositoryImpl implements ProjectRepository {
3238

39+
private static final Logger log = logger(ProjectRepositoryImpl.class);
3340
private final QbicProjectRepo projectRepo;
41+
private final QbicProjectDataRepo projectDataRepo;
3442

3543
@Autowired
36-
public ProjectJpaRepository(QbicProjectRepo projectRepo) {
44+
public ProjectRepositoryImpl(QbicProjectRepo projectRepo, QbicProjectDataRepo projectDataRepo) {
3745
this.projectRepo = projectRepo;
46+
this.projectDataRepo = projectDataRepo;
3847
}
3948

4049
@Override
4150
public void add(Project project) {
42-
if (doesProjectExistWithId(project.getId())) {
51+
ProjectCode projectCode = project.getProjectCode();
52+
if (doesProjectExistWithId(project.getId()) || projectDataRepo.projectExists(projectCode)) {
4353
throw new ProjectExistsException();
4454
}
4555
projectRepo.save(project);
56+
57+
try {
58+
projectDataRepo.add(project.getProjectCode());
59+
} catch (Exception e) {
60+
log.error("Could not add project to openBIS. Removing project from repository, as well.");
61+
projectRepo.delete(project);
62+
throw e;
63+
}
4664
}
4765

4866
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package life.qbic.projectmanagement.persistence;
2+
3+
import life.qbic.projectmanagement.domain.project.Project;
4+
import life.qbic.projectmanagement.domain.project.ProjectCode;
5+
6+
7+
/**
8+
* <b>Project Data Storage Interface</b>
9+
*
10+
* <p>Provides access to the persistence layer that handles the {@link Project} data storage.
11+
*
12+
* @since 1.0.0
13+
*/
14+
public interface QbicProjectDataRepo {
15+
16+
/**
17+
* Creates a reference to a {@link Project} in the data repository to connect project data.
18+
*
19+
* @param projectCode the {@link ProjectCode} of the project reference to store
20+
* @since 1.0.0
21+
*/
22+
void add(ProjectCode projectCode);
23+
24+
/**
25+
* Searches for projects that contain the provided project code
26+
*
27+
* @param projectCode the {@link ProjectCode} to search for in the data repository
28+
* @return true, if a project with that code already exists in the system, false if not
29+
* @since 1.0.0
30+
*/
31+
boolean projectExists(ProjectCode projectCode);
32+
33+
}

mariadb-connector/src/main/java/life/qbic/projectmanagement/persistence/person/Person.java database-connector/src/main/java/life/qbic/projectmanagement/persistence/person/Person.java

-41
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,6 @@ public class Person {
2929
@Column(name = "referenceId")
3030
private String referenceId;
3131

32-
public void setId(Long id) {
33-
this.id = id;
34-
}
35-
36-
@Id
37-
public Long getId() {
38-
return id;
39-
}
40-
4132
public String fullName() {
4233
return this.firstName + " " + this.lastName;
4334
}
@@ -49,36 +40,4 @@ public String referenceId() {
4940
public String emailAddress() {
5041
return this.email;
5142
}
52-
53-
private String getFirstName() {
54-
return firstName;
55-
}
56-
57-
private void setFirstName(String firstName) {
58-
this.firstName = firstName;
59-
}
60-
61-
private String getLastName() {
62-
return lastName;
63-
}
64-
65-
private void setLastName(String lastName) {
66-
this.lastName = lastName;
67-
}
68-
69-
private String getEmail() {
70-
return email;
71-
}
72-
73-
private void setEmail(String email) {
74-
this.email = email;
75-
}
76-
77-
private String getReferenceId() {
78-
return referenceId;
79-
}
80-
81-
private void setReferenceId(String referenceId) {
82-
this.referenceId = referenceId;
83-
}
8443
}

mariadb-connector/src/main/java/life/qbic/projectmanagement/persistence/person/PersonReferenceJpaRepository.java database-connector/src/main/java/life/qbic/projectmanagement/persistence/person/PersonReferenceJpaRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class PersonReferenceJpaRepository implements PersonLookupService {
1717

1818
private final PersonRepo personRepo;
1919

20-
public PersonReferenceJpaRepository(@Autowired PersonRepo personRepo) {
20+
public PersonReferenceJpaRepository(PersonRepo personRepo) {
2121
this.personRepo = personRepo;
2222
}
2323

0 commit comments

Comments
 (0)