Skip to content

Commit b237af7

Browse files
committed
added categories basic functions
1 parent deb842f commit b237af7

File tree

7 files changed

+212
-22
lines changed

7 files changed

+212
-22
lines changed

AndroidWoocommerceSDK/src/main/java/com/amirshiati/androidwoocommercesdk/CategoryManager.java

Lines changed: 137 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package com.amirshiati.androidwoocommercesdk;
22

33
import android.net.Uri;
4+
import android.util.Log;
45

56
import com.amirshiati.androidwoocommercesdk.enums.CategoryManagerType;
7+
import com.amirshiati.androidwoocommercesdk.enums.Order;
8+
import com.amirshiati.androidwoocommercesdk.enums.OrderBy;
69
import com.amirshiati.androidwoocommercesdk.enums.ProductManagerType;
710
import com.amirshiati.androidwoocommercesdk.helper.CategoryJsonConverter;
11+
import com.amirshiati.androidwoocommercesdk.helper.ProductJsonConverter;
812
import com.amirshiati.androidwoocommercesdk.helper.Utils;
913
import com.amirshiati.androidwoocommercesdk.helper.Volley;
1014
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetCategoriesFinished;
15+
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetCategoryFinished;
1116
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetJsonArrayFinished;
17+
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetJsonObjectFinished;
1218
import com.amirshiati.androidwoocommercesdk.model.Category;
1319
import com.android.volley.Request;
1420
import com.android.volley.VolleyError;
1521

1622
import org.json.JSONArray;
23+
import org.json.JSONObject;
1724

1825
import java.io.UnsupportedEncodingException;
1926
import java.util.ArrayList;
@@ -25,9 +32,18 @@ public class CategoryManager {
2532
private Volley volley;
2633

2734
private OnGetCategoriesFinished onGetCategoriesFinished;
28-
35+
private OnGetCategoryFinished onGetCategoryFinished;
2936
private int page = 1;
3037
private int perPage = 10;
38+
private String search;
39+
private Order order;
40+
private OrderBy orderBy;
41+
private Boolean hideEmpty;
42+
private Long parent;
43+
private Long product;
44+
private String slug;
45+
private int[] include;
46+
private int[] exclude;
3147

3248
public CategoryManager(Uri.Builder builder, CategoryManagerType type, Volley volley) {
3349
this.builder = builder;
@@ -40,6 +56,11 @@ public CategoryManager addGetCategoriesCallBack(OnGetCategoriesFinished onGetCat
4056
return this;
4157
}
4258

59+
public CategoryManager addGetCategoryCallBack(OnGetCategoryFinished onGetCategoryFinished) {
60+
this.onGetCategoryFinished = onGetCategoryFinished;
61+
return this;
62+
}
63+
4364
public CategoryManager setPage(int page) {
4465
this.page = page;
4566
return this;
@@ -50,27 +71,103 @@ public CategoryManager setPerPage(int perPage) {
5071
return this;
5172
}
5273

74+
public CategoryManager search(String search) {
75+
this.search = search;
76+
return this;
77+
}
78+
79+
public CategoryManager setOrder(Order order) {
80+
this.order = order;
81+
return this;
82+
}
83+
84+
public CategoryManager setOrderBy(OrderBy orderBy) {
85+
this.orderBy = orderBy;
86+
return this;
87+
}
88+
89+
public CategoryManager hideEmpty(boolean hideEmpty) {
90+
this.hideEmpty = hideEmpty;
91+
return this;
92+
}
93+
94+
public CategoryManager setParent(long parent) {
95+
this.parent = parent;
96+
return this;
97+
}
98+
99+
public CategoryManager setProduct(long product) {
100+
this.product = product;
101+
return this;
102+
}
103+
104+
public CategoryManager slug(String slug) {
105+
this.slug = slug;
106+
return this;
107+
}
108+
109+
public CategoryManager setInclude(int[] include) {
110+
this.include = include;
111+
return this;
112+
}
113+
114+
public CategoryManager setExclude(int[] exclude) {
115+
this.exclude = exclude;
116+
return this;
117+
}
53118

54119
public void start() {
55120
switch (type) {
56121
case GETCATEGORIES:
57122
getCategories(this, setBuilder(this));
58123
break;
59124

125+
case GETCATEGORY:
126+
setBuilder(this);
127+
getCategory(this);
128+
60129
default:
61130
return;
62131
}
63132
}
64133

65134
private String setBuilder(final CategoryManager categoryManager) {
66-
// if (categoryManager.type == ProductManagerType.GETPRODUCT)
67-
// return categoryManager.builder.build().toString();
135+
if (categoryManager.type == CategoryManagerType.GETCATEGORY)
136+
return categoryManager.builder.build().toString();
68137

69138
String array = "";
70139

71140
categoryManager.builder.appendQueryParameter("page", String.valueOf(categoryManager.page));
72141
categoryManager.builder.appendQueryParameter("per_page", String.valueOf(categoryManager.perPage));
73142

143+
if (!Utils.stringEmpty(categoryManager.search))
144+
categoryManager.builder.appendQueryParameter("search", categoryManager.search);
145+
146+
if (categoryManager.order != null)
147+
categoryManager.builder.appendQueryParameter("order", Utils.setBuilderOrder(categoryManager.order));
148+
149+
if (categoryManager.orderBy != null)
150+
categoryManager.builder.appendQueryParameter("orderby", Utils.setBuilderOrderBy(categoryManager.orderBy));
151+
152+
if (categoryManager.hideEmpty != null)
153+
categoryManager.builder.appendQueryParameter("hide_empty", String.valueOf(categoryManager.hideEmpty));
154+
155+
if (categoryManager.parent != null)
156+
categoryManager.builder.appendQueryParameter("parent", String.valueOf(categoryManager.parent));
157+
158+
if (categoryManager.product != null)
159+
categoryManager.builder.appendQueryParameter("product", String.valueOf(categoryManager.product));
160+
161+
if (!Utils.stringEmpty(categoryManager.slug))
162+
categoryManager.builder.appendQueryParameter("slug", categoryManager.slug);
163+
164+
if (categoryManager.include != null)
165+
array += Utils.includeId(categoryManager.include, "include");
166+
167+
if (categoryManager.exclude != null)
168+
array += Utils.includeId(categoryManager.exclude, "exclude");
169+
170+
74171
return categoryManager.builder.build().toString() + array;
75172

76173
}
@@ -117,4 +214,41 @@ public void onFail(VolleyError error) {
117214
}
118215
});
119216
}
217+
218+
private void getCategory(final CategoryManager categoryManager) {
219+
volley.basicAuthJsonObjReq(
220+
Request.Method.GET,
221+
builder.build().toString(),
222+
null,
223+
new OnGetJsonObjectFinished() {
224+
@Override
225+
public void onSuccess(JSONObject response) {
226+
try {
227+
if (categoryManager.onGetCategoryFinished != null)
228+
categoryManager.onGetCategoryFinished.onSuccess(CategoryJsonConverter.jsonToCategory(response));
229+
230+
} catch (Exception e) {
231+
if (categoryManager.onGetCategoryFinished != null)
232+
categoryManager.onGetCategoryFinished.onFail(" Error: " + e.getMessage());
233+
}
234+
}
235+
236+
@Override
237+
public void onFail(VolleyError error) {
238+
error.printStackTrace();
239+
String body = "";
240+
//String statusCode = String.valueOf(error.networkResponse.statusCode);
241+
if (error.networkResponse.data != null) {
242+
try {
243+
body = new String(error.networkResponse.data, "UTF-8");
244+
} catch (UnsupportedEncodingException e) {
245+
e.printStackTrace();
246+
}
247+
}
248+
249+
if (categoryManager.onGetCategoryFinished != null)
250+
categoryManager.onGetCategoryFinished.onFail(body);
251+
}
252+
});
253+
}
120254
}

AndroidWoocommerceSDK/src/main/java/com/amirshiati/androidwoocommercesdk/ProductManager.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,16 @@ public ProductManager maxPrice(String maxPrice) {
7777
return this;
7878
}
7979

80+
public ProductManager setStatus(ProductStatus status) {
81+
this.status = status;
82+
return this;
83+
}
84+
85+
public ProductManager setAttributeTerm(String attributeTerm) {
86+
this.attributeTerm = attributeTerm;
87+
return this;
88+
}
89+
8090
public ProductManager minPrice(String minPrice) {
8191
this.minPrice = minPrice;
8292
return this;
@@ -346,7 +356,6 @@ private void getProduct(final ProductManager productManager) {
346356
@Override
347357
public void onSuccess(JSONObject response) {
348358
try {
349-
Log.i("AAA", response.toString());
350359
if (productManager.onGetProductFinished != null)
351360
productManager.onGetProductFinished.onSuccess(ProductJsonConverter.jsonToProduct(response));
352361

AndroidWoocommerceSDK/src/main/java/com/amirshiati/androidwoocommercesdk/WooSDK.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,8 @@ public CategoryManager getCategories() {
5151
return new CategoryManager(UriBuilder.getCategories(domainName), CategoryManagerType.GETCATEGORIES, volley);
5252
}
5353

54+
public CategoryManager getCategory(long categoryId) {
55+
return new CategoryManager(UriBuilder.getCategory(domainName, categoryId), CategoryManagerType.GETCATEGORY, volley);
56+
}
57+
5458
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.amirshiati.androidwoocommercesdk.enums;
22

33
public enum CategoryManagerType {
4-
GETCATEGORIES
4+
GETCATEGORIES,
5+
GETCATEGORY
56
}

AndroidWoocommerceSDK/src/main/java/com/amirshiati/androidwoocommercesdk/helper/UriBuilder.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,20 @@ public static Uri.Builder getCategories(String domainName) {
3939
.appendPath("v3")
4040
.appendPath("products")
4141
.appendPath("categories");
42-
;
42+
43+
return builder;
44+
}
45+
46+
public static Uri.Builder getCategory(String domainName, long id) {
47+
Uri.Builder builder = new Uri.Builder();
48+
builder.scheme("https")
49+
.authority(domainName)
50+
.appendPath("wp-json")
51+
.appendPath("wc")
52+
.appendPath("v3")
53+
.appendPath("products")
54+
.appendPath("categories")
55+
.appendPath(String.valueOf(id));
4356

4457
return builder;
4558
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.amirshiati.androidwoocommercesdk.interfaces;
2+
3+
import com.amirshiati.androidwoocommercesdk.model.Category;
4+
5+
public interface OnGetCategoryFinished {
6+
7+
void onSuccess(Category category);
8+
9+
void onFail(String message);
10+
11+
}

app/src/main/java/com/amirshiati/woocommercesdk/MainActivity.java

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.amirshiati.androidwoocommercesdk.enums.Order;
1010
import com.amirshiati.androidwoocommercesdk.enums.OrderBy;
1111
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetCategoriesFinished;
12+
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetCategoryFinished;
1213
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetProductFinished;
1314
import com.amirshiati.androidwoocommercesdk.interfaces.OnGetProductsFinished;
1415
import com.amirshiati.androidwoocommercesdk.model.Category;
@@ -32,23 +33,40 @@ protected void onCreate(Bundle savedInstanceState) {
3233
"domain"
3334
);
3435

35-
wooSDK.getCategories()
36-
.setPage(1)
37-
.setPerPage(100)
38-
.addGetCategoriesCallBack(new OnGetCategoriesFinished() {
39-
@Override
40-
public void onSuccess(ArrayList<Category> categories) {
41-
for (Category category : categories)
42-
Log.i(TAG, category.getName());
43-
}
36+
// wooSDK.getCategory(191)
37+
// .addGetCategoryCallBack(new OnGetCategoryFinished() {
38+
// @Override
39+
// public void onSuccess(Category category) {
40+
// Log.i(TAG, category.getName());
41+
// }
42+
//
43+
// @Override
44+
// public void onFail(String message) {
45+
// Log.i(TAG, "error");
46+
// Log.i(TAG, message);
47+
// }
48+
// })
49+
// .start();
4450

45-
@Override
46-
public void onFail(String message) {
47-
Log.i(TAG, "error");
48-
Log.i(TAG, message);
49-
}
50-
})
51-
.start();
51+
// wooSDK.getCategories()
52+
// .setPage(1)
53+
// .setPerPage(100)
54+
// .setExclude(new int[]{191})
55+
// .hideEmpty(true)
56+
// .addGetCategoriesCallBack(new OnGetCategoriesFinished() {
57+
// @Override
58+
// public void onSuccess(ArrayList<Category> categories) {
59+
// for (Category category : categories)
60+
// Log.i(TAG, category.getName());
61+
// }
62+
//
63+
// @Override
64+
// public void onFail(String message) {
65+
// Log.i(TAG, "error");
66+
// Log.i(TAG, message);
67+
// }
68+
// })
69+
// .start();
5270

5371
// wooSDK.getProducts()
5472
// .setPage(1)

0 commit comments

Comments
 (0)