Added some missing classes to Repository

This commit is contained in:
Marius Metzger
2015-02-20 23:03:01 +01:00
parent f7497aea2e
commit 5ce12162ce
3 changed files with 115 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
package eu.crushedpixel.replaymod.api.client;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import eu.crushedpixel.replaymod.ReplayMod;
import eu.crushedpixel.replaymod.api.client.holders.FileInfo;
public class SearchPagination {
private int page;
private List<FileInfo> files = new ArrayList<FileInfo>();
private final SearchQuery searchQuery;
public SearchPagination(SearchQuery searchQuery) {
this.page = -1;
this.searchQuery = searchQuery;
}
public List<FileInfo> getFiles() {
return new ArrayList<FileInfo>(files);
}
public int getLoadedPages() {
return page;
}
public boolean fetchPage() {
page++;
searchQuery.offset = page;
try {
FileInfo[] fis = ReplayMod.apiClient.searchFiles(searchQuery);
if(fis.length <= 1) {
page--;
return false;
}
files.addAll(Arrays.asList(fis));
return true;
} catch(Exception e) {
e.printStackTrace();
}
page--;
return false;
}
}

View File

@@ -0,0 +1,55 @@
package eu.crushedpixel.replaymod.api.client;
import java.lang.reflect.Field;
import java.net.URLEncoder;
public class SearchQuery {
public Boolean order, singleplayer;
public String player, tag, version, server, name, auth;
public Integer category, offset;
public SearchQuery() {}
public SearchQuery(Boolean order, Boolean singleplayer, String player,
String tag, String version, String server, String name,
String auth, Integer category, Integer offset) {
this.order = order;
this.singleplayer = singleplayer;
this.player = player;
this.tag = tag;
this.version = version;
this.server = server;
this.name = name;
this.auth = auth;
this.category = category;
this.offset = offset;
}
public String buildQuery() {
String query = "";
boolean first = true;
//Please don't slaughter me for this code,
//even if I deserve it, which I certainly do.
for(Field f : this.getClass().getDeclaredFields()) {
try {
Object value = f.get(this);
if(value == null) continue;
query += first ? "?" : "&";
first = false;
query += f.getName()+"=";
query += URLEncoder.encode(String.valueOf(value), "UTF-8");
} catch(Exception e) {
e.printStackTrace();
}
}
return query;
}
@Override
public String toString() {
return buildQuery();
}
}

View File

@@ -0,0 +1,10 @@
package eu.crushedpixel.replaymod.api.client.holders;
public class SearchResult {
private FileInfo[] results;
public FileInfo[] getResults() {
return results;
}
}