Skip to content

Commit ced131a

Browse files
committed
dbeaver/pro#5848 fix validating project name
1 parent ececd73 commit ced131a

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/BaseWebProjectImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ public String getId() {
7777
return project.getId();
7878
}
7979

80+
@NotNull
81+
@Override
82+
public String getDisplayName() {
83+
return getName();
84+
}
85+
8086
@NotNull
8187
@Override
8288
public Path getAbsolutePath() {

server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ public RMProject createProject(@NotNull String name, @Nullable String descriptio
302302

303303
@Override
304304
public RMProject updateProject(@NotNull String projectId, @NotNull RMProjectInfo projectInfo) throws DBException {
305+
validateProjectName(projectId, projectInfo.getName());
305306
try (var projectLock = lockController.lock(projectId, "updateProject")) {
306307
RMLocalProject project = getWebProject(projectId, false);
307308
Path targetPath = getProjectPath(projectId);
@@ -316,6 +317,16 @@ public RMProject updateProject(@NotNull String projectId, @NotNull RMProjectInfo
316317
}
317318
}
318319

320+
private void validateProjectName(@NotNull String projectId, @Nullable String name) throws DBException {
321+
boolean duplicatedName = Arrays.stream(listAllSharedProjects())
322+
.filter(p -> !p.getId().equals(projectId))
323+
.map(RMProject::getName)
324+
.noneMatch(n -> n.equalsIgnoreCase(name));
325+
if (!duplicatedName) {
326+
throw new DBException("Project name '" + name + "' is already used");
327+
}
328+
}
329+
319330
@Override
320331
public void deleteProject(@NotNull String projectId) throws DBException {
321332
try (var projectLock = lockController.lock(projectId, "deleteProject")) {

server/bundles/io.cloudbeaver.service.rm/src/io/cloudbeaver/service/rm/impl/WebServiceRM.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ public RMProject updateProject(
288288
);
289289
return project.getRMProject();
290290
} catch (DBException e) {
291-
throw new DBWebException("Error creating project", e);
291+
throw new DBWebException("Error updating project", e);
292292
}
293293
}
294294

0 commit comments

Comments
 (0)