();
+ for (int i = 0; i < tableContent.length; i++) {
+ accounts.add(new Account(tableContent[i][0], new Credential(tableContent[i][1], tableContent[i][2])));
+ }
+ return accounts;
+ }
+
+}
diff --git a/src/it/java/dev/justgiulio/passwordmanager/controller/AccountControllerIT.java b/src/it/java/dev/justgiulio/passwordmanager/controller/AccountControllerIT.java
index c3b14f6..5748d30 100644
--- a/src/it/java/dev/justgiulio/passwordmanager/controller/AccountControllerIT.java
+++ b/src/it/java/dev/justgiulio/passwordmanager/controller/AccountControllerIT.java
@@ -8,9 +8,11 @@
import org.junit.After;
import org.junit.Before;
+import org.junit.ClassRule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.testcontainers.containers.GenericContainer;
import dev.justgiulio.passwordmanager.generator.Generator;
import dev.justgiulio.passwordmanager.generator.SecureRandomGenerator;
@@ -25,17 +27,15 @@
*
* Communicates with a Redis server on localhost
*
- * Run Redis on docker with:
- *
- * docker run -p 6379:6379 --rm redis:3.0.2
- *
*
* @author Giulio Fagioli
*
*/
public class AccountControllerIT {
-
+ @SuppressWarnings("rawtypes")
+ @ClassRule
+ public static final GenericContainer redis = new GenericContainer("redis:3.0.2").withExposedPorts(6379);
public Jedis jedis;
public AccountRedisRepository accountRedisRepository;
@@ -48,7 +48,7 @@ public class AccountControllerIT {
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
- jedis = new Jedis("localhost", 6379);
+ jedis = new Jedis(redis.getContainerIpAddress(), redis.getFirstMappedPort());
accountRedisRepository = new AccountRedisRepository(jedis);
passwordGenerator = new SecureRandomGenerator();
accountController = new AccountController(accountView, accountRedisRepository, passwordGenerator);
diff --git a/src/main/java/dev/justgiulio/passwordmanager/app/swing/AccountSwingApp.java b/src/main/java/dev/justgiulio/passwordmanager/app/swing/AccountSwingApp.java
new file mode 100644
index 0000000..74badf0
--- /dev/null
+++ b/src/main/java/dev/justgiulio/passwordmanager/app/swing/AccountSwingApp.java
@@ -0,0 +1,58 @@
+package dev.justgiulio.passwordmanager.app.swing;
+import java.awt.EventQueue;
+import java.util.concurrent.Callable;
+
+import picocli.CommandLine;
+import picocli.CommandLine.Command;
+import picocli.CommandLine.Option;
+import redis.clients.jedis.Jedis;
+
+import org.slf4j.LoggerFactory;
+
+import dev.justgiulio.passwordmanager.controller.AccountController;
+import dev.justgiulio.passwordmanager.generator.Generator;
+import dev.justgiulio.passwordmanager.generator.SecureRandomGenerator;
+import dev.justgiulio.passwordmanager.repository.AccountRedisRepository;
+import dev.justgiulio.passwordmanager.view.swing.AccountSwingView;
+
+
+@Command(mixinStandardHelpOptions = true)
+public class AccountSwingApp implements Callable {
+
+ @Option(names = { "--redis-host" }, description = "Redis host address")
+ private String redisHost = "localhost";
+
+ @Option(names = { "--redis-port" }, description = "Redis host port")
+ private int redisPort = 6379;
+
+
+ private AccountRedisRepository accountRedisRepository;
+ private AccountController accountController;
+ private AccountSwingView accountSwingView;
+ private Generator passwordGenerator;
+ private Jedis redisClient;
+
+ public static void main(String[] args) {
+ CommandLine.call(new AccountSwingApp(), args);
+ }
+
+ @Override
+ public Void call() throws Exception {
+ EventQueue.invokeLater(() -> {
+ try {
+ redisClient = new Jedis(redisHost,redisPort);
+ accountRedisRepository = new AccountRedisRepository(redisClient);
+ accountSwingView = new AccountSwingView();
+ passwordGenerator = new SecureRandomGenerator();
+ accountController = new AccountController(accountSwingView, accountRedisRepository, passwordGenerator);
+ accountSwingView.setAccountController(accountController);
+ accountSwingView.setVisible(true);
+ } catch (Exception e) {
+ LoggerFactory.getLogger(getClass())
+ .error("An exception was thrown!", e);
+ }
+ });
+ return null;
+ }
+
+}
diff --git a/src/main/java/dev/justgiulio/passwordmanager/view/swing/AccountSwingView.java b/src/main/java/dev/justgiulio/passwordmanager/view/swing/AccountSwingView.java
index 8787a77..b5c602c 100644
--- a/src/main/java/dev/justgiulio/passwordmanager/view/swing/AccountSwingView.java
+++ b/src/main/java/dev/justgiulio/passwordmanager/view/swing/AccountSwingView.java
@@ -37,6 +37,7 @@ public AccountSwingView() {
private void initComponents() {
this.setVisible(true);
+ this.setTitle("Password Manager");
modelDisplayedAccounts = new DisplayedAccountsTableModel();
tableDisplayedAccounts = new javax.swing.JTable(modelDisplayedAccounts);
tableDisplayedAccounts.setName("tableDisplayedAccounts");