1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
package it.niedermann.nextcloud.deck.persistence.sync.helpers.providers;
import android.content.ContentResolver;
import android.net.Uri;
import android.webkit.MimeTypeMap;
import java.io.File;
import java.util.Date;
import java.util.List;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.api.IResponseCallback;
import it.niedermann.nextcloud.deck.model.Attachment;
import it.niedermann.nextcloud.deck.model.Board;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.Stack;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.ServerAdapter;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.DataBaseAdapter;
public class AttachmentDataProvider extends AbstractSyncDataProvider<Attachment> {
private FullCard card;
private List<Attachment> attachments;
public AttachmentDataProvider(AbstractSyncDataProvider<?> parent, FullCard card, List<Attachment> attachments) {
super(parent);
this.card = card;
this.attachments = attachments;
}
@Override
public void getAllFromServer(ServerAdapter serverAdapter, long accountId, IResponseCallback<List<Attachment>> responder, Date lastSync) {
responder.onResponse(attachments);
}
@Override
public Attachment getSingleFromDB(DataBaseAdapter dataBaseAdapter, long accountId, Attachment entity) {
return dataBaseAdapter.getAttachmentByRemoteIdDirectly(accountId, entity.getId());
}
@Override
public long createInDB(DataBaseAdapter dataBaseAdapter, long accountId, Attachment attachment) {
attachment.setCardId(card.getCard().getLocalId());
return dataBaseAdapter.createAttachment(accountId, attachment);
}
@Override
public void updateInDB(DataBaseAdapter dataBaseAdapter, long accountId, Attachment attachment, boolean setStatus) {
attachment.setCardId(card.getCard().getLocalId());
dataBaseAdapter.updateAttachment(accountId, attachment, setStatus);
}
@Override
public void updateInDB(DataBaseAdapter dataBaseAdapter, long accountId, Attachment entity) {
updateInDB(dataBaseAdapter, accountId, entity, false);
}
@Override
public void deleteInDB(DataBaseAdapter dataBaseAdapter, long accountId, Attachment attachment) {
dataBaseAdapter.deleteAttachment(accountId, attachment, false);
}
@Override
public void createOnServer(ServerAdapter serverAdapter, DataBaseAdapter dataBaseAdapter, long accountId, IResponseCallback<Attachment> responder, Attachment entity) {
Card card = dataBaseAdapter.getCardByLocalIdDirectly(accountId, entity.getCardId());
Stack stack = dataBaseAdapter.getStackByLocalIdDirectly(card.getStackId());
Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getBoardId());
ContentResolver cR = dataBaseAdapter.getContext().getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton();
Uri uri = Uri.fromFile(new File(entity.getLocalPath()));
String type = mime.getExtensionFromMimeType(cR.getType(uri));
serverAdapter.uploadAttachment(board.getId(), stack.getId(), card.getId(), type, uri, new IResponseCallback<Attachment>(dataBaseAdapter.readAccountDirectly(accountId)) {
@Override
public void onResponse(Attachment response) {
DeckLog.log("uploading " + uri.getPath() + " successful.");
}
});
}
@Override
public void updateOnServer(ServerAdapter serverAdapter, DataBaseAdapter dataBaseAdapter, long accountId, IResponseCallback<Attachment> callback, Attachment entity) {
//TODO: implement
}
@Override
public void deleteOnServer(ServerAdapter serverAdapter, long accountId, IResponseCallback<Void> callback, Attachment entity, DataBaseAdapter dataBaseAdapter) {
//TODO: implement
}
@Override
public List<Attachment> getAllChangedFromDB(DataBaseAdapter dataBaseAdapter, long accountId, Date lastSync) {
return null;
}
}
|