소스 검색

Spring starter

master
bart.de.lepeleer@breedbeeld.cc 3 년 전
커밋
a8452c2397

+ 85
- 0
.gitignore 파일 보기

@@ -0,0 +1,85 @@
*.db
##############################
## Java
##############################
.mtj.tmp/
*.class
*.jar
*.war
*.ear
*.nar
hs_err_pid*

##############################
## Maven
##############################
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
pom.xml.bak
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar

##############################
## Gradle
##############################
bin/
build/
.gradle
.gradletasknamecache
gradle-app.setting
!gradle-wrapper.jar

##############################
## IntelliJ
##############################
out/
.idea/
.idea_modules/
*.iml
*.ipr
*.iws

##############################
## Eclipse
##############################
.settings/
bin/
tmp/
.metadata
.classpath
.project
*.tmp
*.bak
*.swp
*~.nib
local.properties
.loadpath
.factorypath

##############################
## NetBeans
##############################
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml

##############################
## Visual Studio Code
##############################
.vscode/
.code-workspace

##############################
## OS X
##############################
.DS_Store

+ 50
- 0
pom.xml 파일 보기

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>be.syntra</groupId>
<artifactId>jordiquote-spring-xml</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.7.1</version>
<scope>test</scope>
</dependency>
<dependency>
<!-- https://github.com/ricksbrown/cowsay -->
<groupId>com.github.ricksbrown</groupId>
<artifactId>cowsay</artifactId>
<version>1.1.0</version>
<!-- The "lib" classifier is optional, but it gives you a MUCH smaller jar which is all you need as a Java library -->
<classifier>lib</classifier>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<!-- https://projectlombok.org/-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>



</dependencies>
</project>

+ 36
- 0
src/main/java/be/syntra/App.java 파일 보기

@@ -0,0 +1,36 @@
package be.syntra;

import be.syntra.cowsay.*;

import java.util.Scanner;

public class App {

public static void main(String[] args) {
/**
* Dependency Injection is a technique of creating software in which objects do not create their dependencies on itself.
* instead objects declare dependencies that they need and it an external object or framework to provide
* concrete dependencies to objects
*/

CowSay cowSay = new DragonCowSay();
QuoteDao quoteDao = new QuoteDaoMysql();
cowSay.setQuoteDao(quoteDao);
cowSay.showQuote();

Scanner in = new Scanner(System.in);
System.out.println("Did you like this quote ? (y/n)");
while(true) {
String line = in.nextLine();
if (line.equalsIgnoreCase("y")) {
cowSay.voteDown();
break;
} else if(line.equalsIgnoreCase("n")) {
cowSay.voteUp();
break;
} else {
System.out.println("Please enter y/n");
}
}
}
}

+ 9
- 0
src/main/java/be/syntra/cowsay/CowSay.java 파일 보기

@@ -0,0 +1,9 @@
package be.syntra.cowsay;

public interface CowSay {
void showQuote();
void voteUp();
void voteDown();
void setQuoteDao(QuoteDao quoteDao);
}


+ 30
- 0
src/main/java/be/syntra/cowsay/DragonCowSay.java 파일 보기

@@ -0,0 +1,30 @@
package be.syntra.cowsay;
import com.github.ricksbrown.cowsay.Cowsay;

public class DragonCowSay implements CowSay {
QuoteDao quoteDao;
Quote quote;

public void setQuoteDao(QuoteDao quoteDao) {
this.quoteDao = quoteDao;
}

@Override
public void showQuote() {
quote = quoteDao.getRandomQuote();
String cow = "dragon";
String[] cowArgs = new String[]{"-f", cow, quote.getAuthor() +" Says: " + quote.getQuote()};
String result = Cowsay.say(cowArgs);
System.out.println(result);
}

@Override
public void voteUp() {
quoteDao.likeQuote(quote);
}

@Override
public void voteDown() {
quoteDao.dislikeQuote(quote);
}
}

+ 32
- 0
src/main/java/be/syntra/cowsay/OriginalCowSay.java 파일 보기

@@ -0,0 +1,32 @@
package be.syntra.cowsay;
import com.github.ricksbrown.cowsay.Cowsay;

public class OriginalCowSay implements CowSay {
QuoteDao quoteDao;
Quote quote;

public void setQuoteDao(QuoteDao quoteDao) {
this.quoteDao = quoteDao;
}

@Override
public void showQuote() {
quote = quoteDao.getRandomQuote();
String cow = "dragon";
String[] cowArgs = new String[]{quote.getAuthor() +" Says: " + quote.getQuote()};
String result = Cowsay.say(cowArgs);
System.out.println(result);
}

@Override
public void voteUp() {
quoteDao.likeQuote(quote);
}

@Override
public void voteDown() {
quoteDao.dislikeQuote(quote);
}


}

+ 13
- 0
src/main/java/be/syntra/cowsay/Quote.java 파일 보기

@@ -0,0 +1,13 @@
package be.syntra.cowsay;

import lombok.Data;

@Data
public class Quote {
private int id;
private String author;
private String quote;
private int likes;
private int dislikes;

}

+ 8
- 0
src/main/java/be/syntra/cowsay/QuoteDao.java 파일 보기

@@ -0,0 +1,8 @@
package be.syntra.cowsay;

public interface QuoteDao {
Quote getRandomQuote();
void likeQuote(Quote quote);
void dislikeQuote(Quote quote);

}

+ 25
- 0
src/main/java/be/syntra/cowsay/QuoteDaoDummy.java 파일 보기

@@ -0,0 +1,25 @@
package be.syntra.cowsay;

public class QuoteDaoDummy implements QuoteDao {
@Override
public Quote getRandomQuote() {
Quote quote = new Quote();
quote.setId(0);
quote.setAuthor("dummy author");
quote.setQuote("dummy quote");
quote.setLikes(0);
quote.setDislikes(0);
return quote;

}

@Override
public void likeQuote(Quote quote) {

}

@Override
public void dislikeQuote(Quote quote) {

}
}

+ 73
- 0
src/main/java/be/syntra/cowsay/QuoteDaoMysql.java 파일 보기

@@ -0,0 +1,73 @@
package be.syntra.cowsay;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class QuoteDaoMysql implements QuoteDao {
private static String url;
private static String usr;
private static String pass;

static {
try (InputStream in = QuoteDaoMysql.class.getResourceAsStream("/app.properties")) {
Properties properties = new Properties();
properties.load(in);
url = properties.getProperty("url");
usr = properties.getProperty("usr");
pass = properties.getProperty("pass");
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public Quote getRandomQuote() {
String sql = "SELECT * FROM jordiquotes ORDER BY RAND() LIMIT 1";
try (Connection con = DriverManager.getConnection(url, usr, pass);
PreparedStatement ps = con.prepareStatement(sql)) {
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
Quote quote = new Quote();
quote.setId(rs.getInt("id"));
quote.setAuthor(rs.getString("author"));
quote.setQuote(rs.getString("quote"));
quote.setLikes(rs.getInt("likes"));
quote.setDislikes(rs.getInt("dislikes"));
return quote;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return null;
}

@Override
public void likeQuote(Quote quote) {
String sql = "UPDATE jordiquotes SET likes = likes + 1 WHERE ID = ?";
try (Connection con = DriverManager.getConnection(url,usr,pass);
PreparedStatement ps = con.prepareStatement(sql)){
ps.setInt(1, quote.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}

@Override
public void dislikeQuote(Quote quote) {
String sql = "UPDATE jordiquotes SET dislikes = dislikes + 1 WHERE ID = ?";
try (Connection con = DriverManager.getConnection(url,usr,pass);
PreparedStatement ps = con.prepareStatement(sql)){
ps.setInt(1, quote.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}

}
}

+ 0
- 0
src/main/resources/.gitkeep 파일 보기


+ 3
- 0
src/main/resources/app.properties 파일 보기

@@ -0,0 +1,3 @@
url=jdbc:mysql://ID109462_crud.db.webhosting.be:3306/ID109462_crud
usr=ID109462_crud
pass=code4croissants

+ 21
- 0
src/test/java/be/syntra/AppTest.java 파일 보기

@@ -0,0 +1,21 @@
package be.syntra;

import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;


/**
* Unit test for simple App.
*/
public class AppTest
{
/**
* Rigorous Test :-)
*/
@Test
public void shouldAnswerWithTrue()
{
assertTrue( true );
}
}

+ 0
- 0
src/test/resources/.gitkeep 파일 보기


Loading…
취소
저장