From 6591cf8f95ce90ecd2624118574034b7ae76f939 Mon Sep 17 00:00:00 2001 From: Gilbert Kimutai Date: Mon, 8 Jul 2019 06:19:41 +0300 Subject: [PATCH] added cart abstraction --- .idea/gradle.xml | 1 + build.gradle | 8 +- core/.gitignore | 1 + core/build.gradle | 34 ++++ core/proguard-rules.pro | 21 +++ .../woodroid/core/ExampleInstrumentedTest.kt | 24 +++ core/src/main/AndroidManifest.xml | 2 + .../me/gilo/woodroid/core/cart/CartFilter.kt | 5 + .../me/gilo/woodroid/core/cart/CartItem.kt | 13 ++ .../gilo/woodroid/core/cart/CartRepository.kt | 17 ++ .../java/me/gilo/woodroid/core/cart/Option.kt | 5 + .../woodroid/core/models/AttributeTerm.kt | 15 ++ .../woodroid/core/models/BillingAddress.kt | 32 ++++ .../me/gilo/woodroid/core/models/Category.kt | 15 ++ .../me/gilo/woodroid/core/models/Coupon.kt | 34 ++++ .../me/gilo/woodroid/core/models/Customer.kt | 48 +++++ .../gilo/woodroid/core/models/CustomerPost.kt | 12 ++ .../java/me/gilo/woodroid/core/models/Data.kt | 5 + .../woodroid/core/models/DefaultAttribute.kt | 11 ++ .../me/gilo/woodroid/core/models/Dimension.kt | 22 +++ .../me/gilo/woodroid/core/models/Download.kt | 9 + .../me/gilo/woodroid/core/models/FeeLine.kt | 4 + .../me/gilo/woodroid/core/models/Image.kt | 18 ++ .../me/gilo/woodroid/core/models/LineItem.kt | 26 +++ .../java/me/gilo/woodroid/core/models/Meta.kt | 25 +++ .../me/gilo/woodroid/core/models/Metadata.kt | 10 + .../me/gilo/woodroid/core/models/Metum.kt | 8 + .../me/gilo/woodroid/core/models/Order.kt | 73 ++++++++ .../me/gilo/woodroid/core/models/OrderData.kt | 5 + .../me/gilo/woodroid/core/models/OrderNote.kt | 15 ++ .../woodroid/core/models/PaymentDetails.kt | 12 ++ .../woodroid/core/models/PaymentGateway.kt | 14 ++ .../core/models/PaymentGatewaySetting.kt | 16 ++ .../me/gilo/woodroid/core/models/Product.kt | 73 ++++++++ .../woodroid/core/models/ProductAttribute.kt | 2 +- .../woodroid/core/models/ProductReview.kt | 20 ++ .../me/gilo/woodroid/core/models/Refund.kt | 17 ++ .../gilo/woodroid/core/models/SettingGroup.kt | 11 ++ .../woodroid/core/models/SettingOption.kt | 19 ++ .../woodroid/core/models/ShippingAddress.kt | 27 +++ .../woodroid/core/models/ShippingClass.kt | 11 ++ .../gilo/woodroid/core/models/ShippingLine.kt | 12 ++ .../woodroid/core/models/ShippingMethod.kt | 10 + .../gilo/woodroid/core/models/ShippingZone.kt | 9 + .../me/gilo/woodroid/core/models/Store.kt | 20 ++ .../java/me/gilo/woodroid/core/models/Tag.kt | 9 + .../me/gilo/woodroid/core/models/TaxClass.kt | 6 + .../me/gilo/woodroid/core/models/TaxLine.kt | 11 ++ .../me/gilo/woodroid/core/models/TaxRate.kt | 15 ++ .../gilo/woodroid/core/models/TopSellers.kt | 7 + .../me/gilo/woodroid/core/models/Variation.kt | 86 +++++++++ .../me/gilo/woodroid/core/models/Webhook.kt | 19 ++ .../woodroid/core/models/WebhookDelivery.kt | 19 ++ .../core/models/filters/CouponFilter.kt | 15 ++ .../core/models/filters/CustomerFilter.kt | 32 ++++ .../woodroid/core/models/filters/Filter.kt | 28 +++ .../core/models/filters/ListFilter.kt | 171 ++++++++++++++++++ .../core/models/filters/OrderFilter.kt | 66 +++++++ .../core/models/filters/OrderNoteFilter.kt | 18 ++ .../models/filters/ProductAttributeFilter.kt | 28 +++ .../filters/ProductAttributeTermFilter.kt | 32 ++++ .../models/filters/ProductCategoryFilter.kt | 39 ++++ .../core/models/filters/ProductFilter.kt | 138 ++++++++++++++ .../models/filters/ProductReviewFilter.kt | 61 +++++++ .../core/models/filters/ProductTagFilter.kt | 34 ++++ .../models/filters/ProductVariationFilter.kt | 140 ++++++++++++++ .../core/models/filters/RefundFilter.kt | 32 ++++ .../core/models/filters/ReportsDateFilter.kt | 38 ++++ .../gilo/woodroid/core/models/filters/Role.kt | 49 +++++ .../models/filters/ShippingClassesFilter.kt | 34 ++++ .../gilo/woodroid/core/models/filters/Sort.kt | 15 ++ .../core/models/filters/WebhookFilter.kt | 15 ++ .../core/models/report/CouponsTotal.kt | 8 + .../core/models/report/CustomersTotal.kt | 8 + .../core/models/report/OrdersTotal.kt | 8 + .../core/models/report/ProductsTotal.kt | 8 + .../core/models/report/ReviewsTotal.kt | 8 + .../core/models/report/SalesPeriodTotal.kt | 13 ++ .../woodroid/core/models/report/SalesTotal.kt | 17 ++ .../core/models/report/TopSellerProducts.kt | 8 + core/src/main/res/values/strings.xml | 3 + .../me/gilo/woodroid/core/ExampleUnitTest.kt | 17 ++ firebasecart/build.gradle | 18 ++ .../firebasecart/FirebaseCartRepository.kt | 47 +++++ .../common/CompletionDocLiveData.java | 25 +++ .../common/CompletionGenericLiveData.kt | 21 +++ .../common/CompletionLiveData.java | 24 +++ .../firebasecart/common/DocumentLiveData.java | 41 +++++ .../firebasecart/common/QueryLiveData.java | 63 +++++++ .../firebasecart/common/Resource.java | 78 ++++++++ .../woodroid/firebasecart/common/Status.java | 12 ++ .../firebasecart/models/CartLineItem.java | 73 ++++++++ .../firebasecart/models/Identifiable.java | 18 ++ .../woodroid/firebasecart/models/Model.java | 37 ++++ .../firebasecart/models/Repository.java | 45 +++++ .../woodroid/firebasecart/models/User.java | 85 +++++++++ settings.gradle | 2 +- .../woodroid/data/api/ProductAttributeAPI.kt | 34 ++-- .../data/api/ProductAttributeTermAPI.kt | 16 +- .../java/me/gilo/woodroid/models/Customer.kt | 12 ++ .../java/me/gilo/woodroid/models/Product.kt | 2 +- .../gilo/woodroid/models/ProductAttribute.kt | 14 ++ .../java/me/gilo/woodroid/models/Variation.kt | 2 +- .../repo/product/AttributeRepository.kt | 20 +- 104 files changed, 2691 insertions(+), 44 deletions(-) create mode 100644 core/.gitignore create mode 100644 core/build.gradle create mode 100644 core/proguard-rules.pro create mode 100644 core/src/androidTest/java/me/gilo/woodroid/core/ExampleInstrumentedTest.kt create mode 100644 core/src/main/AndroidManifest.xml create mode 100644 core/src/main/java/me/gilo/woodroid/core/cart/CartFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/cart/CartRepository.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/cart/Option.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/AttributeTerm.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/BillingAddress.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Category.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Coupon.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Customer.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/CustomerPost.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Data.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/DefaultAttribute.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Dimension.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Download.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/FeeLine.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Image.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/LineItem.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Meta.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Metadata.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Metum.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Order.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/OrderData.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/OrderNote.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/PaymentDetails.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/PaymentGateway.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/PaymentGatewaySetting.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Product.kt rename woodroid/src/main/java/me/gilo/woodroid/models/Attribute.kt => core/src/main/java/me/gilo/woodroid/core/models/ProductAttribute.kt (88%) create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/ProductReview.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Refund.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/SettingGroup.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/SettingOption.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/ShippingAddress.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/ShippingClass.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/ShippingLine.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/ShippingMethod.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/ShippingZone.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Store.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Tag.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/TaxClass.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/TaxLine.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/TaxRate.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/TopSellers.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Variation.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/Webhook.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/WebhookDelivery.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/CouponFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/CustomerFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/Filter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ListFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/OrderFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/OrderNoteFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ProductAttributeFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ProductAttributeTermFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ProductCategoryFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ProductFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ProductReviewFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ProductTagFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ProductVariationFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/RefundFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ReportsDateFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/Role.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/ShippingClassesFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/Sort.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/filters/WebhookFilter.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/CouponsTotal.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/CustomersTotal.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/OrdersTotal.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/ProductsTotal.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/ReviewsTotal.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/SalesPeriodTotal.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/SalesTotal.kt create mode 100644 core/src/main/java/me/gilo/woodroid/core/models/report/TopSellerProducts.kt create mode 100644 core/src/main/res/values/strings.xml create mode 100644 core/src/test/java/me/gilo/woodroid/core/ExampleUnitTest.kt create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/FirebaseCartRepository.kt create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/common/CompletionDocLiveData.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/common/CompletionGenericLiveData.kt create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/common/CompletionLiveData.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/common/DocumentLiveData.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/common/QueryLiveData.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/common/Resource.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/common/Status.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/models/CartLineItem.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/models/Identifiable.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/models/Model.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/models/Repository.java create mode 100644 firebasecart/src/main/java/me/gilo/woodroid/firebasecart/models/User.java create mode 100644 woodroid/src/main/java/me/gilo/woodroid/models/ProductAttribute.kt diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 5eac64c..8d1b9aa 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -9,6 +9,7 @@ diff --git a/build.gradle b/build.gradle index 2db2022..3b68ce5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,12 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. -buildscript { +buildscript { ext.kotlin_version = '1.3.21' - ext.kotlin_version = '1.3.31' - ext.kotlin_version = '1.3.31' repositories { google() jcenter() - + } dependencies { classpath 'com.android.tools.build:gradle:3.5.0-alpha08' @@ -24,7 +22,7 @@ allprojects { google() jcenter() maven { url 'https://jitpack.io' } - + } } diff --git a/core/.gitignore b/core/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/core/.gitignore @@ -0,0 +1 @@ +/build diff --git a/core/build.gradle b/core/build.gradle new file mode 100644 index 0000000..9cda62f --- /dev/null +++ b/core/build.gradle @@ -0,0 +1,34 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +android { + compileSdkVersion 28 + + + defaultConfig { + minSdkVersion 15 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'com.android.support:appcompat-v7:28.0.0' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} diff --git a/core/proguard-rules.pro b/core/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/core/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/core/src/androidTest/java/me/gilo/woodroid/core/ExampleInstrumentedTest.kt b/core/src/androidTest/java/me/gilo/woodroid/core/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..b33cde4 --- /dev/null +++ b/core/src/androidTest/java/me/gilo/woodroid/core/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package me.gilo.woodroid.core + +import android.support.test.InstrumentationRegistry +import android.support.test.runner.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("me.gilo.woodroid.core.test", appContext.packageName) + } +} diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml new file mode 100644 index 0000000..ed52063 --- /dev/null +++ b/core/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/core/src/main/java/me/gilo/woodroid/core/cart/CartFilter.kt b/core/src/main/java/me/gilo/woodroid/core/cart/CartFilter.kt new file mode 100644 index 0000000..5c14d44 --- /dev/null +++ b/core/src/main/java/me/gilo/woodroid/core/cart/CartFilter.kt @@ -0,0 +1,5 @@ +package me.gilo.woodroid.core.cart + +class CartFilter(var cart_item_key: String) { + var quantity: Int = 0 +} diff --git a/core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt b/core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt new file mode 100644 index 0000000..14fa297 --- /dev/null +++ b/core/src/main/java/me/gilo/woodroid/core/cart/CartItem.kt @@ -0,0 +1,13 @@ +package me.gilo.woodroid.core.cart + +import me.gilo.woodroid.models.Product +import java.util.ArrayList + +/** + * Created by gilo on 2/18/16. + */ +class CartItem { + lateinit var product: Product + lateinit var options: ArrayList