-
Notifications
You must be signed in to change notification settings - Fork 4
/
cart.clj
37 lines (32 loc) · 1.31 KB
/
cart.clj
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
(ns clj-jargon.cart
(:use [clj-jargon.validations])
(:import [org.irods.jargon.datautils.shoppingcart FileShoppingCart]
[org.irods.jargon.datautils.shoppingcart ShoppingCartEntry]
[org.irods.jargon.datautils.shoppingcart ShoppingCartService]
[org.irods.jargon.datautils.shoppingcart ShoppingCartServiceImpl]
[org.irods.jargon.datautils.datacache DataCacheServiceFactoryImpl]
[org.irods.jargon.core.pub UserAO]))
(defn ^FileShoppingCart shopping-cart
[filepaths]
(doseq [fp filepaths] (validate-path-lengths fp))
(let [cart (FileShoppingCart/instance)]
(loop [fps filepaths]
(.addAnItem cart (ShoppingCartEntry/instance (first fps)))
(if (pos? (count (rest fps)))
(recur (rest fps))))
cart))
(defn ^String temp-password
[{^UserAO user-ao :userAO} user]
(.getTemporaryPasswordForASpecifiedUser user-ao user))
(defn ^ShoppingCartService cart-service
[{ao-factory :accessObjectFactory irods-account :irodsAccount}]
(ShoppingCartServiceImpl. ao-factory irods-account
(DataCacheServiceFactoryImpl. ao-factory)))
(defn ^String store-cart
[cm user cart-key filepaths]
(doseq [fp filepaths] (validate-path-lengths fp))
(.serializeShoppingCartAsSpecifiedUser
(cart-service cm)
(shopping-cart filepaths)
cart-key
user))