Skip to content

Commit 1279473

Browse files
committed
dbeaver/pro#5848 use project settings for renaming
1 parent 8fd98f5 commit 1279473

File tree

3 files changed

+42
-15
lines changed

3 files changed

+42
-15
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
package io.cloudbeaver;
1818

1919
import org.jkiss.code.NotNull;
20+
import org.jkiss.code.Nullable;
21+
import org.jkiss.dbeaver.DBException;
2022
import org.jkiss.dbeaver.model.app.DBPWorkspace;
2123
import org.jkiss.dbeaver.model.auth.SMSessionContext;
2224
import org.jkiss.dbeaver.model.impl.app.BaseProjectImpl;
@@ -150,4 +152,16 @@ public Path getMetadataFilePath() {
150152
public boolean isPrivateProject() {
151153
return RMProjectType.USER.equals(getRMProject().getType());
152154
}
155+
156+
@Override
157+
public void updateProject(@Nullable String newName, @Nullable String description) throws DBException {
158+
super.updateProject(newName, description);
159+
if (CommonUtils.isNotEmpty(newName)) {
160+
getRMProject().setName(newName);
161+
}
162+
if (CommonUtils.isNotEmpty(description)) {
163+
getRMProject().setDescription(description);
164+
}
165+
166+
}
153167
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,25 @@ public InternalWebProjectImpl(
316316
);
317317
}
318318

319+
@NotNull
320+
@Override
321+
public String getName() {
322+
Object projectName = this.getProjectProperty(BaseWebProjectImpl.PROP_PROJECT_NAME);
323+
if (projectName != null) {
324+
return projectName.toString();
325+
}
326+
return super.getName();
327+
}
328+
329+
@Nullable
330+
public String getDescription() {
331+
Object projectDescription = this.getProjectProperty(BaseWebProjectImpl.PROP_PROJECT_DESCRIPTION);
332+
if (projectDescription != null) {
333+
return projectDescription.toString();
334+
}
335+
return null;
336+
}
337+
319338
@NotNull
320339
@Override
321340
protected DBPDataSourceRegistry createDataSourceRegistry() {

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

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -306,23 +306,16 @@ public RMProject createProject(@NotNull String name, @Nullable String descriptio
306306
@Override
307307
public RMProject updateProject(@NotNull String projectId, @NotNull RMProjectInfo projectInfo) throws DBException {
308308
try (var projectLock = lockController.lock(projectId, "updateProject")) {
309-
RMProject project = getProject(projectId, false, false);
309+
BaseWebProjectImpl project = getWebProject(projectId, false);
310310
Path targetPath = getProjectPath(projectId);
311311
if (!Files.exists(targetPath)) {
312312
throw new DBException("Project folder '" + projectId + "' not found");
313313
}
314-
if (CommonUtils.isEmpty(projectInfo.getName())) {
315-
throw new DBException("Project name required");
316-
}
317-
try {
318-
String config = GSON.toJson(projectInfo);
319-
Files.writeString(targetPath.resolve(PROJECT_INFO_CONF), config);
320-
project.setName(projectInfo.getName());
321-
project.setDescription(projectInfo.getDescription());
322-
return project;
323-
} catch (IOException e) {
324-
throw new DBException("Error writing project info", e);
314+
if (!project.getRMProject().isShared()) {
315+
throw new DBException("Project '" + projectId + "' is not shared");
325316
}
317+
project.updateProject(projectInfo.getName(), projectInfo.getDescription());
318+
return project.getRMProject();
326319
}
327320
}
328321

@@ -766,12 +759,13 @@ private RMProject makeProjectFromPath(Path path, Set<RMProjectPermission> permis
766759
.toArray(String[]::new);
767760

768761
RMProject project = new RMProject();
769-
RMProjectInfo projectMetadata = readProjectInfo(path);
770-
project.setName(projectMetadata.getName());
771-
project.setDescription(projectMetadata.getDescription());
762+
project.setName(path.getFileName().toString());
772763
project.setId(makeProjectIdFromPath(path, type));
773764
project.setType(type);
774765
project.setProjectPermissions(allProjectPermissions);
766+
InternalWebProjectImpl webProject = new InternalWebProjectImpl(new SessionContextImpl(null), project, path);
767+
project.setName(webProject.getName());
768+
project.setDescription(webProject.getDescription());
775769
if (Files.exists(path)) {
776770
try {
777771
project.setCreateTime(

0 commit comments

Comments
 (0)