Skip to content

Commit

Permalink
Fix DB updates.
Browse files Browse the repository at this point in the history
  • Loading branch information
misho1995 committed May 28, 2016
1 parent 538ff85 commit a55579b
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 26 deletions.
38 changes: 30 additions & 8 deletions src/main/java/ge/kuku/movietable/core/MovieService.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package ge.kuku.movietable.core;

import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import ge.kuku.movietable.data.CloudRepository;
Expand All @@ -10,7 +9,6 @@

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
Expand All @@ -20,33 +18,57 @@
@Produces({MediaType.APPLICATION_JSON})
public class MovieService {

private String MOVIE_PARSER_API = "http://movie-parser.herokuapp.com/webapi/movies/";
private String MOVIE_PARSER_API = "http://192.168.3.144:8080/webapi/movies/";//"http://movie-parser.herokuapp.com/webapi/movies/";

private Repository getRepo() {
return new CloudRepository();
}

@GET
@Path("{id}")
public List<MovieDo> retrieve(@PathParam("id") String id,
@QueryParam("movie_name") String movieName) {
public List<MovieDo> retrieve(@PathParam("id") String id) {
List<MovieDo> movieDos = new ArrayList<>();
List<MovieItem> items = getRepo().retrieve(id);
List<MovieItem> deleted = new ArrayList<>();
for (MovieItem fromDb : items) {
if (fromDb.isAlive())
if (isAlive(fromDb))
movieDos.add(fromDb.toDo());
else deleted.add(fromDb);
}

if (movieDos.isEmpty()) {
for (MovieDo mDo : requestMovieSearch(id)) {
mDo.setId(UUID.randomUUID().toString());
getRepo().save(MovieItem.fromDo(mDo));
MovieItem curr = MovieItem.fromDo(mDo);
int index = deleted.indexOf(curr);
if (index != -1) {
MovieItem tmp = deleted.get(index);
mDo.setId(tmp.getId());
curr = MovieItem.fromExisting(tmp, mDo);
getRepo().save(curr);
}
else {
mDo.setId(UUID.randomUUID().toString());
}
if (!items.contains(curr)) {
getRepo().save(curr);
}
movieDos.add(mDo);
}
}
return movieDos;
}

public boolean isAlive(MovieItem item) {
long curr = System.currentTimeMillis();
long old;
try {
old = Long.parseLong(item.getExpireTime());
} catch (Exception e){
return false;
}
return curr > old;
}

private MovieDo[] requestMovieSearch(String id) {
HttpResponse<MovieDo[]> response = null;
try {
Expand Down
1 change: 1 addition & 0 deletions src/main/java/ge/kuku/movietable/data/CloudRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class CloudRepository implements Repository {

public CloudRepository() {
client.setRegion(Region.getRegion(Regions.US_WEST_2));
client.withEndpoint("http://192.168.3.144:8000");
}

@Override
Expand Down
38 changes: 20 additions & 18 deletions src/main/java/ge/kuku/movietable/data/MovieItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,30 @@ public static MovieItem fromDo(MovieDo movieDo) {
return movieItem;
}

public static MovieItem fromExisting(MovieItem item, MovieDo movieDo) {
item.setImdbId(movieDo.getImdbId());
item.setLanguage(movieDo.getLanguage());
item.setQuality(movieDo.getQuality());
item.setSource(movieDo.getSource());
item.setName(movieDo.getName());
item.setExpireTime(trimTime(movieDo.getSource()));
return item;
}

private static String trimTime(String source) {
String exp = source.substring(source.indexOf(EXPIRES_NAME) + EXPIRES_NAME.length()+1);
if (exp.contains("&"))
exp = exp.substring(0, exp.indexOf("&"));
return exp;
}

public boolean isAlive() {
long curr = System.currentTimeMillis();
long old = curr;
try {
old = Long.parseLong(expireTime);
} catch (Exception e){
return false;
}
return old > curr;
@Override
public boolean equals(Object obj) {
MovieItem neigh = (MovieItem)obj;

return getImdbId().equals(neigh.getImdbId()) &&
getLanguage().equals(neigh.getLanguage()) &&
getQuality().equals(neigh.getQuality());
}

@DynamoDBRangeKey(attributeName = "id")
Expand Down Expand Up @@ -100,21 +108,15 @@ public void setName(String name) {
this.name = name;
}

@Override
public String toString() {
return "Movie [imdbId=" + imdbId + ", language=" + language
+ ", quality=" + quality + ", source=" + source + "]";
@DynamoDBAttribute(attributeName = "Expire")
public String getExpireTime() {
return expireTime;
}

public void setExpireTime(String expireTime) {
this.expireTime = expireTime;
}

@DynamoDBAttribute(attributeName = "ExpireTime")
public String getExpireTime() {
return expireTime;
}

public MovieDo toDo() {
MovieDo movieDo = new MovieDo();
movieDo.setId(id);
Expand Down

0 comments on commit a55579b

Please sign in to comment.