• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

devonfw / IDEasy / 25493800041

07 May 2026 11:45AM UTC coverage: 70.635% (-0.1%) from 70.741%
25493800041

Pull #1896

github

web-flow
Merge e08127e4d into fd215c395
Pull Request #1896: #1870: Add generic get-version implementation for global tools under windows

4413 of 6904 branches covered (63.92%)

Branch coverage included in aggregate %.

11374 of 15446 relevant lines covered (73.64%)

3.12 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

4.76
cli/src/main/java/com/devonfw/tools/ide/tool/pgadmin/PgAdmin.java
1
package com.devonfw.tools.ide.tool.pgadmin;
2

3
import java.nio.file.Files;
4
import java.nio.file.Path;
5
import java.nio.file.Paths;
6
import java.util.ArrayList;
7
import java.util.Arrays;
8
import java.util.List;
9
import java.util.Set;
10

11
import com.devonfw.tools.ide.common.Tag;
12
import com.devonfw.tools.ide.context.IdeContext;
13
import com.devonfw.tools.ide.os.WindowsHelper;
14
import com.devonfw.tools.ide.tool.GlobalToolCommandlet;
15
import com.devonfw.tools.ide.tool.NativePackageManager;
16
import com.devonfw.tools.ide.tool.PackageManagerCommand;
17
import com.devonfw.tools.ide.tool.repository.ToolRepository;
18
import com.devonfw.tools.ide.version.VersionIdentifier;
19

20
/**
21
 * {@link GlobalToolCommandlet} for <a href="https://www.pgadmin.org/">pgadmin</a>
22
 */
23
public class PgAdmin extends GlobalToolCommandlet {
24

25
  /**
26
   * The constructor.
27
   *
28
   * @param context the {@link IdeContext}.
29
   */
30
  public PgAdmin(IdeContext context) {
31

32
    super(context, "pgadmin", Set.of(Tag.DB, Tag.ADMIN));
7✔
33
  }
1✔
34

35
  @Override
36
  protected List<PackageManagerCommand> getInstallPackageManagerCommands() {
37

38
    String edition = getConfiguredEdition();
×
39
    ToolRepository toolRepository = getToolRepository();
×
40
    VersionIdentifier configuredVersion = getConfiguredVersion();
×
41
    String resolvedVersion = toolRepository.resolveVersion(this.tool, edition, configuredVersion, this).toString();
×
42

43
    PackageManagerCommand packageManagerCommand = new PackageManagerCommand(NativePackageManager.APT, List.of(
×
44
        "curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | "
45
            + "sudo gpg --yes --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg",
46
        "sudo sh -c 'echo \"deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] "
47
            + "https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main\" "
48
            + "> /etc/apt/sources.list.d/pgadmin4.list && apt update'", String.format(
×
49
            "sudo apt install -y --allow-downgrades pgadmin4=%1$s pgadmin4-server=%1$s pgadmin4-desktop=%1$s pgadmin4-web=%1$s",
50
            resolvedVersion)));
51
    return List.of(packageManagerCommand);
×
52
  }
53

54
  @Override
55
  public void uninstall() {
56

57
    if (this.context.getSystemInfo().isLinux()) {
×
58
      runWithPackageManager(false, getPackageManagerCommandsUninstall());
×
59
    } else {
60
      super.uninstall();
×
61
    }
62
  }
×
63

64
  private List<PackageManagerCommand> getPackageManagerCommandsUninstall() {
65

66
    List<PackageManagerCommand> pmCommands = new ArrayList<>();
×
67

68
    pmCommands.add(new PackageManagerCommand(NativePackageManager.APT,
×
69
        Arrays.asList("sudo apt -y autoremove pgadmin4 pgadmin4-server pgadmin4-desktop pgadmin4-web")));
×
70

71
    return pmCommands;
×
72
  }
73

74
  @Override
75
  protected String getBinaryName() {
76

77
    return "pgadmin4";
×
78
  }
79

80
  @Override
81
  protected Path getInstallationPath(String edition, VersionIdentifier resolvedVersion) {
82
    if (super.getInstallationPath(edition, resolvedVersion) == null) {
×
83
      if (this.context.getSystemInfo().isWindows()) {
×
84
        return getExecutableFolderFromWindowsRegistry();
×
85
      }
86
    }
87
    return null;
×
88
  }
89

90
  private Path getExecutableFolderFromWindowsRegistry() {
91

92
    WindowsHelper windowsHelper = WindowsHelper.get(this.context);
×
93
    String registryPath = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\pgAdmin 4v9_is1";
×
94
    String displayIcon = windowsHelper.getRegistryValue(registryPath, "DisplayIcon");
×
95
    if (displayIcon != null) {
×
96
      Path executablePath = Paths.get(displayIcon);
×
97
      if (Files.isExecutable(executablePath)) {
×
98
        Path installationDir = executablePath.getParent();
×
99
        this.context.getPath().setPath(getName(), installationDir);
×
100
        return installationDir;
×
101
      }
102
    }
103
    return null;
×
104
  }
105
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc