1 package org.lsst.ccs.config;
2
3 import java.util.Collection;
4 import java.util.List;
5
6
7
8
9
10
11
12 public abstract class HqlDAO implements DBInterface{
13
14
15
16
17 public interface AbstractQuery {
18 List list() ;
19 }
20
21
22
23
24
25 public interface AbstractSession {
26 AbstractQuery createQuery(String queryString) ;
27 void saveOrUpdate(Object arg) ;
28 void save(Object arg) ;
29 void delete(Object arg) ;
30 void flush() ;
31 }
32
33 protected AbstractSession session ;
34 protected boolean exceptionFired ;
35
36 public AbstractSession getSession() {
37 return session;
38 }
39
40 public void setSession(AbstractSession session) {
41 this.session = session;
42 }
43
44
45
46 @Override
47 public void saveSubsystemDescription(ASubsystemDescription newDescription) {
48 newDescription.setStartTimestamp(System.currentTimeMillis());
49
50 session.saveOrUpdate(newDescription); ;
51 }
52
53 @Override
54 public void saveGhostDescriptions(GhostSubsystemDescription ghosts) {
55 session.save(ghosts) ;
56 }
57
58 @Override
59 public ASubsystemDescription getActiveSubsystemDescription(String name, String tag) {
60 String request = "from ASubsystemDescription where subsystemName = '"+name+"' and tag = '"+tag +"'" ;
61 AbstractQuery query = session.createQuery(request) ;
62 List listRes = query.list();
63 if(listRes.size() == 1) {
64 return (ASubsystemDescription)listRes.get(0) ;
65 }
66 return null ;
67 }
68
69 @Override
70 public ASubsystemDescription getActiveSubsystemDescription(long id) {
71 String request = "from ASubsystemDescription where id = " +id ;
72 AbstractQuery query = session.createQuery(request) ;
73 List listRes = query.list();
74 if(listRes.size() == 1) {
75 return (ASubsystemDescription)listRes.get(0) ;
76 }
77 return null ;
78 }
79
80 @Override
81 public GhostSubsystemDescription getGhostDescription(long id) {
82 String request = "from GhostSubsystemDescription where id = '"+id+"'" ;
83 AbstractQuery query = session.createQuery(request) ;
84 List listRes = query.list();
85 if(listRes.size() == 1) {
86 return (GhostSubsystemDescription)listRes.get(0) ;
87 }
88 return null ;
89 }
90
91 @Override
92 public void deleteActiveSubsystemDescription(ASubsystemDescription oldDescription) {
93 session.delete(oldDescription);
94
95 session.flush() ;
96 }
97
98 @Override
99 public void saveConfigProfile(AConfigProfile newProfile) {
100 newProfile.setStartTimestamp(System.currentTimeMillis());
101
102
103 session.saveOrUpdate(newProfile);
104 }
105
106 @Override
107 public void savePastProfile(PastConfigProfile deprecatedProfile) {
108 session.save(deprecatedProfile) ;
109 }
110
111 @Override
112 public AConfigProfile getActiveConfigProfile(String name, String tag) {
113 String request = "from AConfigProfile where name = '"+name+"' and tag = '"+tag +"'" ;
114 AbstractQuery query = session.createQuery(request) ;
115 List listRes = query.list();
116 if(listRes.size() == 1) {
117 return (AConfigProfile) listRes.get(0) ;
118 }
119 return null ;
120 }
121
122 @Override
123 public void deleteActiveConfigProfile(AConfigProfile oldProfile) {
124 session.delete(oldProfile);
125
126 session.flush() ;
127 }
128
129 @Override
130 public void modifyParmConfig(AParameterConfiguration config) {
131 session.saveOrUpdate(config);
132 }
133
134 @Override
135 public Collection<AConfigProfile> getActiveProfilesForSubsystem(ASubsystemDescription description) {
136
137 String request = "from AConfigProfile where subsystemId = '"+description.getId()+"'" ;
138 AbstractQuery query = session.createQuery(request) ;
139 List listRes = query.list();
140 return (Collection<AConfigProfile>)listRes ;
141 }
142
143 @Override
144 public Collection<PastConfigProfile> getProfilesForSubsystem(GhostSubsystemDescription description) {
145
146
147
148 String request = "from PastConfigProfile where subsystemDesc.id = "+description.getId()+"" ;
149 AbstractQuery query = session.createQuery(request) ;
150 List listRes = query.list();
151 return (Collection<PastConfigProfile>)listRes ;
152 }
153
154 @Override
155 public void saveRun(RunHistory runHistory) {
156 session.save(runHistory) ;
157 }
158
159 @Override
160 public void savePreparedConfiguration(PreparedConfiguration preparedConfiguration) {
161 session.save(preparedConfiguration);
162 }
163
164 @Override
165 public PreparedConfiguration getPreparedConfiguration(String subsystemName, String configName, String tag) {
166 String request = "from PreparedConfiguration where subsystemName = '" +subsystemName +"'" ;
167 if(configName != null && !"".equals(configName)) {
168 request += " and configName = '" + configName +"'" ;
169 }
170 if(tag != null && !"".equals(tag)) {
171 request += " and tag = '" + tag +"'" ;
172 }
173 AbstractQuery query = session.createQuery(request) ;
174 List listRes = query.list();
175 if(listRes.size() == 1) {
176 return (PreparedConfiguration)listRes.get(0) ;
177 }
178 return null;
179 }
180
181 @Override
182 public void saveMachineConfiguration(MachineConfiguration machineConfiguration) {
183 session.save(machineConfiguration) ;
184 }
185
186 @Override
187 public MachineConfiguration getMachineConfiguration(String macAddress) {
188 String request = "from MachineConfiguration where macAddress = '" + macAddress + "'" ;
189 AbstractQuery query = session.createQuery(request) ;
190 List listRes = query.list();
191 if(listRes.size() == 1) {
192 return (MachineConfiguration)listRes.get(0) ;
193 }
194 return null;
195 }
196
197 @Override
198 public List<?> simpleHQLRequest(String hqlString) {
199 AbstractQuery query = session.createQuery(hqlString) ;
200 return query.list() ;
201 }
202
203 }