Skip to content
This repository was archived by the owner on Jan 9, 2024. It is now read-only.

Commit c22ffab

Browse files
authored
feat: support alias & add vm option (#106)
* feat: support add server alias (#103) * feat: change config name to prettyZoo.cfg (#104) * feat: add file.encoding vm option (#105)
1 parent 4f8bdf9 commit c22ffab

File tree

14 files changed

+78
-14
lines changed

14 files changed

+78
-14
lines changed

app/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jlink {
2020
forceMerge("jackson", "log4j-api")
2121
launcher {
2222
name = 'prettyZoo'
23-
jvmArgs = ['-Djdk.gtk.version=2']
23+
jvmArgs = ['-Djdk.gtk.version=2', '-Dfile.encoding=utf-8']
2424
}
2525
jpackage {
2626
def os = org.gradle.internal.os.OperatingSystem.current()

app/src/main/java/cc/cc1234/app/controller/ServerViewController.java

+6
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ public class ServerViewController {
5353
@FXML
5454
private TextField zkServer;
5555

56+
@FXML
57+
private TextField zkAlias;
58+
5659
@FXML
5760
private TextField sshServer;
5861

@@ -150,6 +153,7 @@ private void showConnectAndSaveButton() {
150153
private void propertyReset() {
151154
zkServer.textProperty().unbind();
152155
zkServer.textProperty().setValue("");
156+
zkAlias.textProperty().setValue("");
153157
sshServer.textProperty().setValue("");
154158
sshUsername.textProperty().setValue("");
155159
sshPassword.textProperty().setValue("");
@@ -159,6 +163,7 @@ private void propertyReset() {
159163

160164
private void propertyBind(ServerConfigurationVO config) {
161165
zkServer.textProperty().setValue(config.getZkServer());
166+
zkAlias.textProperty().setValue(config.getZkAlias());
162167
sshServer.textProperty().setValue(config.getSshServer());
163168
sshUsername.textProperty().setValue(config.getSshUsername());
164169
sshPassword.textProperty().setValue(config.getSshPassword());
@@ -234,6 +239,7 @@ private void onSave() {
234239
serverConfigVO.setSshUsername(sshUsername.textProperty().get());
235240
serverConfigVO.setSshPassword(sshPassword.textProperty().get());
236241
serverConfigVO.setSshServer(sshServer.textProperty().get());
242+
serverConfigVO.setZkAlias(zkAlias.textProperty().get());
237243
if (sshTunnelCheckbox.isSelected()) {
238244
serverConfigVO.setSshEnabled(true);
239245
}

app/src/main/java/cc/cc1234/app/facade/PrettyZooFacade.java

+1
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ public void saveServerConfiguration(ServerConfigurationVO serverConfigurationVO)
139139
.sshPassword(serverConfigurationVO.getSshPassword());
140140

141141
final ServerConfiguration serverConfiguration = ServerConfiguration.builder()
142+
.alias(serverConfigurationVO.getZkAlias())
142143
.host(serverConfigurationVO.getZkServer())
143144
.aclList(new ArrayList<>(serverConfigurationVO.getAclList()))
144145
.sshTunnelEnabled(serverConfigurationVO.isSshEnabled())

app/src/main/java/cc/cc1234/app/listener/DefaultConfigurationListener.java

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public void onServerChange(ServerConfigData newValue) {
4848
.findFirst()
4949
.map(old -> {
5050
old.setAclList(FXCollections.observableList(newValue.getAclList()));
51+
old.setZkAlias(newValue.getAlias());
5152
newValue.getSshTunnelConfig()
5253
.map(sshTunnelConfig -> {
5354
old.setSshEnabled(newValue.getSshTunnelEnabled());

app/src/main/java/cc/cc1234/app/view/cell/ZkServerListCell.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,16 @@ protected void updateItem(ServerConfigurationVO item, boolean empty) {
2323
}
2424

2525
private StringBinding connectBinding(ServerConfigurationVO item) {
26-
return Bindings.createStringBinding(() -> connectSymbol(item), item.zkServerProperty(), item.connectedProperty());
26+
return Bindings.createStringBinding(() -> connectSymbol(item), item.zkServerProperty(), item.zkAliasProperty(), item.connectedProperty());
2727
}
2828

2929
private String connectSymbol(ServerConfigurationVO item) {
3030
String server = item.getZkServer();
31-
return item.isConnected() ? "√ " + server : "× " + server;
31+
String alias = item.getZkAlias();
32+
if (alias != null && !alias.isBlank()) {
33+
return item.isConnected() ? "√ " + alias : "× " + alias;
34+
} else {
35+
return item.isConnected() ? "√ " + server : "× " + server;
36+
}
3237
}
3338
}

app/src/main/java/cc/cc1234/app/vo/ConfigurationVOTransfer.java

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public static ServerConfigurationVO to(ServerConfigData serverConfig) {
6161
vo.setZkServer(serverConfig.getHost());
6262
vo.getAclList().addAll(serverConfig.getAclList());
6363
vo.setConnected(false);
64+
vo.setZkAlias(serverConfig.getAlias());
6465
serverConfig.getSshTunnelConfig().ifPresent(sshTunnelConfig -> {
6566
if (sshTunnelConfig.getRemoteHost() == null || sshTunnelConfig.getRemotePort() == null) {
6667
vo.setRemoteServer("");

app/src/main/java/cc/cc1234/app/vo/ServerConfigurationVO.java

+15
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public class ServerConfigurationVO {
1111

1212
private SimpleStringProperty zkServer = new SimpleStringProperty("");
1313

14+
private SimpleStringProperty zkAlias= new SimpleStringProperty("");
15+
1416
private ObjectProperty<ObservableList<String>> aclList = new SimpleObjectProperty<>(FXCollections.observableArrayList());
1517

1618
private SimpleBooleanProperty connected = new SimpleBooleanProperty(false);
@@ -27,6 +29,7 @@ public class ServerConfigurationVO {
2729

2830
public void unbind() {
2931
zkServer.unbind();
32+
zkAlias.unbind();
3033
aclList.unbind();
3134
connected.unbind();
3235
sshEnabled.unbind();
@@ -132,4 +135,16 @@ public void setRemoteServer(String remoteServer) {
132135
public SimpleStringProperty remoteServerProperty() {
133136
return remoteServer;
134137
}
138+
139+
public String getZkAlias() {
140+
return zkAlias.get();
141+
}
142+
143+
public SimpleStringProperty zkAliasProperty() {
144+
return zkAlias;
145+
}
146+
147+
public void setZkAlias(String zkAlias) {
148+
this.zkAlias.set(zkAlias);
149+
}
135150
}

app/src/main/resources/fxml/ServerView.fxml

+6-5
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
<AnchorPane fx:id="serverInfoPane" prefHeight="450.0" prefWidth="650.0" style="-fx-background-color: #fff;" stylesheets="@../assets/style.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cc.cc1234.app.controller.ServerViewController">
1717
<children>
1818
<TextField fx:id="zkServer" layoutX="30.0" layoutY="25.0" prefHeight="25.0" prefWidth="240.0" promptText="127.0.0.1:2181" styleClass="v-line-textField" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="25.0" />
19-
<CheckBox fx:id="sshTunnelCheckbox" layoutX="30.0" layoutY="70.0" mnemonicParsing="false" prefHeight="25.0" styleClass="v-checkbox" text="Use SSH Tunne" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="70.0" />
20-
<AnchorPane fx:id="sshTunnelPane" layoutX="30.0" layoutY="175.0" prefHeight="246.0" prefWidth="590.0" style="-fx-border-color: #ddd; -fx-border-style: dashed; -fx-border-width: 2; -fx-background-color: transparent;" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="30.0" AnchorPane.rightAnchor="30.0" AnchorPane.topAnchor="120.0">
19+
<CheckBox fx:id="sshTunnelCheckbox" layoutX="30.0" layoutY="70.0" mnemonicParsing="false" prefHeight="25.0" styleClass="v-checkbox" text="Use SSH Tunne" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="110.0" />
20+
<AnchorPane fx:id="sshTunnelPane" layoutX="30.0" layoutY="150.0" prefHeight="250.0" prefWidth="614.0" style="-fx-border-color: #ddd; -fx-border-style: dashed; -fx-border-width: 2; -fx-background-color: transparent;" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="30.0" AnchorPane.rightAnchor="30.0" AnchorPane.topAnchor="150.0">
2121
<children>
2222
<GridPane hgap="20.0" layoutX="2.0" layoutY="8.0" vgap="10.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
2323
<columnConstraints>
@@ -26,7 +26,7 @@
2626
<ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="240.0" prefWidth="240.0" />
2727
</columnConstraints>
2828
<rowConstraints>
29-
<RowConstraints minHeight="60.0" prefHeight="80.0" valignment="CENTER" vgrow="SOMETIMES" />
29+
<RowConstraints minHeight="40.0" prefHeight="50.0" valignment="CENTER" vgrow="SOMETIMES" />
3030
<RowConstraints minHeight="0.0" prefHeight="150.0" valignment="CENTER" vgrow="SOMETIMES" />
3131
</rowConstraints>
3232
<children>
@@ -45,7 +45,7 @@
4545
<Text layoutX="70.0" layoutY="55.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Remote Server" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="20.0" />
4646
</children>
4747
</AnchorPane>
48-
<ProgressBar fx:id="sshTunnelProgressBarFrom" prefHeight="18.0" prefWidth="81.0" progress="0.0" rotate="90.0" />
48+
<ProgressBar fx:id="sshTunnelProgressBarFrom" prefHeight="18.0" prefWidth="43.0" progress="0.0" rotate="90.0" />
4949
</children>
5050
<padding>
5151
<Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
@@ -54,13 +54,14 @@
5454
</children>
5555
</AnchorPane>
5656
<Button fx:id="closeButton" layoutX="620.0" layoutY="14.0" mnemonicParsing="false" styleClass="v-button" text="X" AnchorPane.rightAnchor="30.0" AnchorPane.topAnchor="10.0" />
57-
<TextArea fx:id="aclTextArea" layoutX="353.0" layoutY="51.0" prefHeight="60.0" prefWidth="240.0" styleClass="vTextArea" AnchorPane.rightAnchor="81.0" AnchorPane.topAnchor="20.0" />
57+
<TextArea fx:id="aclTextArea" layoutX="353.0" layoutY="51.0" prefHeight="90.0" prefWidth="240.0" styleClass="vTextArea" AnchorPane.rightAnchor="81.0" AnchorPane.topAnchor="20.0" />
5858
<HBox fx:id="buttonHBox" alignment="CENTER" layoutX="444.0" layoutY="432.0" prefHeight="25.0" spacing="10.0" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="30.0">
5959
<children>
6060
<Button fx:id="saveButton" mnemonicParsing="false" styleClass="v-button" text="save" />
6161
<Button fx:id="connectButton" mnemonicParsing="false" styleClass="v-button" text="connect" />
6262
<Button fx:id="deleteButton" mnemonicParsing="false" styleClass="v-button" text="delete" />
6363
</children>
6464
</HBox>
65+
<TextField fx:id="zkAlias" layoutX="30.0" layoutY="65.0" prefHeight="25.0" prefWidth="240.0" promptText="Alias name (Option)" styleClass="v-line-textField" />
6566
</children>
6667
</AnchorPane>

domain/src/main/java/cc/cc1234/domain/configuration/entity/Configuration.java

+5
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ private void serverConfigurationPrecondition(ServerConfiguration serverConfig) {
8787
if (serverConfig.getSshTunnelEnabled() && serverConfig.getSshTunnel() == null) {
8888
throw new IllegalStateException("add SSHTunnel before save");
8989
}
90+
final String alias = serverConfig.getAlias();
91+
if (alias != null && !alias.isEmpty() && alias.isBlank()) {
92+
throw new IllegalStateException("Alias must not be all blank");
93+
}
9094
}
9195

9296
/**
@@ -122,6 +126,7 @@ private ServerConfigData toServerConfig(ServerConfiguration serverConfiguration)
122126
serverData.setHost(serverConfiguration.getHost());
123127
serverData.setSshTunnelEnabled(serverConfiguration.getSshTunnelEnabled());
124128
serverData.setSshTunnelConfig(Optional.ofNullable(sshTunnelData));
129+
serverData.setAlias(serverConfiguration.getAlias());
125130
return serverData;
126131
}
127132
}

domain/src/main/java/cc/cc1234/domain/configuration/entity/ServerConfiguration.java

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class ServerConfiguration {
1313
// entity id
1414
private String host;
1515

16+
private String alias;
17+
1618
private List<String> aclList;
1719

1820
private int connectTimes;
@@ -29,6 +31,7 @@ public void update(ServerConfiguration serverConfiguration) {
2931
this.sshTunnelEnabled = serverConfiguration.getSshTunnelEnabled();
3032
this.sshTunnel = serverConfiguration.getSshTunnel();
3133
this.connectTimes = serverConfiguration.getConnectTimes();
34+
this.alias = serverConfiguration.getAlias();
3235
}
3336

3437
public void incrementConnectTimes() {

domain/src/main/java/cc/cc1234/domain/configuration/factory/ConfigurationFactory.java

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public Configuration create(List<ConfigurationChangeListener> listeners) {
3333
.build())
3434
.orElse(null);
3535
return ServerConfiguration.builder()
36+
.alias(serverConfig.getAlias())
3637
.host(serverConfig.getHost())
3738
.aclList(serverConfig.getAclList())
3839
.connectTimes(serverConfig.getConnectTimes())

infrastructure/src/main/java/cc/cc1234/config/JsonPrettyZooConfigRepository.java

+12
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public ConfigData get() {
2626
}
2727

2828
private ConfigData doLoad() {
29+
migrateIfNecessary();
2930
final ConfigData config = JsonUtils.from(CONFIG_PATH, ConfigData.class);
3031
final List<ServerConfigData> sortedServers = config.getServers()
3132
.stream()
@@ -37,6 +38,17 @@ private ConfigData doLoad() {
3738
return config;
3839
}
3940

41+
/**
42+
* compatibility function
43+
* since: v1.5.0
44+
*/
45+
private void migrateIfNecessary() {
46+
if (!Files.exists(Paths.get(CONFIG_PATH)) && Files.exists(Paths.get(OLD_CONFIG_PATH))) {
47+
var config = JsonUtils.from(OLD_CONFIG_PATH, ConfigData.class);
48+
save(config);
49+
}
50+
}
51+
4052
@Override
4153
public void save(ConfigData config) {
4254
try {

spi/src/main/java/cc/cc1234/spi/config/PrettyZooConfigRepository.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@
88

99
public interface PrettyZooConfigRepository {
1010

11-
String CONFIG_PATH = System.getProperty("user.home") + "/.prettyZoo/server-input.history";
11+
/**
12+
* will be remove in future
13+
*/
14+
@Deprecated
15+
String OLD_CONFIG_PATH = System.getProperty("user.home") + "/.prettyZoo/server-input.history";
16+
17+
String CONFIG_PATH = System.getProperty("user.home") + "/.prettyZoo/prettyZoo.cfg";
1218

1319
ConfigData get();
1420

spi/src/main/java/cc/cc1234/spi/config/model/ServerConfigData.java

+12-5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public class ServerConfigData {
99

1010
private String host;
1111

12+
private String alias;
13+
1214
private int connectTimes = 0;
1315

1416
private List<String> aclList = new ArrayList<>();
@@ -57,19 +59,24 @@ public void setSshTunnelConfig(Optional<SSHTunnelConfigData> sshTunnelConfig) {
5759
this.sshTunnelConfig = sshTunnelConfig;
5860
}
5961

62+
public String getAlias() {
63+
return alias;
64+
}
65+
66+
public void setAlias(String alias) {
67+
this.alias = alias;
68+
}
69+
6070
@Override
6171
public boolean equals(Object o) {
6272
if (this == o) return true;
6373
if (o == null || getClass() != o.getClass()) return false;
6474
ServerConfigData that = (ServerConfigData) o;
65-
return connectTimes == that.connectTimes &&
66-
host.equals(that.host) &&
67-
aclList.equals(that.aclList) &&
68-
sshTunnelConfig.equals(that.sshTunnelConfig);
75+
return connectTimes == that.connectTimes && Objects.equals(host, that.host) && Objects.equals(alias, that.alias) && Objects.equals(aclList, that.aclList) && Objects.equals(sshTunnelEnabled, that.sshTunnelEnabled) && Objects.equals(sshTunnelConfig, that.sshTunnelConfig);
6976
}
7077

7178
@Override
7279
public int hashCode() {
73-
return Objects.hash(host, connectTimes, aclList, sshTunnelConfig);
80+
return Objects.hash(host, alias, connectTimes, aclList, sshTunnelEnabled, sshTunnelConfig);
7481
}
7582
}

0 commit comments

Comments
 (0)