Skip to content

Instantly share code, notes, and snippets.

View taywils's full-sized avatar
🏠
Working from home

taywils

🏠
Working from home
View GitHub Profile
@taywils
taywils / ArticleMongoDao.java
Created December 13, 2013 22:03
spark_storage_step_3_1
import com.mongodb.*;
import java.sql.Date;
import java.util.ArrayList;
public class ArticleMongoDao<T extends Article> implements ArticleDbService<T> {
// A collection in Mongo can be thought of as a table in a relational DB
private DBCollection collection;
public ArticleMongoDao() {
@taywils
taywils / Article.java
Created December 11, 2013 03:40
spark_storage_step_2_2
public Article(String title, String summary, String content, Integer id, Date createdAt, Boolean deleted) {
this.title = title;
this.summary = summary;
this.content = content;
this.createdAt = createdAt;
this.id = id;
this.deleted = deleted;
}
@taywils
taywils / ArticlePostgresDao.java
Created December 11, 2013 03:37
spark_storage_step_2_1
import java.sql.*;
import java.util.ArrayList;
public class ArticlePostgresDao<T extends Article> implements ArticleDbService<T> {
// PostgreSQL connection to the database
private Connection conn;
// A raw SQL query used without parameters
private Statement stmt;
public ArticlePostgresDao() {
@taywils
taywils / HelloSpark.java
Created December 9, 2013 01:55
spark_storage_step_1_3
import static spark.Spark.*;
import spark.ModelAndView;
import spark.Request;
import spark.Response;
import spark.Route;
import spark.template.freemarker.FreeMarkerRoute;
import java.util.*;
@taywils
taywils / ArticleServletDao.java
Created December 9, 2013 01:43
spark_storage_step_1_2
import java.util.ArrayList;
public class ArticleServletDao<T extends Article> implements ArticleDbService<T> {
ArrayList<T> storage;
public ArticleServletDao() {
storage = new ArrayList<T>();
}
@Override
@taywils
taywils / ArticleDbService.java
Created December 9, 2013 01:39
spark_storage_step_1_1
import java.util.ArrayList;
public interface ArticleDbService<T> {
public Boolean create(T entity);
public T readOne(int id);
public ArrayList<T> readAll();
public Boolean update(int id, String title, String summary, String content);
public Boolean delete(int id);
}
@taywils
taywils / articleForm.ftl
Created November 27, 2013 04:15
spark_view_step_4_3
<div class="starter-template">
<form class="form-horizontal" role="form" id='article-create-form' method='POST' <#if article??>action="/article/update/:id"<#else>action="/article/create"</#if>>
<div class="form-group">
<label class="col-sm-3 control-label" for="title">Title: </label>
<div class="col-sm-5">
<input class="form-control" type='text' id="title" name='article-title' placeholder="Enter a new title" <#if article??>value="${article.getTitle()}"</#if> />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="summary">Summary: </label>
@taywils
taywils / articleRead.ftl
Created November 27, 2013 04:14
spark_view_step_4_2
<div class="starter-template">
<h3>${article.getTitle()}</h3>
<h4>${article.getCreatedAt()}</h4>
<h4>${article.getEditLink()} | ${article.getDeleteLink()}</h4>
<h5>${article.getContent()}</h5>
</div>
@taywils
taywils / HelloSpark.java
Created November 27, 2013 04:11
spark_view_step_4
get(new FreeMarkerRoute("/article/read/:id") {
@Override
public Object handle(Request request, Response response) {
Integer id = Integer.parseInt(request.params(":id"));
Map<String, Object> viewObjects = new HashMap<String, Object>();
viewObjects.put("templateName", "articleRead.ftl");
for(Article article : HelloSpark.articles) {
if(id.equals(article.getId())) {
@taywils
taywils / articleForm.ftl
Created November 27, 2013 00:26
spark_view_step_3_2
<div class="starter-template">
<form class="form-horizontal" role="form" id='article-create-form' method='POST' action='/article/create'>
<div class="form-group">
<label class="col-sm-3 control-label" for="title">Title: </label>
<div class="col-sm-5">
<input class="form-control" type='text' id="title" name='article-title' placeholder="Enter a new title" />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="summary">Summary: </label>