1 | |
package org.paneris.jammyjoes.controller; |
2 | |
|
3 | |
import java.util.List; |
4 | |
|
5 | |
import org.melati.util.StringUtils; |
6 | |
import org.paneris.jammyjoes.model.Product; |
7 | |
|
8 | |
public class SimilarSearchCriteria implements SearchCriteria { |
9 | |
|
10 | |
Product similarToMe; |
11 | |
|
12 | 0 | public SimilarSearchCriteria(Product similarToMe) { |
13 | 0 | this.similarToMe = similarToMe; |
14 | 0 | } |
15 | |
|
16 | |
public void constrainOutOfStock(List constraints) { |
17 | 0 | constraints.add(q("stocklevel") + " > 0"); |
18 | 0 | } |
19 | |
|
20 | |
public void constrainPrice(List constraints) { |
21 | 0 | constraints.add(q("retailpriceincvat") + " <= " + similarToMe.getRetailpriceincvat().doubleValue() * 1.1); |
22 | 0 | } |
23 | |
|
24 | |
public void constrainType(List constraints) { |
25 | 0 | String type = similarToMe.getType().getTroid().toString(); |
26 | 0 | constraints.add("(" + q("type") + " = " + type + " OR " + q("type2") + " = " + type + ")"); |
27 | 0 | } |
28 | |
|
29 | |
public void constrainId(List constraints) { |
30 | 0 | constraints.add(q("id") + " != " + similarToMe.getTroid()); |
31 | 0 | } |
32 | |
|
33 | |
public String q(String name) { |
34 | 0 | StringBuffer b = new StringBuffer(); |
35 | 0 | StringUtils.appendQuoted(b, name, '"'); |
36 | 0 | return b.toString(); |
37 | |
} |
38 | |
|
39 | |
public void constrain(List constraints) { |
40 | 0 | constrainOutOfStock(constraints); |
41 | 0 | constrainPrice(constraints); |
42 | 0 | constrainType(constraints); |
43 | 0 | constrainId(constraints); |
44 | 0 | constrainDicontinued(constraints); |
45 | 0 | } |
46 | |
|
47 | |
public void constrainDicontinued(List constraints) { |
48 | 0 | constraints.add(q("status") + " != " + similarToMe.getJammyjoesDatabaseTables().getProductStatusTable().getDiscontinued().getTroid()); |
49 | 0 | } |
50 | |
|
51 | |
public String order() { |
52 | 0 | return (q("retailpriceincvat")) + " desc"; |
53 | |
} |
54 | |
|
55 | |
} |