1 package fr.ifremer.quadrige3.synchro.intercept.administration;
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 import com.google.common.eventbus.Subscribe;
27 import fr.ifremer.common.synchro.meta.SynchroTableMetadata;
28 import fr.ifremer.common.synchro.meta.event.CreateQueryEvent;
29 import fr.ifremer.common.synchro.query.SynchroQueryBuilder;
30 import fr.ifremer.common.synchro.query.SynchroQueryName;
31 import fr.ifremer.quadrige3.synchro.meta.administration.ProgramStrategySynchroTables;
32
33
34
35
36
37
38
39
40
41
42 public class PmfmAppliedStrategyInterceptor extends AbstractProgramStrategyInterceptor {
43
44
45
46
47
48
49 public PmfmAppliedStrategyInterceptor() {
50 super(ProgramStrategySynchroTables.PMFM_APPLIED_STRATEGY.name());
51 }
52
53
54
55
56
57
58
59
60
61 @Subscribe
62 public void handleQuery(CreateQueryEvent e) {
63
64 switch (e.queryName) {
65 case count:
66 case countFromUpdateDate:
67 case select:
68 case selectFromUpdateDate:
69 case selectMaxUpdateDate:
70
71 e.sql = addRestriction(e.source, e.queryName, e.sql);
72
73 default:
74 break;
75 }
76 }
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 protected String addRestriction(SynchroTableMetadata table, SynchroQueryName queryName, String sql) {
94 SynchroQueryBuilder queryBuilder = SynchroQueryBuilder.newBuilder(sql);
95
96
97 String programFilterJoin = createProgramWhereClauseOrNull(getConfig(),
98 "INNER JOIN APPLIED_STRATEGY aps ON aps.applied_strat_id=t.applied_strat_id"
99 + " INNER JOIN STRATEGY s ON s.strat_id=aps.strat_id AND s.prog_cd IN (%s)");
100 if (programFilterJoin != null) {
101 queryBuilder.addJoin(programFilterJoin);
102 }
103
104 return queryBuilder.build();
105 }
106 }