package com.seafile.seadroid2.data;
import com.google.common.collect.Lists;
import com.seafile.seadroid2.data.EventDetailsFileItem.EType;
import java.util.List;
/**
* Event details tree of each commit
*/
public class EventDetailsTree {
private List<EventDetailsFileItem> items;
private SeafEvent event;
public EventDetailsTree(SeafEvent event) {
this.items = Lists.newArrayList();
this.event = event;
}
public List<EventDetailsFileItem> setCommitDetails(CommitDetails details) {
items.clear();
processEventCategory(details.addedFiles, "Added files", EType.FILE_ADDED);
processEventCategory(details.deletedFiles, "Deleted files", EType.FILE_DELETED);
processEventCategory(details.modifiedFiles, "Modified files", EType.FILE_MODIFIED);
processEventCategory(details.addedDirs, "Added folders", EType.DIR_ADDED);
processEventCategory(details.deletedDirs, "Deleted folders", EType.DIR_DELETED);
// renamed files is a list of (before rename, after rename) pair
List<String> renamedFiles = Lists.newArrayList();
for (int i = 1, n = details.renamedFiles.size(); i < n; i += 2) {
final String rename = details.renamedFiles.get(i);
renamedFiles.add(rename);
}
processEventCategory(renamedFiles, "Renamed files", EType.FILE_RENAMED);
return items;
}
private void processEventCategory(List<String> files, String desc, EType etype) {
if (files == null || files.isEmpty()) {
return;
}
for (int i = 0, n = files.size(); i < n; i++) {
EventDetailsFileItem item = new EventDetailsFileItem(event, files.get(i), etype);
items.add(item);
}
}
}