package com.seafile.seadroid2.data;
import com.google.common.collect.Lists;
import com.seafile.seadroid2.util.Utils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
/**
* Commit details for activities history changes
*/
public class CommitDetails {
public List<String> addedFiles;
public List<String> deletedFiles;
public List<String> modifiedFiles;
public List<String> renamedFiles;
public List<String> addedDirs;
public List<String> deletedDirs;
public CommitDetails() {
addedFiles = Lists.newArrayList();
deletedFiles = Lists.newArrayList();
modifiedFiles = Lists.newArrayList();
renamedFiles = Lists.newArrayList();
addedDirs = Lists.newArrayList();
deletedDirs = Lists.newArrayList();
}
public static CommitDetails fromJson(String json) throws JSONException {
final JSONObject jsonObject = Utils.parseJsonObject(json);
final JSONArray addedFiles = jsonObject.optJSONArray("added_files");
final JSONArray deletedFiles = jsonObject.optJSONArray("deleted_files");
final JSONArray modifiedFiles = jsonObject.optJSONArray("modified_files");
final JSONArray renamedFiles = jsonObject.optJSONArray("renamed_files");
final JSONArray addedDirs = jsonObject.optJSONArray("added_dirs");
final JSONArray deletedDirs = jsonObject.optJSONArray("deleted_dirs");
CommitDetails details = new CommitDetails();
processFileList(details.addedFiles, addedFiles);
processFileList(details.deletedFiles, deletedFiles);
processFileList(details.modifiedFiles, modifiedFiles);
processFileList(details.renamedFiles, renamedFiles);
processFileList(details.addedDirs, addedDirs);
processFileList(details.deletedDirs, deletedDirs);
return details;
}
private static void processFileList(List<String> list, JSONArray jsonArray) throws JSONException {
if (jsonArray == null) return;
for (int i = 0; i < jsonArray.length(); i++) {
list.add(jsonArray.getString(i));
}
}
public List<String> getDeletedDirs() {
return deletedDirs;
}
public void setDeletedDirs(List<String> deletedDirs) {
this.deletedDirs = deletedDirs;
}
public List<String> getRenamedFiles() {
return renamedFiles;
}
public void setRenamedFiles(List<String> renamedFiles) {
this.renamedFiles = renamedFiles;
}
public List<String> getModifiedFiles() {
return modifiedFiles;
}
public void setModifiedFiles(List<String> modifiedFiles) {
this.modifiedFiles = modifiedFiles;
}
public List<String> getAddedFiles() {
return addedFiles;
}
public void setAddedFiles(List<String> addedFiles) {
this.addedFiles = addedFiles;
}
public List<String> getDeletedFiles() {
return deletedFiles;
}
public void setDeletedFiles(List<String> deletedFiles) {
this.deletedFiles = deletedFiles;
}
public List<String> getAddedDirs() {
return addedDirs;
}
public void setAddedDirs(List<String> addedDirs) {
this.addedDirs = addedDirs;
}
}