Skip to content

Commit

Permalink
Fix Undo for Like Command
Browse files Browse the repository at this point in the history
  • Loading branch information
jonchan51 committed Oct 27, 2019
1 parent 46a7379 commit f529203
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 84 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public CommandResult execute(Model model) throws CommandException {
Meme memeToLike = lastShownList.get(index.getZeroBased());

model.incrementMemeLikeCount(memeToLike);
model.commitWeme();
return new CommandResult(String.format(MESSAGE_LIKE_MEME_SUCCESS, memeToLike));
}

Expand Down
3 changes: 0 additions & 3 deletions src/main/java/seedu/weme/model/Model.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import seedu.weme.commons.core.GuiSettings;
import seedu.weme.model.meme.Meme;
import seedu.weme.model.template.Template;
import seedu.weme.statistics.LikeData;
import seedu.weme.statistics.Stats;
import seedu.weme.statistics.TagWithCount;

Expand Down Expand Up @@ -211,8 +210,6 @@ public interface Model {
/**
* Returns the like data.
*/
LikeData getLikeData();

ObservableMap<String, Integer> getObservableLikeData();

/**
Expand Down
6 changes: 0 additions & 6 deletions src/main/java/seedu/weme/model/ModelManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import seedu.weme.commons.core.LogsCenter;
import seedu.weme.model.meme.Meme;
import seedu.weme.model.template.Template;
import seedu.weme.statistics.LikeData;
import seedu.weme.statistics.Stats;
import seedu.weme.statistics.TagWithCount;

Expand Down Expand Up @@ -272,11 +271,6 @@ public Stats getStats() {
return versionedWeme.getStats();
}

@Override
public LikeData getLikeData() {
return versionedWeme.getLikeData();
}

@Override
public ObservableMap<String, Integer> getObservableLikeData() {
return versionedWeme.getObservableLikeData();
Expand Down
7 changes: 1 addition & 6 deletions src/main/java/seedu/weme/model/Weme.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import seedu.weme.model.template.Template;
import seedu.weme.model.template.UniqueTemplateList;
import seedu.weme.model.util.ImageUtil;
import seedu.weme.statistics.LikeData;
import seedu.weme.statistics.Stats;
import seedu.weme.statistics.StatsManager;
import seedu.weme.statistics.TagWithCount;
Expand Down Expand Up @@ -257,11 +256,7 @@ public ObservableList<Template> getTemplateList() {

@Override
public Stats getStats() {
return stats;
}

public LikeData getLikeData() {
return stats.getLikeData();
return stats.getStats();
}

public ObservableMap<String, Integer> getObservableLikeData() {
Expand Down
31 changes: 15 additions & 16 deletions src/main/java/seedu/weme/statistics/LikeData.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package seedu.weme.statistics;

import java.util.HashMap;
import static seedu.weme.commons.util.CollectionUtil.requireAllNonNull;

import java.util.Map;

import javafx.collections.FXCollections;
Expand All @@ -11,24 +12,29 @@
*/
public class LikeData {

private ObservableMap<String, Integer> likeMap;
private final ObservableMap<String, Integer> likeMap =
FXCollections.observableHashMap();
private final ObservableMap<String, Integer> unmodifiableLikeMap =
FXCollections.unmodifiableObservableMap(likeMap);

/**
* Constructs an empty like data.
* Constructs an empty LikeData
*/
public LikeData() {
likeMap = FXCollections.observableMap(new HashMap<>());
}
public LikeData() {}

/**
* Constructs a LikeData filled with the provided likeMap
*/
public LikeData(ObservableMap<String, Integer> likeMap) {
this();
setLikeMap(likeMap);
}

/**
* Sets the current set of {@code LikeData} with a replacement.
*/
public void setLikeMap(ObservableMap<String, Integer> replacement) {
public void setLikeMap(Map<String, Integer> replacement) {
requireAllNonNull(replacement);
likeMap.clear();
likeMap.putAll(replacement);
}

Expand All @@ -49,10 +55,9 @@ public int getLikesByMemeRef(String memeRef) {

/**
* Returns an unmodifiable view of LikeData.
* @return
*/
public ObservableMap<String, Integer> getObservableLikeData() {
return likeMap;
return unmodifiableLikeMap;
}

/**
Expand All @@ -63,10 +68,4 @@ public void deleteLikesByMemeRef(String memeRef) {
likeMap.remove(memeRef);
}

/**
* Returns like data in Map.
*/
public Map<String, Integer> getInMap() {
return likeMap;
}
}
31 changes: 3 additions & 28 deletions src/main/java/seedu/weme/statistics/LikeManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
import java.util.Map;
import java.util.logging.Logger;

import javafx.collections.FXCollections;
import javafx.collections.ObservableMap;

import seedu.weme.commons.core.LogsCenter;
import seedu.weme.model.ModelManager;
import seedu.weme.model.meme.Meme;
Expand All @@ -28,8 +26,7 @@ public LikeManager(LikeData data) {

logger.fine("Initializing with like data: " + data);

this.data = new LikeData();
this.data.setLikeMap(data.getObservableLikeData());
this.data = new LikeData(data.getObservableLikeData());
}

public LikeManager() {
Expand All @@ -41,40 +38,18 @@ public int getLikesByMeme(Meme meme) {
return data.getLikesByMemeRef(memeRef);
}

/**
* Returns an unmodifiable view of {@code LikeData}.
*/
public LikeData getLikeData() {
return data;
}

/**
* Returns an unmodifiable view of {@code LikeData}.
*/
public ObservableMap<String, Integer> getObservableLikeData() {
return data.getObservableLikeData();
}

/**
* Returns {@code LikeData} in Map.
*/
public Map<String, Integer> getLikeDataInMap() {
return data.getInMap();
}

/**
* Replace the current like data with a new set of data.
*/
public void setLikeData(LikeData replacement) {
data.setLikeMap(replacement.getObservableLikeData());
}

/**
* Replace the current like data with a new set of data in map.
* @param replacement
*/
public void setLikeDataFromMap(Map<String, Integer> replacement) {
data.setLikeMap(FXCollections.observableMap(replacement));
public void setLikeData(Map<String, Integer> replacement) {
data.setLikeMap(replacement);
}

/**
Expand Down
11 changes: 6 additions & 5 deletions src/main/java/seedu/weme/statistics/Stats.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package seedu.weme.statistics;

import java.util.List;
import java.util.Map;

import javafx.collections.ObservableMap;

Expand All @@ -11,20 +12,20 @@
*/
public interface Stats {

//============= Like Data ====================================
void resetData(Stats stats);

Stats getStats();

LikeData getLikeData();
//============= Like Data ====================================

void setLikeData(LikeData likeData);
void setLikeData(Map<String, Integer> likeData);

ObservableMap<String, Integer> getObservableLikeData();

void incrementMemeLikeCount(Meme meme);

void deleteLikesByMeme(Meme meme);

void resetData(Stats stats);

//============= Tag Data ====================================

List<TagWithCount> getTagsWithCountList(List<Meme> memeList);
Expand Down
22 changes: 13 additions & 9 deletions src/main/java/seedu/weme/statistics/StatsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static java.util.Objects.requireNonNull;

import java.util.List;
import java.util.Map;

import javafx.collections.ObservableMap;

Expand Down Expand Up @@ -33,18 +34,12 @@ public StatsManager(Stats stats) {
}

//============= Like Data ====================================

@Override
public LikeData getLikeData() {
return likeManager.getLikeData();
}

/**
* Replaces the contents of the like data with {@code likeData}.
*/
@Override
public void setLikeData(LikeData likeData) {
this.likeManager.setLikeData(likeData);
public void setLikeData(Map<String, Integer> likeData) {
likeManager.setLikeData(likeData);
}

/**
Expand Down Expand Up @@ -85,6 +80,15 @@ public List<TagWithCount> getTagsWithCountList(List<Meme> memeList) {
public void resetData(Stats newData) {
requireNonNull(newData);

setLikeData(newData.getLikeData());
setLikeData(newData.getObservableLikeData());
}

/**
* Returns a copy of the current Stats.
*/
@Override
public Stats getStats() {
Stats newStats = new StatsManager(this);
return newStats;
}
}
7 changes: 2 additions & 5 deletions src/main/java/seedu/weme/storage/JsonSerializableStats.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;

import javafx.collections.FXCollections;
import seedu.weme.commons.exceptions.IllegalValueException;
import seedu.weme.statistics.LikeData;
import seedu.weme.statistics.Stats;
import seedu.weme.statistics.StatsManager;

Expand All @@ -35,7 +33,7 @@ public JsonSerializableStats(@JsonProperty("likeMap") Map<String, Integer> likeD
* @param source future changes to this will not affect the created {@code JsonSerializableWeme}.
*/
public JsonSerializableStats(Stats source) {
likeMap.putAll(source.getLikeData().getInMap());
likeMap.putAll(source.getObservableLikeData());
}

/**
Expand All @@ -45,8 +43,7 @@ public JsonSerializableStats(Stats source) {
*/
public Stats toModelType() throws IllegalValueException {
Stats stats = new StatsManager();
LikeData likeData = new LikeData(FXCollections.observableMap(likeMap));
stats.setLikeData(likeData);
stats.setLikeData(likeMap);
return stats;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import seedu.weme.model.Weme;
import seedu.weme.model.meme.Meme;
import seedu.weme.model.template.Template;
import seedu.weme.statistics.LikeData;
import seedu.weme.statistics.Stats;
import seedu.weme.statistics.TagWithCount;
import seedu.weme.testutil.MemeBuilder;
Expand Down Expand Up @@ -272,11 +271,6 @@ public Stats getStats() {
throw new AssertionError("This method should not be called");
}

@Override
public LikeData getLikeData() {
throw new AssertionError("This method should not be called");
}

@Override
public ObservableMap<String, Integer> getObservableLikeData() {
throw new AssertionError("This method should not be called");
Expand Down

0 comments on commit f529203

Please sign in to comment.