From 6d5cd38589e60d23896799844046ce5f8010dd06 Mon Sep 17 00:00:00 2001 From: Ankush Chudiwal <154556772+Ankush1oo8@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:46:35 +0000 Subject: [PATCH 1/3] feat(projects): Improve project relationship iteration with VersionComparator --- .../sw360/common/utils/VersionComparator.java | 25 +++++++++++++++++++ .../db/ProjectDatabaseHandler.java | 8 +++--- 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java diff --git a/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java b/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java new file mode 100644 index 0000000000..0b32f65de6 --- /dev/null +++ b/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java @@ -0,0 +1,25 @@ +package org.eclipse.sw360.common.utils; + +import java.util.Comparator; + +public class VersionComparator implements Comparator { + @Override + public int compare(String v1, String v2) { + if (v1 == null || v2 == null) { + return (v1 == null) ? ((v2 == null) ? 0 : -1) : 1; + } + String[] parts1 = v1.split("\\."); + String[] parts2 = v2.split("\\."); + + int length = Math.max(parts1.length, parts2.length); + for (int i = 0; i < length; i++) { + int num1 = (i < parts1.length) ? Integer.parseInt(parts1[i]) : 0; + int num2 = (i < parts2.length) ? Integer.parseInt(parts2[i]) : 0; + + if (num1 != num2) { + return Integer.compare(num1, num2); + } + } + return 0; + } +} diff --git a/backend/common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java b/backend/common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java index cbd314956a..f575826d58 100644 --- a/backend/common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java +++ b/backend/common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java @@ -90,7 +90,7 @@ import static org.eclipse.sw360.datahandler.permissions.PermissionUtils.makePermission; import org.eclipse.sw360.exporter.ProjectExporter; import java.nio.ByteBuffer; - +import org.eclipse.sw360.common.utils.VersionComparator; /** * Class for accessing the CouchDB database * @@ -991,7 +991,7 @@ private List iterateProjectRelationShips(Map iterateProjectRelationShips(Map iterateProjectRelationShipsWithAllReleases(Map Date: Tue, 11 Mar 2025 13:57:45 +0530 Subject: [PATCH 2/3] chore(common): Add license header to VersionComparator.java --- .../sw360/common/utils/VersionComparator.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java b/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java index 0b32f65de6..af67134492 100644 --- a/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java +++ b/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java @@ -1,3 +1,15 @@ +/* + * Copyright COPYRIGHT HOLDER, 2017. + * Copyright NEXT COPYRIGHT HOLDER, 2017. + * Part of the SW360 Portal Project. + * + * SPDX-License-Identifier: EPL-2.0 + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v20.html + */ package org.eclipse.sw360.common.utils; import java.util.Comparator; From 0c4091790dec376d49ddebc72f9c58dfe48df441 Mon Sep 17 00:00:00 2001 From: Ankush Chudiwal <154556772+Ankush1oo8@users.noreply.github.com> Date: Tue, 11 Mar 2025 12:02:49 +0000 Subject: [PATCH 3/3] chore(common): Add license header to VersionComparator.java --- .../org/eclipse/sw360/common/utils/VersionComparator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java b/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java index af67134492..54178c1f98 100644 --- a/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java +++ b/backend/common/src/main/java/org/eclipse/sw360/common/utils/VersionComparator.java @@ -1,6 +1,6 @@ /* - * Copyright COPYRIGHT HOLDER, 2017. - * Copyright NEXT COPYRIGHT HOLDER, 2017. + * Copyright Ankush1oo8, 2025. + * Copyright NEXT Ankush1oo8, 2025. * Part of the SW360 Portal Project. * * SPDX-License-Identifier: EPL-2.0