stable workspace version
This commit is contained in:
@@ -7,9 +7,11 @@ import com.litoralregas.backend.charts.dto.ChartWorkspaceResponse;
|
|||||||
import jakarta.transaction.Transactional;
|
import jakarta.transaction.Transactional;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.support.TransactionSynchronizationManager;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ChartWorkspaceService {
|
public class ChartWorkspaceService {
|
||||||
@@ -45,12 +47,14 @@ public class ChartWorkspaceService {
|
|||||||
return toResponse(saved);
|
return toResponse(saved);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
public ChartWorkspaceResponse getWorkspace(
|
public ChartWorkspaceResponse getWorkspace(
|
||||||
ChartWorkspaceScope scope
|
ChartWorkspaceScope scope
|
||||||
) {
|
) {
|
||||||
return toResponse(getOrCreateDefaultWorkspace(scope));
|
return toResponse(getOrCreateDefaultWorkspace(scope));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
public List<ChartWorkspaceResponse> listWorkspaces(
|
public List<ChartWorkspaceResponse> listWorkspaces(
|
||||||
ChartWorkspaceScope scope
|
ChartWorkspaceScope scope
|
||||||
) {
|
) {
|
||||||
@@ -132,6 +136,10 @@ public class ChartWorkspaceService {
|
|||||||
repository.delete(workspace);
|
repository.delete(workspace);
|
||||||
|
|
||||||
if (Boolean.TRUE.equals(workspace.getDefaultWorkspace())) {
|
if (Boolean.TRUE.equals(workspace.getDefaultWorkspace())) {
|
||||||
|
if (TransactionSynchronizationManager.isActualTransactionActive()) {
|
||||||
|
repository.flush();
|
||||||
|
}
|
||||||
|
|
||||||
repository.findAllByScopeOrderBySortOrderAscIdAsc(workspace.getScope())
|
repository.findAllByScopeOrderBySortOrderAscIdAsc(workspace.getScope())
|
||||||
.stream()
|
.stream()
|
||||||
.findFirst()
|
.findFirst()
|
||||||
@@ -216,24 +224,39 @@ public class ChartWorkspaceService {
|
|||||||
workspace.setDefaultWorkspace(false);
|
workspace.setDefaultWorkspace(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
workspace.setLayoutMode(
|
if (request.layoutMode() != null) {
|
||||||
normalizeLayoutMode(request.layoutMode())
|
workspace.setLayoutMode(
|
||||||
);
|
normalizeLayoutMode(request.layoutMode())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
workspace.setChartsJson(
|
if (request.chartsJson() != null) {
|
||||||
normalizeChartsJson(request.chartsJson())
|
workspace.setChartsJson(
|
||||||
);
|
normalizeChartsJson(request.chartsJson())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultWorkspace(
|
private void setDefaultWorkspace(
|
||||||
ChartWorkspace workspace
|
ChartWorkspace workspace
|
||||||
) {
|
) {
|
||||||
repository.findAllByScopeOrderBySortOrderAscIdAsc(workspace.getScope())
|
List<ChartWorkspace> workspaces =
|
||||||
.forEach(candidate -> {
|
repository.findAllByScopeOrderBySortOrderAscIdAsc(workspace.getScope());
|
||||||
if (!candidate.getId().equals(workspace.getId())) {
|
|
||||||
candidate.setDefaultWorkspace(false);
|
boolean changedCurrentDefault = false;
|
||||||
}
|
|
||||||
});
|
for (ChartWorkspace candidate : workspaces) {
|
||||||
|
if (!Objects.equals(candidate.getId(), workspace.getId())) {
|
||||||
|
changedCurrentDefault =
|
||||||
|
changedCurrentDefault ||
|
||||||
|
Boolean.TRUE.equals(candidate.getDefaultWorkspace());
|
||||||
|
candidate.setDefaultWorkspace(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (changedCurrentDefault && TransactionSynchronizationManager.isActualTransactionActive()) {
|
||||||
|
repository.flush();
|
||||||
|
}
|
||||||
|
|
||||||
workspace.setDefaultWorkspace(true);
|
workspace.setDefaultWorkspace(true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user