From 9644f3bd141ae77c52f14d2304ad89ef0390cc46 Mon Sep 17 00:00:00 2001 From: Yuu NAKAJIMA Date: Fri, 1 Apr 2022 15:43:04 +0900 Subject: [PATCH 01/14] Modify H2Table --- .../nkjmlab/go/javalin/model/relation/GameRecordsTable.java | 4 ++-- .../nkjmlab/go/javalin/model/relation/GameStatesTable.java | 2 +- .../org/nkjmlab/go/javalin/model/relation/LoginsTable.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java index 6608aba..86f0c5c 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java @@ -7,10 +7,10 @@ import org.nkjmlab.go.javalin.model.row.User; import org.nkjmlab.sorm4j.Sorm; import org.nkjmlab.sorm4j.result.RowMap; -import org.nkjmlab.sorm4j.util.h2.BasicH2TableWithDefinition; +import org.nkjmlab.sorm4j.util.h2.BasicH2Table; import org.nkjmlab.sorm4j.util.table_def.TableDefinition; -public class GameRecordsTable extends BasicH2TableWithDefinition { +public class GameRecordsTable extends BasicH2Table { public static final String TABLE_NAME = "GAME_RECORDS"; private static final String ID = "id"; diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameStatesTable.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameStatesTable.java index 27e4f35..d7777ee 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameStatesTable.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameStatesTable.java @@ -89,7 +89,7 @@ public void trimAndBackupToFile(File backUpDir, int limit) { String selectSql = selectStarFrom(TABLE_NAME) + where(cond(ROWNUM, "<=", deleteRowNum)) + orderBy(ID); - String st = getCallCsvWriteSql(outputFile, selectSql, StandardCharsets.UTF_8, ","); + String st = getCallCsvWriteSql(outputFile, selectSql, StandardCharsets.UTF_8, ','); log.info("{}", st); sorm.executeUpdate(st); diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java index 0073a1d..687e373 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java @@ -14,11 +14,11 @@ import org.nkjmlab.go.javalin.model.row.User; import org.nkjmlab.sorm4j.Sorm; import org.nkjmlab.sorm4j.context.SormContext; -import org.nkjmlab.sorm4j.util.h2.BasicH2TableWithDefinition; +import org.nkjmlab.sorm4j.util.h2.BasicH2Table; import org.nkjmlab.sorm4j.util.logger.LoggerContext; import org.nkjmlab.sorm4j.util.table_def.TableDefinition; -public class LoginsTable extends BasicH2TableWithDefinition { +public class LoginsTable extends BasicH2Table { public static final String TABLE_NAME = "LOGINS"; From 2cdcca15ff5169524b56d40ab914a28b65b2f712 Mon Sep 17 00:00:00 2001 From: Yuu NAKAJIMA Date: Mon, 13 Jun 2022 17:36:48 +0900 Subject: [PATCH 02/14] =?UTF-8?q?LocalDateTime=20=E3=81=AB=E7=B5=B1?= =?UTF-8?q?=E4=B8=80=E3=81=97=E3=81=9F=EF=BC=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nkjmlab-go-webapp/pom.xml | 20 +++++++++++--- .../org/nkjmlab/go/javalin/GoApplication.java | 26 ++++++++++++------- .../go/javalin/fbauth/AuthService.java | 6 ++--- .../go/javalin/jsonrpc/GoJsonRpcService.java | 13 +++++----- .../go/javalin/model/json/GameStateJson.java | 12 ++++----- .../model/json/MatchingRequestJson.java | 8 +++--- .../go/javalin/model/json/ProblemJson.java | 5 ++-- .../model/relation/GameRecordsTable.java | 11 +++----- .../javalin/model/relation/LoginsTable.java | 16 +++++------- .../model/relation/PasswordsTable.java | 1 - .../go/javalin/model/row/GameRecord.java | 8 +++--- .../go/javalin/model/row/GameState.java | 14 +++++----- .../nkjmlab/go/javalin/model/row/HandUp.java | 10 +++---- .../nkjmlab/go/javalin/model/row/Login.java | 12 ++++----- .../go/javalin/model/row/MatchingRequest.java | 10 +++---- .../nkjmlab/go/javalin/model/row/Problem.java | 15 +++++------ .../nkjmlab/go/javalin/model/row/Vote.java | 8 +++--- .../templates/fragment/game-record-table.html | 2 +- .../templates/fragment/question-table.html | 2 +- .../fragment/waiting-request-table.html | 2 +- .../src/main/resources/templates/games.html | 2 +- .../src/main/resources/templates/index.html | 9 ++++--- .../src/main/resources/templates/players.html | 2 +- .../resources/webroot/js/check-environment.js | 25 +----------------- 24 files changed, 113 insertions(+), 126 deletions(-) diff --git a/nkjmlab-go-webapp/pom.xml b/nkjmlab-go-webapp/pom.xml index d485924..7803f17 100644 --- a/nkjmlab-go-webapp/pom.xml +++ b/nkjmlab-go-webapp/pom.xml @@ -58,7 +58,7 @@ io.javalin javalin - 4.3.0 + 4.5.0 @@ -71,7 +71,7 @@ com.h2database h2 - 2.1.210 + 2.1.212 @@ -87,6 +87,12 @@ thymeleaf 3.0.15.RELEASE + + + org.thymeleaf.extras + thymeleaf-extras-java8time + 3.0.4.RELEASE + @@ -111,7 +117,7 @@ com.fasterxml.jackson.core jackson-databind - 2.13.2 + 2.13.2.2 @@ -156,6 +162,14 @@ 17 + + org.apache.maven.plugins + maven-dependency-plugin + 3.3.0 + + compile + + \ No newline at end of file diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/GoApplication.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/GoApplication.java index eca9e62..27536c3 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/GoApplication.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/GoApplication.java @@ -53,6 +53,8 @@ import org.nkjmlab.util.jsonrpc.JsonRpcRequest; import org.nkjmlab.util.jsonrpc.JsonRpcResponse; import org.nkjmlab.util.thymeleaf.TemplateEngineBuilder; +import org.thymeleaf.TemplateEngine; +import org.thymeleaf.extras.java8time.dialect.Java8TimeDialect; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import io.javalin.Javalin; @@ -142,6 +144,7 @@ public GoApplication() { this.memDbDataSource = createH2DataSource(factory.getInMemoryModeJdbcUrl(), factory.getUsername(), factory.getPassword()); + log.info("server jdbcUrl={}", factory.getServerModeJdbcUrl()); this.fileDbDataSource = createHikariDataSource(factory.getServerModeJdbcUrl(), factory.getUsername(), factory.getPassword()); // H2Server.openBrowser(memDbDataSource, true); @@ -162,8 +165,10 @@ public static String getJdbcUrlOfInMemoryDb(String dbName) { private void prepareJavalin() { - JavalinThymeleaf.configure(new TemplateEngineBuilder().setPrefix("/templates/") - .setTtlMs(THYMELEAF_EXPIRE_TIME_MILLI_SECOND).build()); + TemplateEngine engine = new TemplateEngineBuilder().setPrefix("/templates/") + .setTtlMs(THYMELEAF_EXPIRE_TIME_MILLI_SECOND).build(); + engine.addDialect(new Java8TimeDialect()); + JavalinThymeleaf.configure(engine); this.app = Javalin.create(config -> { config.addStaticFiles(WEBROOT_DIR_NAME, Location.CLASSPATH); @@ -178,6 +183,8 @@ private void prepareTable(H2LocalDataSourceFactory dsFactory) { problemsTable.dropAndInsertInitialProblemsToTable(PROBLEM_DIR); this.loginsTable = new LoginsTable(fileDbDataSource); + loginsTable.createTableIfNotExists(); + loginsTable.createIndexesIfNotExists(); loginsTable.writeCsv(new File(BACKUP_DIR, "logins-" + System.currentTimeMillis() + ".csv")); @@ -199,7 +206,8 @@ private void prepareTable(H2LocalDataSourceFactory dsFactory) { this.passwordsTable = new PasswordsTable(fileDbDataSource); - + passwordsTable.dropTableIfExists(); + passwordsTable.createTableAndIndexesIfNotExists(); try { File f = ResourceUtils.getResourceAsFile("/conf/passwords.csv"); passwordsTable.readFromFileAndMerge(f); @@ -211,8 +219,14 @@ private void prepareTable(H2LocalDataSourceFactory dsFactory) { this.gameRecordsTable = new GameRecordsTable(fileDbDataSource); + gameRecordsTable.createTableIfNotExists(); + gameRecordsTable.createIndexesIfNotExists(); + gameRecordsTable + .writeCsv(new File(BACKUP_DIR, "game-record" + System.currentTimeMillis() + ".csv")); + gameRecordsTable.recalculateAndUpdateRank(usersTable); + this.matchingRequestsTable = new MatchingRequestsTable(memDbDataSource); this.gameStatesTable = new GameStatesTable(fileDbDataSource); @@ -223,14 +237,8 @@ private void prepareTable(H2LocalDataSourceFactory dsFactory) { gameStatesTableInMem.insert(gameStatesTable.readAll().toArray(GameState[]::new)); this.gameStatesTables = new GameStatesTables(fileDbDataSource, memDbDataSource); - this.votesTable = new VotesTable(memDbDataSource); - this.gameRecordsTable = new GameRecordsTable(fileDbDataSource); - this.gameRecordsTable - .writeCsv(new File(BACKUP_DIR, "game-record" + System.currentTimeMillis() + ".csv")); - - this.websoketSessionsTable = new WebsoketSessionsTable(memDbDataSource); this.wsManager = new WebsocketSessionsManager(gameStatesTables, problemsTable, websoketSessionsTable, usersTable, handsUpTable, matchingRequestsTable); diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/fbauth/AuthService.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/fbauth/AuthService.java index de99c19..4c49907 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/fbauth/AuthService.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/fbauth/AuthService.java @@ -3,7 +3,6 @@ import static org.nkjmlab.go.javalin.model.row.User.*; import java.io.File; import java.io.FileInputStream; -import java.sql.Timestamp; import java.time.LocalDateTime; import java.util.Optional; import javax.servlet.http.HttpServletRequest; @@ -53,9 +52,8 @@ public boolean registerAttendance(String userId, String seatId) { User u = usersTable.readByPrimaryKey(userId); u.setSeatId(seatId); usersTable.merge(u); - loginsTable - .insert(new Login(userId, seatId, u.getUserName(), Timestamp.valueOf(LocalDateTime.now()), - HttpRequestUtils.getXForwardedFor(request).orElseGet(() -> request.getRemoteAddr()))); + loginsTable.insert(new Login(userId, seatId, u.getUserName(), LocalDateTime.now(), + HttpRequestUtils.getXForwardedFor(request).orElseGet(() -> request.getRemoteAddr()))); return true; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/jsonrpc/GoJsonRpcService.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/jsonrpc/GoJsonRpcService.java index a0a065c..e33ffe8 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/jsonrpc/GoJsonRpcService.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/jsonrpc/GoJsonRpcService.java @@ -2,8 +2,7 @@ import static org.nkjmlab.go.javalin.GoApplication.*; import java.io.File; -import java.sql.Timestamp; -import java.time.Instant; +import java.time.LocalDateTime; import java.util.Collections; import java.util.Date; import java.util.List; @@ -119,7 +118,7 @@ public ProblemJson saveProblem(String gameId, long problemId, String groupId, St autoBackupProblemJsonToFile(ProblemJson.createFrom(p)); p.setAgehama(mapper.toJson(currentState.getAgehama())); p.setCells(mapper.toJson(currentState.getCells())); - p.setCreatedAt(Timestamp.from(Instant.now())); + p.setCreatedAt(LocalDateTime.now()); p.setHandHistory(mapper.toJson(currentState.getHandHistory())); p.setSymbols(mapper.toJson(currentState.getSymbols())); p.setName(name); @@ -127,8 +126,8 @@ public ProblemJson saveProblem(String gameId, long problemId, String groupId, St p.setMessage(message); problemsTable.merge(p); } else { - p = new Problem(problemId == -1 ? ProblemFactory.getNewId() : problemId, - Timestamp.from(Instant.now()), groupId, name, mapper.toJson(currentState.getCells()), + p = new Problem(problemId == -1 ? ProblemFactory.getNewId() : problemId, LocalDateTime.now(), + groupId, name, mapper.toJson(currentState.getCells()), mapper.toJson(currentState.getSymbols()), message == null ? "" : message, mapper.toJson(currentState.getHandHistory()), mapper.toJson(currentState.getAgehama())); problemsTable.insert(p); @@ -259,7 +258,7 @@ public void enterWaitingRoom(String userId) { } usersTable.update(u); - MatchingRequest matchingReq = new MatchingRequest(u, new Date()); + MatchingRequest matchingReq = new MatchingRequest(u, LocalDateTime.now()); if (!matchingRequestsTable.exists(matchingReq)) { matchingRequestsTable.insert(matchingReq); } else { @@ -321,7 +320,7 @@ public void handUp(String gameId, boolean handUp, String message) { if (handUp) { HandUp h = handsUpTable.readByPrimaryKey(gameId); if (h == null) { - handsUpTable.insert(new HandUp(gameId, new Date(), message)); + handsUpTable.insert(new HandUp(gameId, LocalDateTime.now(), message)); } else { h.setMessage(h.getMessage() + "
" + message); handsUpTable.update(h); diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/GameStateJson.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/GameStateJson.java index a092f06..6a1e4c1 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/GameStateJson.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/GameStateJson.java @@ -1,8 +1,8 @@ package org.nkjmlab.go.javalin.model.json; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -28,7 +28,7 @@ public class GameStateJson { private List handHistory = new ArrayList<>(); private long problemId = -1; private Map options = new HashMap<>(); - private Date createdAt = new Date(); + private LocalDateTime createdAt = LocalDateTime.now(); private static final JsonMapper mapper = JacksonMapper.getDefaultMapper(); @@ -67,8 +67,8 @@ public GameStateJson(GameState gameState) { } public GameState toGameState() { - return new GameState(new Date(), gameId, blackPlayerId, whitePlayerId, lastHand.getNumber(), - mapper.toJson(lastHand), mapper.toJson(agehama), mapper.toJson(cells), + return new GameState(LocalDateTime.now(), gameId, blackPlayerId, whitePlayerId, + lastHand.getNumber(), mapper.toJson(lastHand), mapper.toJson(agehama), mapper.toJson(cells), mapper.toJson(symbols), mapper.toJson(handHistory), problemId, mapper.toJson(options)); } @@ -167,11 +167,11 @@ public void setProblemId(long problemId) { this.problemId = problemId; } - public Date getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/MatchingRequestJson.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/MatchingRequestJson.java index 12a8e4e..1a31786 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/MatchingRequestJson.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/MatchingRequestJson.java @@ -1,14 +1,14 @@ package org.nkjmlab.go.javalin.model.json; import static org.nkjmlab.go.javalin.model.row.MatchingRequest.*; -import java.util.Date; +import java.time.LocalDateTime; import org.nkjmlab.go.javalin.model.row.MatchingRequest; public class MatchingRequestJson { private String userId; private int rank; - private Date createdAt; + private LocalDateTime createdAt; private String seatId; private String userName; private String gameId = UNPAIRED; @@ -47,11 +47,11 @@ public void setRank(int rank) { this.rank = rank; } - public Date getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/ProblemJson.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/ProblemJson.java index faaf285..9f22ae4 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/ProblemJson.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/json/ProblemJson.java @@ -1,7 +1,6 @@ package org.nkjmlab.go.javalin.model.json; -import java.sql.Timestamp; -import java.time.Instant; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -47,7 +46,7 @@ private ProblemJson(long id, String groupId, String name, int[][] cells, } public Problem toProblem() { - return new Problem(problemId, Timestamp.from(Instant.now()), groupId, name, mapper.toJson(cells), + return new Problem(problemId, LocalDateTime.now(), groupId, name, mapper.toJson(cells), mapper.toJson(symbols), message, mapper.toJson(handHistory), mapper.toJson(agehama)); } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java index 86f0c5c..94c9e85 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/GameRecordsTable.java @@ -28,13 +28,10 @@ public GameRecordsTable(DataSource dataSource) { super(Sorm.create(dataSource), GameRecord.class, TableDefinition.builder(TABLE_NAME) .addColumnDefinition(ID, INT, AUTO_INCREMENT, PRIMARY_KEY) - .addColumnDefinition(CREATED_AT, "TIMESTAMP AS CURRENT_TIMESTAMP") - .addColumnDefinition(USER_ID, VARCHAR).addColumnDefinition(OPPONENT_USER_ID, VARCHAR) - .addColumnDefinition(JADGE, VARCHAR).addColumnDefinition(MEMO, VARCHAR) - .addColumnDefinition(RANK, INT).addColumnDefinition(POINT, INT) - .addColumnDefinition(MESSAGE, VARCHAR).build()); - createTableIfNotExists(); - createIndexesIfNotExists(); + .addColumnDefinition(CREATED_AT, TIMESTAMP).addColumnDefinition(USER_ID, VARCHAR) + .addColumnDefinition(OPPONENT_USER_ID, VARCHAR).addColumnDefinition(JADGE, VARCHAR) + .addColumnDefinition(MEMO, VARCHAR).addColumnDefinition(RANK, INT) + .addColumnDefinition(POINT, INT).addColumnDefinition(MESSAGE, VARCHAR).build()); } public void recalculateAndUpdateRank(UsersTable usersTable) { diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java index 687e373..f521c4c 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/LoginsTable.java @@ -1,15 +1,13 @@ package org.nkjmlab.go.javalin.model.relation; import static org.nkjmlab.sorm4j.util.sql.SelectSql.*; -import java.sql.Timestamp; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Collections; -import java.util.Date; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; import javax.sql.DataSource; -import org.apache.commons.lang3.time.DateUtils; import org.nkjmlab.go.javalin.model.row.Login; import org.nkjmlab.go.javalin.model.row.User; import org.nkjmlab.sorm4j.Sorm; @@ -40,8 +38,6 @@ public LoginsTable(DataSource dataSource) { .addColumnDefinition(REMOTE_ADDR, VARCHAR).addIndexDefinition(USER_ID).build()); this.loggerableSorm = Sorm.create(dataSource, SormContext.builder() .setLoggerContext(LoggerContext.builder().enableAll().build()).build()); - createTableIfNotExists(); - createIndexesIfNotExists(); } @@ -52,10 +48,11 @@ private List readAllLastLoginsOrderByUserId() { } public List readOrderedActiveStudentLogins(UsersTable usersTable) { - Date now = new Date(); + LocalDate nowDate = LocalDate.now(); return readAllLastLoginsOrderByUserId().stream() .filter(l -> Optional.ofNullable(usersTable.readByPrimaryKey(l.getUserId())) - .map(u -> u.isStudent()).orElse(false) && DateUtils.isSameDay(l.getLoggedInAt(), now)) + .map(u -> u.isStudent()).orElse(false) + && l.getLoggedInAt().toLocalDate().equals(nowDate)) .collect(Collectors.toList()); } @@ -88,7 +85,7 @@ private static String getNext(List userIds, String userId) { } public void login(User u, String remoteAddr) { - insert(new Login(u, new Timestamp(new Date().getTime()), remoteAddr)); + insert(new Login(u, LocalDateTime.now(), remoteAddr)); } @@ -105,8 +102,7 @@ public Optional readLastLogin(String userId) { } public boolean isAttendance(String userId) { - return readLastLogin(userId) - .map(l -> l.getLoggedInAt().toLocalDateTime().toLocalDate().equals(LocalDate.now())) + return readLastLogin(userId).map(l -> l.getLoggedInAt().toLocalDate().equals(LocalDate.now())) .orElse(false); } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/PasswordsTable.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/PasswordsTable.java index 6549f34..8e1da30 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/PasswordsTable.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/relation/PasswordsTable.java @@ -32,7 +32,6 @@ public PasswordsTable(DataSource dataSource) { this.schema = TableDefinition.builder(TABLE_NAME).addColumnDefinition(USER_ID, VARCHAR, PRIMARY_KEY) .addColumnDefinition(PASSWORD, VARCHAR).build(); - createTableAndIndexesIfNotExists(); } public void dropTableIfExists() { diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameRecord.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameRecord.java index 72b9b9e..379268c 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameRecord.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameRecord.java @@ -1,6 +1,6 @@ package org.nkjmlab.go.javalin.model.row; -import java.sql.Timestamp; +import java.time.LocalDateTime; import org.nkjmlab.go.javalin.model.relation.GameRecordsTable; import org.nkjmlab.sorm4j.annotation.OrmTable; @@ -8,7 +8,7 @@ public class GameRecord { private int id; - private Timestamp createdAt; + private LocalDateTime createdAt = LocalDateTime.now(); private String userId; private String opponentUserId; private String jadge; @@ -41,7 +41,7 @@ public int getId() { return id; } - public Timestamp getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } @@ -75,7 +75,7 @@ public void setId(int id) { } - public void setCreatedAt(Timestamp createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameState.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameState.java index 2b96050..391c1d1 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameState.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/GameState.java @@ -1,11 +1,11 @@ package org.nkjmlab.go.javalin.model.row; -import java.util.Date; +import java.time.LocalDateTime; public class GameState { private long id; - private Date createdAt; + private LocalDateTime createdAt; private String gameId; private String blackPlayerId; private String whitePlayerId; @@ -23,9 +23,9 @@ public GameState(String gameId) { this.gameId = gameId; } - public GameState(Date createdAt, String gameId, String blackPlayerId, String whitePlayerId, - int handNumber, String lastHand, String agehama, String cells, String symbols, - String handHistory, long problemId, String options) { + public GameState(LocalDateTime createdAt, String gameId, String blackPlayerId, + String whitePlayerId, int handNumber, String lastHand, String agehama, String cells, + String symbols, String handHistory, long problemId, String options) { this.createdAt = createdAt; this.gameId = gameId; this.blackPlayerId = blackPlayerId; @@ -47,11 +47,11 @@ public void setId(long id) { this.id = id; } - public Date getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/HandUp.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/HandUp.java index 705d52b..738677f 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/HandUp.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/HandUp.java @@ -1,7 +1,7 @@ package org.nkjmlab.go.javalin.model.row; import java.io.Serializable; -import java.util.Date; +import java.time.LocalDateTime; import org.nkjmlab.go.javalin.model.relation.HandsUpTable; import org.nkjmlab.sorm4j.annotation.OrmTable; @@ -9,7 +9,7 @@ public class HandUp implements Serializable { private String gameId; - private Date createdAt; + private LocalDateTime createdAt; private String message; public HandUp() {} @@ -18,7 +18,7 @@ private HandUp(String gameId) { this.gameId = gameId; } - public HandUp(String gameId, Date createdAt, String message) { + public HandUp(String gameId, LocalDateTime createdAt, String message) { this(gameId); this.createdAt = createdAt; this.message = message; @@ -34,11 +34,11 @@ public void setGameId(String gameId) { } - public Date getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Login.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Login.java index ecd8da7..7163da6 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Login.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Login.java @@ -1,6 +1,6 @@ package org.nkjmlab.go.javalin.model.row; -import java.sql.Timestamp; +import java.time.LocalDateTime; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -10,12 +10,12 @@ public class Login { private String userId; private String userName; private String seatId = ""; - private Timestamp loggedInAt; + private LocalDateTime loggedInAt; private String remoteAddr; public Login() {} - public Login(String userId, String seatId, String userName, Timestamp loggedInAt, + public Login(String userId, String seatId, String userName, LocalDateTime loggedInAt, String remoteAddr) { this.userId = userId; this.seatId = seatId; @@ -24,7 +24,7 @@ public Login(String userId, String seatId, String userName, Timestamp loggedInAt this.remoteAddr = remoteAddr; } - public Login(User u, Timestamp loggedInAt, String remoteAddr) { + public Login(User u, LocalDateTime loggedInAt, String remoteAddr) { this(u.getUserId(), u.getSeatId(), u.getUserName(), loggedInAt, remoteAddr); } @@ -41,11 +41,11 @@ public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); } - public Timestamp getLoggedInAt() { + public LocalDateTime getLoggedInAt() { return loggedInAt; } - public void setLoggedInAt(Timestamp created) { + public void setLoggedInAt(LocalDateTime created) { this.loggedInAt = created; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/MatchingRequest.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/MatchingRequest.java index 2759dcb..61ba3b8 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/MatchingRequest.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/MatchingRequest.java @@ -1,6 +1,6 @@ package org.nkjmlab.go.javalin.model.row; -import java.util.Date; +import java.time.LocalDateTime; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -11,14 +11,14 @@ public class MatchingRequest { private String userName; private String seatId; private int rank; - private Date createdAt; + private LocalDateTime createdAt; private String gameId = ""; public MatchingRequest() { } - public MatchingRequest(User u, Date createdAt) { + public MatchingRequest(User u, LocalDateTime createdAt) { this.userId = u.getUserId(); this.createdAt = createdAt; this.userName = u.getUserName(); @@ -52,11 +52,11 @@ public void setRank(int rank) { this.rank = rank; } - public Date getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Problem.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Problem.java index 81790af..3b0e28c 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Problem.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Problem.java @@ -1,14 +1,13 @@ package org.nkjmlab.go.javalin.model.row; -import java.sql.Timestamp; -import java.time.Instant; +import java.time.LocalDateTime; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; public class Problem { private long id; - private Timestamp createdAt; + private LocalDateTime createdAt; private String name = ""; private String groupId = ""; private String cells = ""; @@ -23,12 +22,12 @@ public Problem() { public Problem(long id) { this.id = id; - this.createdAt = Timestamp.from(Instant.now()); + this.createdAt = LocalDateTime.now(); } - public Problem(long id, Timestamp createdAt, String groupId, String name, String cells, String symbols, - String message, String handHistory, String agehama) { + public Problem(long id, LocalDateTime createdAt, String groupId, String name, String cells, + String symbols, String message, String handHistory, String agehama) { this.id = id; this.createdAt = createdAt; this.groupId = groupId; @@ -53,11 +52,11 @@ public void setId(long id) { this.id = id; } - public Timestamp getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Timestamp createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Vote.java b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Vote.java index 6969b84..01d8971 100644 --- a/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Vote.java +++ b/nkjmlab-go-webapp/src/main/java/org/nkjmlab/go/javalin/model/row/Vote.java @@ -1,6 +1,6 @@ package org.nkjmlab.go.javalin.model.row; -import java.util.Date; +import java.time.LocalDateTime; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -10,7 +10,7 @@ public class Vote { private String vote; private String voteId; private String gameId; - private Date createdAt = new Date(); + private LocalDateTime createdAt = LocalDateTime.now(); public Vote() {} @@ -59,11 +59,11 @@ public void setGameId(String gameId) { this.gameId = gameId; } - public Date getCreatedAt() { + public LocalDateTime getCreatedAt() { return createdAt; } - public void setCreatedAt(Date createdAt) { + public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; } diff --git a/nkjmlab-go-webapp/src/main/resources/templates/fragment/game-record-table.html b/nkjmlab-go-webapp/src/main/resources/templates/fragment/game-record-table.html index c6c3684..f422a02 100644 --- a/nkjmlab-go-webapp/src/main/resources/templates/fragment/game-record-table.html +++ b/nkjmlab-go-webapp/src/main/resources/templates/fragment/game-record-table.html @@ -18,7 +18,7 @@ - + - + diff --git a/nkjmlab-go-webapp/src/main/resources/templates/fragment/waiting-request-table.html b/nkjmlab-go-webapp/src/main/resources/templates/fragment/waiting-request-table.html index 303e778..a99c635 100644 --- a/nkjmlab-go-webapp/src/main/resources/templates/fragment/waiting-request-table.html +++ b/nkjmlab-go-webapp/src/main/resources/templates/fragment/waiting-request-table.html @@ -42,7 +42,7 @@
-
+
\ No newline at end of file diff --git a/nkjmlab-go-webapp/src/main/resources/templates/games.html b/nkjmlab-go-webapp/src/main/resources/templates/games.html index 2129f50..6f6b20f 100644 --- a/nkjmlab-go-webapp/src/main/resources/templates/games.html +++ b/nkjmlab-go-webapp/src/main/resources/templates/games.html @@ -83,7 +83,7 @@

- + diff --git a/nkjmlab-go-webapp/src/main/resources/templates/index.html b/nkjmlab-go-webapp/src/main/resources/templates/index.html index 4bc94f0..e3e3701 100644 --- a/nkjmlab-go-webapp/src/main/resources/templates/index.html +++ b/nkjmlab-go-webapp/src/main/resources/templates/index.html @@ -26,14 +26,15 @@

教育用囲碁Webアプリケーション

- Let's GO + Let's GO

このシステムはオンライン上での囲碁教育を支援するシステムです.Webブラウザが使える端末があれば,簡単に授業に参加することが出来ます.