/
build.gradle
57 lines (47 loc) · 1.08 KB
/
build.gradle
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
enum Temperature {
TOO_HOT,
TOO_COLD,
JUST_RIGHT
}
@Managed
interface Item {
void setName(String n); String getName()
void setQuantity(int q); int getQuantity()
void setPrice(float p); float getPrice()
void setTemperature(Temperature t)
Temperature getTemperature()
void setDataFile(File f); File getDataFile()
}
class ItemRules extends RuleSource {
@Model
void item(Item item) {
def data = item.dataFile.text.trim()
def (name, quantity, price, temp) = data.split(',')
item.name = name
item.quantity = quantity
item.price = price
item.temperature = temp
}
@Defaults
void setDefaults(Item item) {
item.dataFile = 'data.csv'
}
@Mutate
void createDataTask(ModelMap<Task> tasks, Item item) {
tasks.create('showData') {
doLast {
println """
Item '$item.name'
quantity: $item.quantity
price: $item.price
temperature: $item.temperature"""
}
}
}
}
apply plugin: ItemRules
model {
item {
price = "${price * (quantity < 10 ? 2 : 0.5)}"
}
}