Refactor, TODO

This commit is contained in:
jendib 2015-05-09 23:34:43 +02:00
parent 52387d93ac
commit 25136bc146
2 changed files with 45 additions and 22 deletions

View File

@ -71,17 +71,22 @@ public class DocumentViewActivity extends AppCompatActivity {
/** /**
* File view pager. * File view pager.
*/ */
ViewPager fileViewPager; private ViewPager fileViewPager;
/** /**
* File pager adapter. * File pager adapter.
*/ */
FilePagerAdapter filePagerAdapter; private FilePagerAdapter filePagerAdapter;
/** /**
* Document displayed. * Document displayed.
*/ */
JSONObject document; private JSONObject document;
/**
* Menu.
*/
private Menu menu;
@Override @Override
protected void onCreate(final Bundle args) { protected void onCreate(final Bundle args) {
@ -181,29 +186,16 @@ public class DocumentViewActivity extends AppCompatActivity {
// Grab the attached files // Grab the attached files
updateFiles(); updateFiles();
// Grab the full document (used for ACLs and writable status)
updateDocument();
} }
@Override @Override
public boolean onCreateOptionsMenu(final Menu menu) { public boolean onCreateOptionsMenu(final Menu menu) {
MenuInflater inflater = getMenuInflater(); MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.document_view_activity, menu); inflater.inflate(R.menu.document_view_activity, menu);
this.menu = menu;
// Silently get the document to know if it is writable by the current user
// If this call fails or is slow and the document is read-only,
// write actions will be allowed and will fail
DocumentResource.get(this, document.optString("id"), new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
boolean writable = response.optBoolean("writable");
menu.findItem(R.id.share).setVisible(writable);
menu.findItem(R.id.upload_file).setVisible(writable);
menu.findItem(R.id.edit).setVisible(writable);
menu.findItem(R.id.delete_file).setVisible(writable);
menu.findItem(R.id.delete_document).setVisible(writable);
}
});
return super.onCreateOptionsMenu(menu); return super.onCreateOptionsMenu(menu);
} }
@ -510,6 +502,33 @@ public class DocumentViewActivity extends AppCompatActivity {
} }
} }
/**
* Update the document model.
*/
private void updateDocument() {
if (document == null) return;
// Silently get the document to know if it is writable by the current user
// If this call fails or is slow and the document is read-only,
// write actions will be allowed and will fail
DocumentResource.get(this, document.optString("id"), new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
boolean writable = response.optBoolean("writable");
if (menu != null) {
menu.findItem(R.id.share).setVisible(writable);
menu.findItem(R.id.upload_file).setVisible(writable);
menu.findItem(R.id.edit).setVisible(writable);
menu.findItem(R.id.delete_file).setVisible(writable);
menu.findItem(R.id.delete_document).setVisible(writable);
}
// TODO Show the ACLs in a sliding panel from the right
}
});
}
/** /**
* Refresh files list. * Refresh files list.
*/ */

View File

@ -103,7 +103,7 @@ public class DocumentResource extends BaseResource {
document.put("description", documentDb.getDescription()); document.put("description", documentDb.getDescription());
document.put("create_date", documentDb.getCreateDate().getTime()); document.put("create_date", documentDb.getCreateDate().getTime());
document.put("language", documentDb.getLanguage()); document.put("language", documentDb.getLanguage());
document.put("creator", userDao.getById(documentDb.getUserId()).getUsername()); // TODO Add "shared" and "file_count" -> rewrite the query in SQL
if (principal.isAnonymous()) { if (principal.isAnonymous()) {
// No tags in anonymous mode (sharing) // No tags in anonymous mode (sharing)
@ -123,6 +123,10 @@ public class DocumentResource extends BaseResource {
document.put("tags", tags); document.put("tags", tags);
} }
// Below is specific to GET /document/id
document.put("creator", userDao.getById(documentDb.getUserId()).getUsername());
// Add ACL // Add ACL
List<AclDto> aclDtoList = aclDao.getBySourceId(documentId); List<AclDto> aclDtoList = aclDao.getBySourceId(documentId);
List<JSONObject> aclList = new ArrayList<>(); List<JSONObject> aclList = new ArrayList<>();
@ -190,8 +194,8 @@ public class DocumentResource extends BaseResource {
document.put("title", documentDto.getTitle()); document.put("title", documentDto.getTitle());
document.put("description", documentDto.getDescription()); document.put("description", documentDto.getDescription());
document.put("create_date", documentDto.getCreateTimestamp()); document.put("create_date", documentDto.getCreateTimestamp());
document.put("shared", documentDto.getShared());
document.put("language", documentDto.getLanguage()); document.put("language", documentDto.getLanguage());
document.put("shared", documentDto.getShared());
document.put("file_count", documentDto.getFileCount()); document.put("file_count", documentDto.getFileCount());
// Get tags added by the current user on this document // Get tags added by the current user on this document