football-data.orgを利用してロシアワールドカップの試合結果を取得する
Get Football Data
前回の記事で公開したfootball-data.orgというAPIを使ってサッカーの試合結果を取得するWebアプリにロシアワールドカップの試合結果を取得するボタンを追加しました。
ワールドカップ開始前に公開できてよかった…あと9分後に試合開始だけどね…
HEROKU pomファイルが見つからないエラーが出る理由
Spring Bootを利用したプロジェクトをGitHubとherokuを連携してサービスを公開した際にハマったので備忘録として残しておく。
Could not find a pom.xml file! Please check that it exists and is committed to Git. なるエラーが表示されデプロイできなくなった。
GitHub上にはpomファイルがあるのに何故だ…と思ってたら理由は単純で、GitHubのルートフォルダ上にpomファイルがないためだった。
要するにGitHubにプロジェクトを公開した際にルートフォルダの下にフォルダがあってその下にソースコードがあったため、herokuからはpomファイルが見つからなかった。
無事にherokuにデプロイして公開できるようになりました^^
ヨーロッパのサッカーチームの試合結果をシーズン単位で検索できるようにする予定です。
Get Football Data
Java football-data.orgを利用して2017-2018シーズンのマンチェスター・シティの試合結果を取得する
Spring Bootを利用して何かWebアプリを作ろうと思い、色々考えてたところ「football-data.org」なるAPIを発見した。
こいつを使ってSpring BootとThymeleafのお勉強を兼ねたアプリを作ってみようと思う。
下記参考にさせてもらったブログです。
簡単!Spring BootでWebAPIをたたいてJSON形式のレスポンスをjavaオブジェクトに変換
jQueryで海外サッカーの試合結果を取得してみる – iBitzEdge
基本的には「football-data.org」から取得したjsonをpojoオブジェクトにセットしてThymeleafで画面表示しているだけです。
とりあえずThymeleaf部分だけ
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Get Football Data</title> </head> <body> <h1>マンチェスター・シティFCの試合結果</h1> <p>2017-2018シーズンの試合結果を表示します。</p> <div style="margin-top:8px" th:each="teamsFixtures: ${TeamsFixturesDto.fixtures}"> <p th:text="${teamsFixtures.date}"></p> <table border="1" style="width:500px;table-layout:fixed"> <tbody> <tr> <td style="text-align:center;background: lightblue;" th:text="${teamsFixtures.homeTeamName}"></td> <td style="text-align:center;background: lightblue;" th:text="${teamsFixtures.awayTeamName}"></td> </tr> <tr> <td colspan="2" style="text-align:center" th:text="${teamsFixtures.result.goalsHomeTeam + ' - ' + teamsFixtures.result.goalsAwayTeam }"></td> </tr> </tbody> </table> </div> <div class="matchresults-end"></div> </body> </html>
ソースコードはGitHubに上げました。 GitHub - tevez19911212/AddStringBuilder
これからチームの検索機能等を追加していく予定。
最終的にAWSとか使って公開できたらな~という感じです。
Java StreamAPI備忘録
前回の記事に続いてJavaの備忘録
LINQとの名前の違いによく混乱する…
// streamAPI復習 List<String> strList = Arrays.asList("Ironman", "Captain America", "Deadpool"); strList.forEach(System.out::println); List<String> newList = strList.stream() .filter(s -> s.length() > 7) .map(s -> "(" + s + ")") .collect(Collectors.toList()); newList.forEach(System.out::println); // Match boolean isAllMatch = strList.stream().allMatch(s -> s.length() > 7); boolean isAnyMatch = strList.stream().anyMatch(s -> s.length() > 7); boolean isNoneMatch = strList.stream().noneMatch(s -> s.length() > 7); // collect System.out.println( strList.stream().collect(Collectors.joining(",")) ); System.out.println( strList.stream().mapToInt(s -> s.length()).sum());
Java よく使うやつ1
備忘録記事 Javaでよく使うやつ1
よく使うやつというタイトルだけど、よく使うやつ忘れるのはまずいゾ
現在日の取得とフォーマット
ZonedDateTime now = ZonedDateTime.now(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd"); System.out.println(dtf.format(now));
Optional
public static void main(String[] args) { Optional<String> result = getHeroName("tony"); String heroName = result.orElse("I'm Batman!!!"); System.out.println(heroName); Optional<String> result2 = getHeroName("bruce"); String heroName2 = result2.orElse("I'm Batman!!!"); System.out.println(heroName2); } private static Optional<String> getHeroName(String yourName) { if ("tony".equals(yourName)) { return Optional.of("I am Ironman"); } return Optional.empty(); }
Java SQL文をStringBuilderに変換する処理
パラメーターとして渡された文字列をStringBuilderで囲む
SQLをStringBuilderで囲む処理をJavaで書いてみました。
ドヤ顔で書き終わったあとに下記URLのサイトを見つけてしまった。
SQLよりPG用ソース文字列生成 - Web開発ツールズ
車輪の再発明…
// 入力されたSQLを改行コードで分割してリストに格納したあとに、StringBuilderの文字列を付加する List<String> sqlList = Arrays.asList(sql.split("\r\n")); StringBuilder sbSql = new StringBuilder("StringBuilder sql = new StringBuilder();\r\n"); sqlList.stream().forEach(str -> sbSql.append("sql.append(\"" + str + "\");\r\n"));
thymeleafを使用したHTML側のソースコード
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Hello Page</title> </head> <body> <p th:text="${msg}">please wait...</p> <form method="post" action="/"> <textarea name="sql" th:value="${sql}" cols="40" rows="10" ></textarea> <input type="submit" value="Click" /> </form> <p> <th:block th:if="${result}"> <!-- 改行コードでsplitしてループ --> <th:block th:each="line: ${result.split('\r\n|\r|\n', -1)}"> <th:block th:text="${line}" /><br /> </th:block> </th:block> </p> </body> </html>