Better history
For #83, replaces existing system but doesn't use new features such as date, image count, etc.
This commit is contained in:
parent
433aa1e46e
commit
72fe3303e3
@ -6,7 +6,6 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
@ -15,12 +14,12 @@ import org.json.JSONObject;
|
||||
|
||||
public class History {
|
||||
|
||||
private List<Entry> list = new ArrayList<Entry>();
|
||||
private List<HistoryEntry> list = new ArrayList<HistoryEntry>();
|
||||
|
||||
public void add(Entry entry) {
|
||||
public void add(HistoryEntry entry) {
|
||||
list.add(entry);
|
||||
}
|
||||
public void remove(Entry entry) {
|
||||
public void remove(HistoryEntry entry) {
|
||||
list.remove(entry);
|
||||
}
|
||||
public void clear() {
|
||||
@ -31,7 +30,7 @@ public class History {
|
||||
JSONObject json;
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
json = jsonArray.getJSONObject(i);
|
||||
list.add(new Entry().fromJSON(json));
|
||||
list.add(new HistoryEntry().fromJSON(json));
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,7 +47,7 @@ public class History {
|
||||
|
||||
public void fromList(List<String> stringList) {
|
||||
for (String item : stringList) {
|
||||
Entry entry = new Entry();
|
||||
HistoryEntry entry = new HistoryEntry();
|
||||
entry.url = item;
|
||||
list.add(entry);
|
||||
}
|
||||
@ -56,13 +55,13 @@ public class History {
|
||||
|
||||
public JSONArray toJSON() {
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
for (Entry entry : list) {
|
||||
for (HistoryEntry entry : list) {
|
||||
jsonArray.put(entry.toJSON());
|
||||
}
|
||||
return jsonArray;
|
||||
}
|
||||
|
||||
public List<Entry> toList() {
|
||||
public List<HistoryEntry> toList() {
|
||||
return list;
|
||||
}
|
||||
|
||||
@ -75,37 +74,4 @@ public class History {
|
||||
}
|
||||
}
|
||||
|
||||
class Entry {
|
||||
public String url = "",
|
||||
title = "";
|
||||
public int count = 0;
|
||||
public Date startDate = new Date(),
|
||||
modifiedDate = new Date();
|
||||
|
||||
public Entry() {
|
||||
}
|
||||
|
||||
public Entry fromJSON(JSONObject json) {
|
||||
this.url = json.getString("url");
|
||||
this.title = json.getString("title");
|
||||
this.count = json.getInt("count");
|
||||
this.startDate = new Date(json.getLong("startDate"));
|
||||
this.modifiedDate = new Date(json.getLong("modifiedDate"));
|
||||
return this;
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("url", this.url);
|
||||
json.put("title", this.title);
|
||||
json.put("count", this.count);
|
||||
json.put("startDate", this.startDate.getTime());
|
||||
json.put("modifiedDate", this.modifiedDate.getTime());
|
||||
return json;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return this.url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
40
src/main/java/com/rarchives/ripme/ui/HistoryEntry.java
Normal file
40
src/main/java/com/rarchives/ripme/ui/HistoryEntry.java
Normal file
@ -0,0 +1,40 @@
|
||||
package com.rarchives.ripme.ui;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class HistoryEntry {
|
||||
|
||||
public String url = "",
|
||||
title = "";
|
||||
public int count = 0;
|
||||
public Date startDate = new Date(),
|
||||
modifiedDate = new Date();
|
||||
|
||||
public HistoryEntry() {
|
||||
}
|
||||
|
||||
public HistoryEntry fromJSON(JSONObject json) {
|
||||
this.url = json.getString("url");
|
||||
this.title = json.getString("title");
|
||||
this.count = json.getInt("count");
|
||||
this.startDate = new Date(json.getLong("startDate"));
|
||||
this.modifiedDate = new Date(json.getLong("modifiedDate"));
|
||||
return this;
|
||||
}
|
||||
|
||||
public JSONObject toJSON() {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("url", this.url);
|
||||
json.put("title", this.title);
|
||||
json.put("count", this.count);
|
||||
json.put("startDate", this.startDate.getTime());
|
||||
json.put("modifiedDate", this.modifiedDate.getTime());
|
||||
return json;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return this.url;
|
||||
}
|
||||
}
|
@ -539,33 +539,10 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
historyButtonRerip.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent event) {
|
||||
Runnable ripAllThread = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
historyButtonPanel.setEnabled(false);
|
||||
historyList.setEnabled(false);
|
||||
for (int i = 0; i < historyListModel.size(); i++) {
|
||||
historyList.clearSelection();
|
||||
historyList.setSelectedIndex(i);
|
||||
Thread t = ripAlbum( (String) historyListModel.get(i) );
|
||||
if (t == null) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
synchronized (t) {
|
||||
t.wait();
|
||||
}
|
||||
t.join();
|
||||
} catch (InterruptedException e) {
|
||||
logger.error("[!] Exception while waiting for ripper to finish:", e);
|
||||
}
|
||||
}
|
||||
historyList.setEnabled(true);
|
||||
historyButtonPanel.setEnabled(true);
|
||||
}
|
||||
|
||||
};
|
||||
new Thread(ripAllThread).start();
|
||||
for (int i = 0; i < historyListModel.size(); i++) {
|
||||
HistoryEntry entry = (HistoryEntry) historyListModel.get(i);
|
||||
queueListModel.addElement(entry.url);
|
||||
}
|
||||
}
|
||||
});
|
||||
configUpdateButton.addActionListener(new ActionListener() {
|
||||
@ -811,7 +788,7 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
logger.info("Loading history from configuration");
|
||||
history.fromList(Utils.getConfigList("download.history"));
|
||||
}
|
||||
for (History.Entry entry : history.toList()) {
|
||||
for (HistoryEntry entry : history.toList()) {
|
||||
historyListModel.addElement(entry);
|
||||
}
|
||||
}
|
||||
@ -976,8 +953,22 @@ public class MainWindow implements Runnable, RipStatusHandler {
|
||||
break;
|
||||
|
||||
case RIP_COMPLETE:
|
||||
if (!historyListModel.contains(ripTextfield.getText())) {
|
||||
historyListModel.addElement(ripTextfield.getText());
|
||||
boolean alreadyInHistory = false;
|
||||
String url = ripper.getURL().toExternalForm();
|
||||
for (int i = 0; i < historyListModel.size(); i++) {
|
||||
HistoryEntry entry = (HistoryEntry) historyListModel.get(i);
|
||||
if (entry.url.equals(url)) {
|
||||
alreadyInHistory = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!alreadyInHistory) {
|
||||
HistoryEntry entry = new HistoryEntry();
|
||||
entry.url = url;
|
||||
try {
|
||||
entry.title = ripper.getAlbumTitle(ripper.getURL());
|
||||
} catch (MalformedURLException e) { }
|
||||
historyListModel.addElement(entry);
|
||||
}
|
||||
if (configPlaySound.isSelected()) {
|
||||
Utils.playSound("camera.wav");
|
||||
|
Loading…
Reference in New Issue
Block a user