Skip to content

Commit

Permalink
Save amount of pages and posts when setting timestamp in cache.
Browse files Browse the repository at this point in the history
  • Loading branch information
klakegg committed Jun 8, 2012
1 parent 95500dd commit 2f1afd9
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 13 deletions.
12 changes: 9 additions & 3 deletions slave/src/main/java/no/difi/datahotel/slave/logic/ChunkEJB.java
Expand Up @@ -33,9 +33,12 @@ public File getFullDataset(Metadata metadata) {

public void update(Metadata metadata) {
Logger logger = metadata.getLogger();
Timestamp ts = new Timestamp(FOLDER_CACHE_CHUNK, metadata.getLocation(), "timestamp");

File tsfile = Filesystem.getFile(FOLDER_CACHE_CHUNK, metadata.getLocation(), "timestamp");
if (metadata.getUpdated() == Timestamp.getTimestamp(tsfile)) {
if (metadata.getUpdated() == ts.getTimestamp()) {
posts.put(metadata.getLocation(), ts.getLong("posts"));
pages.put(metadata.getLocation(), ts.getLong("pages"));

logger.info("Chunk up to date.");
return;
}
Expand Down Expand Up @@ -78,7 +81,10 @@ public void update(Metadata metadata) {
posts.put(metadata.getLocation(), counter);
pages.put(metadata.getLocation(), number);

Timestamp.setTimestamp(tsfile, metadata.getUpdated());
ts.setTimestamp(metadata.getUpdated());
ts.set("posts", counter);
ts.set("pages", number);
ts.save();
} catch (Exception e) {
// TODO Start sending exceptions.
logger.log(Level.WARNING, e.getMessage(), e);
Expand Down
Expand Up @@ -44,9 +44,9 @@ public void delete(String location) {

public void update(Metadata metadata) {
Logger logger = metadata.getLogger();
Timestamp ts = new Timestamp(FOLDER_CACHE_INDEX, metadata.getLocation(), "timestamp");

File tsfile = Filesystem.getFile(FOLDER_CACHE_INDEX, metadata.getLocation(), "timestamp");
if (metadata.getUpdated() == Timestamp.getTimestamp(tsfile)) {
if (metadata.getUpdated() == ts.getTimestamp()) {
logger.info("Index up to date.");
return;
}
Expand Down Expand Up @@ -101,7 +101,8 @@ public void update(Metadata metadata) {
writer.close();
dir.close();

Timestamp.setTimestamp(tsfile, metadata.getUpdated());
ts.setTimestamp(metadata.getUpdated());
ts.save();
} catch (Exception e) {
logger.log(Level.WARNING, e.getMessage(), e);
}
Expand Down
81 changes: 74 additions & 7 deletions util/src/main/java/no/difi/datahotel/util/shared/Timestamp.java
Expand Up @@ -5,17 +5,82 @@
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.google.gson.Gson;

public class Timestamp {

private static Logger logger = Logger.getLogger(Timestamp.class.getSimpleName());
private static Gson gson = new Gson();

private File tsfile;
private Map<String, String> data = new HashMap<String, String>();

public Timestamp(String... path) {
this(Filesystem.getFile(path));
}

@SuppressWarnings("unchecked")
public Timestamp(File tsfile) {
this.tsfile = tsfile;

if (tsfile.exists()) {
try {
FileReader reader = new FileReader(tsfile);
data = (Map<String, String>) gson.fromJson(reader, Map.class);
reader.close();
} catch (Exception e) {
logger.log(Level.WARNING, e.getMessage());
}
}
}

public void setTimestamp(long timestamp) {
data.put("timestamp", String.valueOf(timestamp));
}

public long getTimestamp() {
return data.containsKey("timestamp") ? Long.parseLong(data.get("timestamp")) : -1;
}

public void set(String key, String value) {
data.put(key, value);
}

public void set(String key, long value) {
set(key, String.valueOf(value));
}

public String get(String key) {
return data.get(key);
}

public long getLong(String key) {
return data.containsKey(key) ? Long.parseLong(data.get(key)) : 0;
}

public void save() {
try {
FileWriter writer = new FileWriter(tsfile);
gson.toJson(data, writer);
writer.close();
} catch (Exception e) {
logger.log(Level.WARNING, e.getMessage());
}
}

@Deprecated
public static long getTimestamp(File tsfile) {
try {
FileReader fReader = new FileReader(tsfile);
BufferedReader bReader = new BufferedReader(fReader);

long timestamp = Long.parseLong(bReader.readLine());

bReader.close();
fReader.close();

Expand All @@ -24,19 +89,21 @@ public static long getTimestamp(File tsfile) {
return -1;
}
}


@Deprecated
public static void setTimestamp(File tsfile, long timestamp) {
try {
FileWriter fWriter = new FileWriter(tsfile);
BufferedWriter bWriter = new BufferedWriter(fWriter);

bWriter.write(String.valueOf(timestamp));

bWriter.close();
fWriter.close();
} catch (Exception e) {
Logger.getLogger(Timestamp.class.getSimpleName()).warning("Failed to write timestamp file: " + tsfile.getAbsolutePath());
Logger.getLogger(Timestamp.class.getSimpleName()).warning(
"Failed to write timestamp file: " + tsfile.getAbsolutePath());
}
}

}

0 comments on commit 2f1afd9

Please sign in to comment.