add DB helper layer
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/80108f11 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/80108f11 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/80108f11 Branch: refs/heads/master Commit: 80108f119bce8100a269328271d6d6075e6952a1 Parents: e5ec7c3 Author: Sagar <[email protected]> Authored: Mon Jul 4 14:59:12 2016 +0530 Committer: Sagar <[email protected]> Committed: Mon Jul 4 14:59:12 2016 +0530 ---------------------------------------------------------------------- .../taverna/mobile/data/local/DBHelper.java | 106 +++++++++++++++++++ 1 file changed, 106 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/80108f11/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java ---------------------------------------------------------------------- diff --git a/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java b/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java new file mode 100644 index 0000000..a6a86f8 --- /dev/null +++ b/app/src/main/java/org/apache/taverna/mobile/data/local/DBHelper.java @@ -0,0 +1,106 @@ +package org.apache.taverna.mobile.data.local; + + +import com.raizlabs.android.dbflow.sql.language.SQLite; + +import org.apache.taverna.mobile.data.model.Workflow; +import org.apache.taverna.mobile.data.model.Workflow_Table; +import org.apache.taverna.mobile.data.model.Workflows; + +import android.support.annotation.Nullable; + +import rx.Observable; +import rx.Subscriber; + + +public class DBHelper { + + + public DBHelper() { + + } + + @Nullable + public Observable<Workflows> syncWorkflows(final Workflows workflows) { + return Observable.create(new Observable.OnSubscribe<Workflows>() { + @Override + public void call(Subscriber<? super Workflows> subscriber) { + if (subscriber.isUnsubscribed()) return; + for (Workflow workflow : workflows.getWorkflowList()) { + if (!workflow.exists()) { + workflow.save(); + } else { + updateWorkflow(workflow).save(); + } + + } + subscriber.onNext(workflows); + subscriber.onCompleted(); + } + }); + } + + private Workflow updateWorkflow(Workflow workflow) { + Workflow workflow1 = SQLite.select() + .from(Workflow.class) + .where(Workflow_Table.id.eq(workflow.getId())) + .querySingle(); + if (workflow1 != null) { + if (workflow.getDescription() == null || !workflow.getDescription().equals(workflow1.getDescription())) { + + workflow1.setDescription(workflow.getDescription()); + } + if (workflow.getUpdatedAt() == null || !workflow.getUpdatedAt().equals(workflow1.getUpdatedAt())) { + + workflow1.setUpdatedAt(workflow.getUpdatedAt()); + } + if (workflow.getSvgUri() == null || !workflow.getSvgUri().equals(workflow1.getSvgUri())) { + + workflow1.setSvgUri(workflow.getSvgUri()); + } + if (workflow.getLicenseType() == null || !workflow.getLicenseType().equals(workflow1.getLicenseType())) { + + workflow1.setLicenseType(workflow.getLicenseType()); + } + if (workflow.getContentUri() == null || !workflow.getContentUri().equals(workflow1.getContentUri())) { + + workflow1.setContentUri(workflow.getContentUri()); + } + if (workflow.getContentType() == null || !workflow.getContentType().equals(workflow1.getContentType())) { + + workflow1.setContentUri(workflow.getContentType()); + } + + workflow1.setTitle(workflow.getTitle()); + workflow1.setType(workflow.getType()); + workflow1.setUploader(workflow.getUploader()); + workflow1.setPreviewUri(workflow.getPreviewUri()); + workflow1.setCreatedAt(workflow.getCreatedAt()); + workflow1.setResource(workflow.getResource()); + workflow1.setUri(workflow.getUri()); + workflow1.setId(workflow.getId()); + workflow1.setVersion(workflow.getVersion()); + + } + return workflow; + } + + + public Observable<Workflow> syncWorkflow(final Workflow workflow) { + return Observable.create(new Observable.OnSubscribe<Workflow>() { + @Override + public void call(Subscriber<? super Workflow> subscriber) { + if (subscriber.isUnsubscribed()) return; + workflow.getType().save(); + workflow.getUploader().save(); + workflow.getLicenseType().save(); + workflow.save(); + subscriber.onNext(workflow); + subscriber.onCompleted(); + } + }); + } + + +} +
