Skip to content

Commit

Permalink
Add Streams API for database
Browse files Browse the repository at this point in the history
  • Loading branch information
ashkrit committed Nov 10, 2018
1 parent d1bf6e2 commit 77a80c8
Show file tree
Hide file tree
Showing 12 changed files with 770 additions and 0 deletions.
16 changes: 16 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/scala_compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

124 changes: 124 additions & 0 deletions .idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,18 @@
<version>1.8.1</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.5.0</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>


</dependencies>

Expand Down
49 changes: 49 additions & 0 deletions src/main/java/streams/StocksPrice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package streams;

import java.util.Date;

public class StocksPrice {

private String stockSymbol;
private Date tradeDate;
private double openPrice;
private double highPrice;

public Date getTradeDate() {
return tradeDate;
}

public double getHighPrice() {
return highPrice;
}

public double getOpenPrice() {
return openPrice;
}

public void setStockSymbol(String stockSymbol) {
this.stockSymbol = stockSymbol;
}

public String getStockSymbol() {
return stockSymbol;
}

public void setHighPrice(double highPrice) {
this.highPrice = highPrice;
}

public void setOpenPrice(double openPrice) {
this.openPrice = openPrice;
}

public void setTradeDate(Date tradeDate) {
this.tradeDate = tradeDate;
}

@Override
public String toString() {
return String.format("Symbol=%s;Date=%s;open price=%s ; HighPrice=%s", stockSymbol, tradeDate, openPrice, highPrice);
}

}
51 changes: 51 additions & 0 deletions src/main/java/streams/TableStreamApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package streams;

import org.apache.commons.dbcp2.BasicDataSource;
import streams.database.TableStreamBuilder;
import streams.database.Where;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TableStreamApplication {

public static void main(String... args) {

BasicDataSource ds = createDataSource();

TableStreamBuilder stocksTable = TableStreamBuilder
.with(ds)
.build(StocksPrice.class, "stocks_price", () -> new StocksPrice());

Stream<StocksPrice> rows = stocksTable.stream();

long count = rows
.filter(Where.GT("volume", 1467200))
.filter(Where.GT("open_price", 1108d))
.count();

System.out.println(count);


List<StocksPrice> o = (List<StocksPrice>) stocksTable.stream()
.filter(Where.GT("volume", 1467200))
.filter(Where.GT("open_price", 1108d))
.limit(2)
.collect(Collectors.toList());

System.out.println(o);


}

private static BasicDataSource createDataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/playground");
ds.setUsername("root");
ds.setPassword("changeme");
return ds;
}

}
Loading

0 comments on commit 77a80c8

Please sign in to comment.