Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
5df422d
dbeaver/pro#5848 api for renaming projects
yagudin10 Jul 23, 2025
84167a3
dbeaver/pro#5848 ci: update stylus dependency to version 0.0.1-security
SychevAndrey Jul 23, 2025
cc7f57a
dbeaver/pro#5848 feat: add gql mutation and method for project info u…
SychevAndrey Jul 23, 2025
8fd98f5
Merge branch 'devel' into 5848-rename-projects
SychevAndrey Jul 23, 2025
1279473
dbeaver/pro#5848 use project settings for renaming
yagudin10 Jul 25, 2025
f47f917
dbeaver/pro#5848 add events for project renaming
yagudin10 Jul 28, 2025
cfbf9e8
dbeaver/pro#5848 use display name
yagudin10 Jul 29, 2025
3b6e487
Merge remote-tracking branch 'origin/devel' into 5848-rename-projects
yagudin10 Sep 4, 2025
b56bc6e
dbeaver/pro#5848 add rename to desktop te
yagudin10 Sep 9, 2025
c6ae780
Merge branch 'devel' into 5848-rename-projects
kseniaguzeeva Sep 16, 2025
ececd73
Merge remote-tracking branch 'origin/devel' into 5848-rename-projects
yagudin10 Sep 18, 2025
ced131a
dbeaver/pro#5848 fix validating project name
yagudin10 Sep 18, 2025
d422352
Merge branch 'devel' into 5848-rename-projects
kseniaguzeeva Sep 19, 2025
e989d4f
dbeaver/pro#5848 validate project name on creation
yagudin10 Sep 19, 2025
c0d0680
Merge branch 'devel' into 5848-rename-projects
kseniaguzeeva Sep 19, 2025
4e01796
Merge branch 'devel' into 5848-rename-projects
kseniaguzeeva Sep 22, 2025
9074aff
dbeaver/pro#5848 fix adding description and add event to graphql
yagudin10 Sep 23, 2025
d664fbb
dbeaver/pro#5848 fix events for non-admin users
yagudin10 Sep 23, 2025
08d588e
dbeaver/pro#5848 feat: mark project as outdated on update
SychevAndrey Sep 23, 2025
c1300e9
Merge branch 'devel' into 5848-rename-projects
SychevAndrey Sep 23, 2025
90e5971
Merge remote-tracking branch 'origin/devel' into 5848-rename-projects
yagudin10 Sep 24, 2025
1ded054
dbeaver/pro#5848 handle rm project update in nav tree
yagudin10 Sep 24, 2025
bf983b2
Merge branch 'devel' into 5848-rename-projects
kseniaguzeeva Sep 25, 2025
d2b7f58
Merge branch 'devel' into 5848-rename-projects
mr-anton-t Sep 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,14 @@
package io.cloudbeaver;

import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.app.DBPWorkspace;
import org.jkiss.dbeaver.model.auth.SMSessionContext;
import org.jkiss.dbeaver.model.impl.app.BaseProjectImpl;
import org.jkiss.dbeaver.model.rm.RMController;
import org.jkiss.dbeaver.model.rm.RMControllerProvider;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.rm.RMProjectType;
import org.jkiss.utils.CommonUtils;
import org.jkiss.utils.Pair;
import org.jkiss.dbeaver.model.rm.*;

import java.nio.file.Path;
import java.util.Collection;

public abstract class BaseWebProjectImpl extends BaseProjectImpl implements RMControllerProvider {

Expand Down Expand Up @@ -81,6 +77,12 @@ public String getId() {
return project.getId();
}

@NotNull
@Override
public String getDisplayName() {
return getName();
}

@NotNull
@Override
public Path getAbsolutePath() {
Expand All @@ -102,52 +104,25 @@ public boolean isUseSecretStorage() {
return false;
}

/**
* Method for Bulk Update of resources properties paths
*
* @param oldToNewPaths collection of OldPath to NewPath pairs
*/
public void moveResourcePropertiesBatch(@NotNull Collection<Pair<String, String>> oldToNewPaths) {
loadMetadata();
synchronized (metadataSync) {
for (var pathsPair : oldToNewPaths) {
final var oldResourcePath = CommonUtils.normalizeResourcePath(pathsPair.getFirst());
final var newResourcePath = CommonUtils.normalizeResourcePath(pathsPair.getSecond());
final var resProps = resourceProperties.remove(oldResourcePath);
if (resProps != null) {
resourceProperties.put(newResourcePath, resProps);
}
}
}
flushMetadata();
}

/**
* Method for Bulk Remove of resources properties
*/
public boolean resetResourcesPropertiesBatch(@NotNull Collection<String> resourcesPaths) {
loadMetadata();
boolean propertiesChanged = false;
synchronized (metadataSync) {
for (var resourcePath : resourcesPaths) {
var removedProperties = resourceProperties.remove(CommonUtils.normalizeResourcePath(resourcePath));
if (removedProperties != null) {
propertiesChanged = true;
}
}
}
if (propertiesChanged) {
flushMetadata();
}
return propertiesChanged;
@Override
public boolean isPrivateProject() {
return RMProjectType.USER.equals(getRMProject().getType());
}

public Path getMetadataFilePath() {
return getMetadataPath().resolve(METADATA_STORAGE_FILE);
@Override
public void updateProject(@Nullable String newName, @Nullable String description) throws DBException {
RMProject rmProject = getResourceController().updateProject(this.getId(), new RMProjectInfo(newName, description));
updateProjectInfo(rmProject.getName(), rmProject.getDescription());
}

@Override
public boolean isPrivateProject() {
return RMProjectType.USER.equals(getRMProject().getType());
public void updateProjectInfo(@Nullable String newName, @Nullable String description) {
this.project.setName(newName);
this.project.setDescription(description);
RMEventManager.fireEvent(
new RMEvent(
RMEvent.Action.PROJECT_UPDATE,
project
)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

import io.cloudbeaver.model.session.WebSession;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPHiddenObject;
Expand Down Expand Up @@ -141,6 +140,9 @@ public void handleRMEvent(RMEvent event) {
case PROJECT_ADD:
addProjectNode(event.getProject());
break;
case PROJECT_UPDATE:
updateProjectNode(event.getProject());
break;
}
}

Expand Down Expand Up @@ -187,4 +189,14 @@ private void addResourceNode(RMProject project, String resourcePath) {
private void addProjectNode(RMProject project) {
projects = ArrayUtils.add(DBNResourceManagerProject.class, projects, new DBNResourceManagerProject(this, project));
}

private void updateProjectNode(@NotNull RMProject project) {
var projectNode = getProjectNode(project);
projectNode.ifPresent(
dbnResourceManagerProject -> {
dbnResourceManagerProject.getProject().setName(project.getName());
dbnResourceManagerProject.getProject().setDescription(project.getDescription());
}
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@
@NotNull String propName,
@NotNull Object propValue
) throws DBException {
BaseWebProjectImpl webProject = getWebProject(projectId, false);
RMLocalProject webProject = getWebProject(projectId, false);
doFileWriteOperation(projectId, webProject.getMetadataFilePath(),
() -> {
log.debug("Updating value for property '" + propName + "' in project '" + projectId + "'");
Expand Down Expand Up @@ -284,10 +284,10 @@
}
}

protected abstract BaseWebProjectImpl getWebProject(String projectId, boolean refresh) throws DBException;
protected abstract RMLocalProject getWebProject(String projectId, boolean refresh) throws DBException;

protected abstract <T> T doFileWriteOperation(String projectId, Path file, RMFileOperation<T> operation)
throws DBException;

Check warning on line 290 in server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/BaseLocalResourceController.java

View workflow job for this annotation

GitHub Actions / Server / Lint

[checkstyle] reported by reviewdog 🐶 'throws' has incorrect indentation level 8, expected level should be 12. Raw Output: /github/workspace/./server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/BaseLocalResourceController.java:290:9: warning: 'throws' has incorrect indentation level 8, expected level should be 12. (com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck)

protected abstract <T> T doFileReadOperation(String projectId, Path file, RMFileOperation<T> operation)
throws DBException;
Expand Down
Loading
Loading