/** @author Greg Hinkle */ public class ContentRepositoryTreeDataSource extends RPCDataSource<Repo, RepoCriteria> { private RepoGWTServiceAsync repoService = GWTServiceLookup.getRepoService(); public ContentRepositoryTreeDataSource() { super(); List<DataSourceField> fields = addDataSourceFields(); addFields(fields); } @Override protected List<DataSourceField> addDataSourceFields() { List<DataSourceField> fields = super.addDataSourceFields(); DataSourceField idDataField = new DataSourceTextField("id", MSG.common_title_id()); idDataField.setPrimaryKey(true); fields.add(idDataField); DataSourceTextField nameDataField = new DataSourceTextField("name", MSG.common_title_name()); nameDataField.setCanEdit(false); fields.add(nameDataField); DataSourceTextField parentIdField = new DataSourceTextField("parentId", MSG.dataSource_ContentRepoTree_field_parentId()); parentIdField.setForeignKey("id"); fields.add(parentIdField); return fields; } @Override protected void executeFetch( final DSRequest request, final DSResponse response, final RepoCriteria criteria) { repoService.findReposByCriteria( criteria, new AsyncCallback<PageList<Repo>>() { public void onFailure(Throwable caught) { CoreGUI.getErrorHandler() .handleError(MSG.dataSource_ContentRepoTree_error_load(), caught); } public void onSuccess(PageList<Repo> result) { response.setData(buildRecords(result)); processResponse(request.getRequestId(), response); } }); } @Override protected RepoCriteria getFetchCriteria(final DSRequest request) { RepoCriteria criteria = new RepoCriteria(); return criteria; } @Override public Repo copyValues(Record from) { return null; // TODO: Implement this method. } @Override public ListGridRecord copyValues(Repo from) { TreeNode record = new TreeNode(); record.setID(String.valueOf(from.getId())); record.setName(from.getName()); record.setAttribute("id", from.getId()); record.setAttribute("name", from.getName()); record.setAttribute("description", from.getDescription()); record.setAttribute("syncSchedule", from.getSyncSchedule()); record.setAttribute("syncStatus", from.getSyncStatus()); record.setIsFolder(false); // don't attempt to load any children return record; } }