Skip to content
This repository was archived by the owner on Dec 11, 2018. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions src/main/java/com/scmspain/configuration/TweetConfiguration.java

This file was deleted.

This file was deleted.

68 changes: 0 additions & 68 deletions src/main/java/com/scmspain/services/TweetService.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package com.scmspain;
package com.scmspain.tweetmgr;

import com.scmspain.configuration.InfrastructureConfiguration;
import com.scmspain.configuration.TweetConfiguration;
import com.scmspain.tweetmgr.configuration.InfrastructureConfiguration;
import com.scmspain.tweetmgr.configuration.TweetConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.scmspain.configuration;
package com.scmspain.tweetmgr.configuration;

import org.springframework.boot.actuate.autoconfigure.ExportMetricWriter;
import org.springframework.boot.actuate.metrics.jmx.JmxMetricWriter;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.scmspain.tweetmgr.configuration;

import com.scmspain.tweetmgr.controller.TweetController;
import com.scmspain.tweetmgr.persistence.TweetRepository;
import com.scmspain.tweetmgr.services.TweetService;
import com.scmspain.tweetmgr.services.TweetServiceImpl;
import org.springframework.boot.actuate.metrics.writer.MetricWriter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TweetConfiguration {
@Bean
public TweetService getTweetService(TweetRepository repository, MetricWriter metricWriter) {
return new TweetServiceImpl(repository, metricWriter);
}

@Bean
public TweetController getTweetConfiguration(TweetService tweetService) {
return new TweetController(tweetService);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.scmspain.controller;
package com.scmspain.tweetmgr.controller;

import com.scmspain.controller.command.PublishTweetCommand;
import com.scmspain.entities.Tweet;
import com.scmspain.services.TweetService;
import com.scmspain.tweetmgr.controller.command.DiscardTweetCommand;
import com.scmspain.tweetmgr.controller.command.PublishTweetCommand;
import com.scmspain.tweetmgr.persistence.entities.Tweet;
import com.scmspain.tweetmgr.services.TweetService;
import org.springframework.web.bind.annotation.*;

import java.util.List;
Expand All @@ -12,21 +13,34 @@

@RestController
public class TweetController {
private TweetService tweetService;
static final String TWEET_PATH = "/tweet";
static final String DISCARDED_PATH = "/discarded";

private final TweetService tweetService;

public TweetController(TweetService tweetService) {
this.tweetService = tweetService;
}

@GetMapping("/tweet")
@GetMapping(TWEET_PATH)
public List<Tweet> listAllTweets() {
return this.tweetService.listAllTweets();
return tweetService.listAllTweets();
}

@PostMapping("/tweet")
@PostMapping(TWEET_PATH)
@ResponseStatus(CREATED)
public void publishTweet(@RequestBody PublishTweetCommand publishTweetCommand) {
this.tweetService.publishTweet(publishTweetCommand.getPublisher(), publishTweetCommand.getTweet());
this.tweetService.publishTweet(publishTweetCommand.getPublisher(), publishTweetCommand.getMessage());
}

@GetMapping(DISCARDED_PATH)
public List<Tweet> listDiscarded() {
return tweetService.listDiscardedTweets();
}

@PostMapping(DISCARDED_PATH)
public void discardTweet(@RequestBody DiscardTweetCommand discardTweetCommand) {
this.tweetService.discardTweet(discardTweetCommand.getId());
}

@ExceptionHandler(IllegalArgumentException.class)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.scmspain.tweetmgr.controller.command;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
* Request body for the /discarded end-point.
*/
public class DiscardTweetCommand {

private final Long id;

@JsonCreator
public DiscardTweetCommand(@JsonProperty("tweet") Long id) {
this.id = id;
}

public Long getId() {
return id;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.scmspain.tweetmgr.controller.command;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
* Request body for the /tweet end-point.
*/
public class PublishTweetCommand {
private final String publisher;
private final String message;

@JsonCreator
public PublishTweetCommand(@JsonProperty("publisher") String publisher, @JsonProperty("tweet") String message) {
this.publisher = publisher;
this.message = message;
}

public String getPublisher() {
return publisher;
}

public String getMessage() {
return message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.scmspain.tweetmgr.persistence;

import com.scmspain.tweetmgr.persistence.entities.Tweet;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
* JPA repository of tweets
*/
public interface TweetRepository extends JpaRepository<Tweet, Long> {

/**
* @return all published, non-discarded tweets.
*/
@Query(value = "SELECT t FROM Tweet t WHERE (pre2015MigrationStatus<>99) AND (discardedOn IS NULL) ORDER BY createdOn DESC")
List<Tweet> findAllPublished();

/**
* @return all discarded tweets.
*/
@Query(value = "SELECT t FROM Tweet t WHERE (pre2015MigrationStatus<>99) AND (discardedOn IS NOT NULL) ORDER BY discardedOn DESC")
List<Tweet> findAllDiscarded();
}
Original file line number Diff line number Diff line change
@@ -1,24 +1,34 @@
package com.scmspain.entities;
package com.scmspain.tweetmgr.persistence.entities;

import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.sql.Timestamp;

@Entity
public class Tweet {
@Id
@GeneratedValue
private Long id;

@Column(nullable = false)
private String publisher;
@Column(nullable = false, length = 140)
private String tweet;
@Column (nullable=true)

@Column(nullable = false)
private String message;

@Column
private Long pre2015MigrationStatus = 0L;

public Tweet() {
}
@Column
@CreationTimestamp
private Timestamp createdOn;

@Column
private Timestamp discardedOn;

public Long getId() {
return id;
Expand All @@ -36,12 +46,12 @@ public void setPublisher(String publisher) {
this.publisher = publisher;
}

public String getTweet() {
return tweet;
public String getMessage() {
return message;
}

public void setTweet(String tweet) {
this.tweet = tweet;
public void setMessage(String message) {
this.message = message;
}

public Long getPre2015MigrationStatus() {
Expand All @@ -52,4 +62,15 @@ public void setPre2015MigrationStatus(Long pre2015MigrationStatus) {
this.pre2015MigrationStatus = pre2015MigrationStatus;
}

public Timestamp getCreatedOn() {
return createdOn;
}

public Timestamp getDiscardedOn() {
return discardedOn;
}

public void setDiscardedOn(Timestamp discardedOn) {
this.discardedOn = discardedOn;
}
}
Loading