Changeset 1300
- Timestamp:
- 04/08/09 23:48:07 (3 years ago)
- Files:
-
- his/trunk/README.txt (modified) (2 diffs)
- his/trunk/configuration/default/tomcat/conf/his.properties (modified) (1 diff)
- his/trunk/configuration/production/tomcat/conf/his.properties (modified) (1 diff)
- his/trunk/data/etc/create_db.sql (modified) (2 diffs)
- his/trunk/data/etc/upgrade_1.7-to-1.8.sql (modified) (1 diff)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/CancelledAttendeeDao.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/LdapDao.java (modified) (1 diff)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/OccurredAppointmentDao.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/PatientGroupDao.java (modified) (2 diffs)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/jpa/JpaCancelledAttendeeDao.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/jpa/JpaCancelledAttendeeHelperObject.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/jpa/JpaOccurredAppointmentDao.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/jpa/JpaPatientGroupDao.java (modified) (2 diffs)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/ldap/LdapDaoImpl.java (modified) (2 diffs)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/ldap/VerySimpleJdbcMockLdapDao.java (modified) (2 diffs)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/AttendeeEntityListener.java (modified) (1 diff)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/CaldavAppointment.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/CaldavAttendee.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/ExternalIdentifier.java (modified) (1 diff)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/LdapEmployee.java (modified) (1 diff)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/LdapLocation.java (modified) (1 diff)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/NotResolvedAttendee.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/OccurredAppointment.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/Patient.java (modified) (2 diffs)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/PlannedAppointment.java (deleted)
- his/trunk/data/src/main/java/org/joiningtracks/his/data/model/TeamMemberEntityListener.java (modified) (1 diff)
- his/trunk/data/src/main/resources/context/sql.xml (modified) (1 diff)
- his/trunk/data/src/test/java/org/joiningtracks/his/data/dao/Database.java (modified) (1 diff)
- his/trunk/data/src/test/java/org/joiningtracks/his/data/dao/jpa/JpaOccurredAppointmentDaoTest.java (deleted)
- his/trunk/data/src/test/java/org/joiningtracks/his/data/dao/jpa/JpaPatientDaoTest.java (modified) (2 diffs)
- his/trunk/data/src/test/java/org/joiningtracks/his/data/dao/ldap/LdapDaoTest.java (modified) (1 diff)
- his/trunk/data/src/test/java/org/joiningtracks/his/data/model/AppointmentTest.java (deleted)
- his/trunk/frontend/common/src/main/java/org/joiningtracks/his/frontend/common/wicket/model/LdapEmployeeDetachableModel.java (modified) (1 diff)
- his/trunk/plugin/bridge/pom.xml (modified) (1 diff)
- his/trunk/plugin/bridge/src/main/resources/context/osgiContainerContext.xml (modified) (1 diff)
- his/trunk/service/pom.xml (modified) (1 diff)
- his/trunk/service/src/main/java/org/joiningtracks/his/service/ldap/LdapEmployeeService.java (modified) (1 diff)
- his/trunk/service/src/main/java/org/joiningtracks/his/service/ldap/impl/LdapEmployeeServiceImpl.java (modified) (1 diff)
- his/trunk/service/src/main/java/org/joiningtracks/his/service/planning (deleted)
- his/trunk/service/src/main/resources/context/cache.xml (modified) (1 diff)
- his/trunk/service/src/main/resources/context/services-ehcache.xml (modified) (2 diffs)
- his/trunk/service/src/main/resources/context/services.xml (modified) (1 diff)
- his/trunk/service/src/test/java/org/joiningtracks/his/service/appointment/impl/DefaultAppointmentServiceTest.java (modified) (3 diffs)
- his/trunk/service/src/test/java/org/joiningtracks/his/service/ldap/impl/LdapEmployeeServiceImplTest.java (modified) (1 diff)
- his/trunk/service/src/test/java/org/joiningtracks/his/service/planning (deleted)
- his/trunk/support/testutil/src/main/resources/test.properties (modified) (1 diff)
- his/trunk/support/util/src/main/java/org/joiningtracks/his/support/util/aop/MethodCacheInvalidatorAdvice.java (modified) (2 diffs)
- his/trunk/support/util/src/main/java/org/joiningtracks/his/support/util/aop/MethodCachingInterceptor.java (modified) (1 diff)
- his/trunk/support/util/src/main/java/org/joiningtracks/his/support/util/aop/MethodTimingInterceptor.java (modified) (2 diffs)
- his/trunk/tools/migration (deleted)
- his/trunk/tools/pom.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
his/trunk/README.txt
r1224 r1300 83 83 3. Installing LDAP 84 84 85 Patients are also stored in an LDAP directory, to allow integration with the Calendar Server.86 85 So to fully test the system, you will have to setup an LDAP directory 87 86 and configure his.properties file accordingly to match your setup. … … 97 96 ldap.password=password 98 97 99 4. Installing Calendar Server 100 101 We currently use Apple Calendar Service (http://www.apple.com/server/macosx/features/ical.html) 102 in the production environment. This is an open source calendar service that can be installed without using 103 Mac OS X Leopard Server. You need to have Python installed, as it is written in Python. 104 For more information, see: http://trac.calendarserver.org/ 105 - Install the Calendar Service by following the instructions found at 106 http://trac.calendarserver.org/wiki/QuickStart 107 - Normally, Calendar Server uses Open Directory for authentication. For testing locally, you can create 108 an accounts-test.xml with usernames and passwords. See http://trac.calendarserver.org/wiki/XMLDirectoryService 109 for more information. Create an admin user in the file accounts-test.xml: 110 <accounts realm="Test Realm"> 111 <user> 112 <uid>admin</uid> 113 <guid>admin</guid> 114 <password>admin</password> 115 <name>Super User</name> 116 </user> 117 </accounts> 118 119 - Change 'data/src/test/resources/test.properties' 120 'configuration/default/tomcat/conf/his.properties' 121 'configuration/production/tomcat/conf/his.properties' 122 to contain the right Calendar Server connection parameters. 123 caldav.host=localhost 124 caldav.port=8010 125 caldav.root=/calendars/ 126 caldav.username=admin 127 caldav.password=admin 128 129 5. Installing the certificate for the communication with the Vecozo webservice. 98 4. Installing the certificate for the communication with the Vecozo webservice. 130 99 131 100 We use one of the Vecozo webservices to verify and support the creation of new patients in the system. his/trunk/configuration/default/tomcat/conf/his.properties
r1092 r1300 116 116 frontpage.order.sample1=1 117 117 frontpage.order.sample2=2 118 119 120 ######################################121 # CalDav plugin configuration #122 ######################################123 caldav.host=10.0.114.196124 caldav.port=8008125 caldav.root=/calendars/126 127 caldav.username=planning128 caldav.password=planning129 ######################################130 # End of CalDav plugin configuration #131 ######################################his/trunk/configuration/production/tomcat/conf/his.properties
r1092 r1300 111 111 # 112 112 osgi.show.prompt=false 113 114 115 ######################################116 # CalDav plugin configuration #117 ######################################118 caldav.host=10.0.114.196119 caldav.port=8008120 caldav.root=/calendars/121 122 caldav.username=planning123 caldav.password=planning124 ######################################125 # End of CalDav plugin configuration #126 ######################################his/trunk/data/etc/create_db.sql
r1292 r1300 191 191 )type=InnoDB DEFAULT CHARSET=utf8; 192 192 193 --194 -- OLD APPOINTMENT STUFF. Can be removed in the second phase of the conversion away from CalDAV195 -- - Daan196 --197 DROP TABLE IF EXISTS occurred_appointment;198 CREATE TABLE occurred_appointment (199 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,200 version BIGINT(20) NOT NULL default 0,201 identifier VARCHAR(255) NOT NULL UNIQUE,202 description VARCHAR(255) NOT NULL,203 location_dn VARCHAR(255),204 location_name VARCHAR(255),205 location_uid VARCHAR(255),206 start_date DATETIME NOT NULL,207 end_date DATETIME NOT NULL,208 209 PRIMARY KEY (id)210 211 )type=InnoDB DEFAULT CHARSET=utf8;212 213 214 DROP TABLE IF EXISTS occurred_appointment_attendee;215 CREATE TABLE occurred_appointment_attendee (216 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,217 version BIGINT(20) NOT NULL default 0,218 appointment_id BIGINT(20) UNSIGNED NOT NULL,219 attendee_uid VARCHAR(255),220 PRIMARY KEY (id),221 222 CONSTRAINT fk_occurred_appointmentattendee_appointment FOREIGN KEY (appointment_id)223 REFERENCES occurred_appointment (id)224 ON DELETE RESTRICT ON UPDATE RESTRICT225 226 )type=InnoDB DEFAULT CHARSET=utf8;227 228 229 DROP TABLE IF EXISTS appointment_attendee_cancelled;230 CREATE TABLE appointment_attendee_cancelled (231 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,232 version BIGINT(20) NOT NULL default 0,233 appointment_identifier VARCHAR(255) NOT NULL,234 attendee_identifier VARCHAR(255) NOT NULL,235 236 PRIMARY KEY (id)237 238 )type=InnoDB DEFAULT CHARSET=utf8;239 240 --241 -- END OF OLD APPOINTMENT STUFF. Can be removed in the second phase of the conversion away from CalDAV242 --243 244 --245 -- NEW APPOINTMENT STUFF. This comment can be removed when the OLD STUFF above is removed.246 -- - Daan247 --248 249 193 DROP TABLE IF EXISTS appointment; 250 194 CREATE TABLE appointment ( … … 282 226 283 227 )type=InnoDB DEFAULT CHARSET=utf8; 284 285 --286 -- END OF NEW APPOINTMENT STUFF. This comment can be removed when the OLD STUFF above is removed.287 --288 228 289 229 DROP TABLE IF EXISTS contact_person_external_identifier; his/trunk/data/etc/upgrade_1.7-to-1.8.sql
r1286 r1300 25 25 ALTER TABLE patient 26 26 ADD COLUMN created timestamp NULL default CURRENT_TIMESTAMP; 27 28 DROP TABLE IF EXISTS occurred_appointment; 29 30 DROP TABLE IF EXISTS occurred_appointment_attendee; 31 32 DROP TABLE IF EXISTS appointment_attendee_cancelled; 33 his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/LdapDao.java
r1208 r1300 24 24 public List<LdapLocation> findLocationsByName(String searchInput); 25 25 26 LdapEmployee getEmployeeBy CaldavIdentifier(String identifier);26 LdapEmployee getEmployeeByIdentifier(String identifier); 27 27 } his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/PatientGroupDao.java
r1267 r1300 2 2 3 3 import org.joiningtracks.his.data.model.Appointment; 4 import org.joiningtracks.his.data.model.CaldavAppointment;5 4 import org.joiningtracks.his.data.model.PathwayParticipation; 6 5 import org.joiningtracks.his.data.model.Patient; … … 23 22 Collection<PatientGroup> getPatientGroupsForAppointment(Appointment appointment); 24 23 25 @Deprecated26 Collection<String> getPatientGroupTypesForAppointment(CaldavAppointment appointment);27 28 24 List<PatientGroup> findAllPatientGroupsByGroupType(String groupType); 29 25 his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/jpa/JpaPatientGroupDao.java
r1267 r1300 3 3 import org.joiningtracks.his.data.dao.PatientGroupDao; 4 4 import org.joiningtracks.his.data.model.Appointment; 5 import org.joiningtracks.his.data.model.CaldavAppointment;6 5 import org.joiningtracks.his.data.model.PathwayParticipation; 7 6 import org.joiningtracks.his.data.model.Patient; … … 236 235 if(resultList.size()==0) { 237 236 return new ArrayList<PatientGroup>(); 238 } else {239 return resultList;240 }241 }242 243 @Deprecated244 public Collection<String> getPatientGroupTypesForAppointment(CaldavAppointment appointment) {245 if(appointment == null){246 return new ArrayList<String>();247 }248 249 Map<String, Object> parameters = new HashMap<String, Object>();250 parameters.put("identifier", appointment.getIdentifier());251 252 StringBuilder jql = new StringBuilder();253 jql.append("select p.group_type from patientgroup p left join patientgroup_appointment pa on (pa.patientgroup_id = p.id) where pa.appointment_identifier = :identifier ");254 255 256 Query query = entityManager.createNativeQuery(jql.toString());257 for (Map.Entry<String, Object> entry : parameters.entrySet()) {258 query.setParameter(entry.getKey(), entry.getValue());259 }260 261 List<String> resultList = query.getResultList();262 if(resultList.size()==0) {263 return new ArrayList<String>();264 237 } else { 265 238 return resultList; his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/ldap/LdapDaoImpl.java
r1208 r1300 63 63 64 64 //@Cacheable(modelId = "employeesCacheModel") 65 public LdapEmployee getEmployeeBy CaldavIdentifier(String caldavIdentifier) {65 public LdapEmployee getEmployeeByIdentifier(String identifier) { 66 66 //(&(objectClass=apple-user)(gidNumber=1026)) 67 67 AndFilter filter = new AndFilter(); 68 68 69 69 EqualsFilter appleUserFilter = new EqualsFilter("objectClass", "apple-user"); 70 EqualsFilter gidNumberFilter = new EqualsFilter("apple-generateduid", caldavIdentifier);70 EqualsFilter gidNumberFilter = new EqualsFilter("apple-generateduid", identifier); 71 71 72 72 filter.and(appleUserFilter); … … 216 216 } 217 217 218 218 219 219 } his/trunk/data/src/main/java/org/joiningtracks/his/data/dao/ldap/VerySimpleJdbcMockLdapDao.java
r1243 r1300 2 2 3 3 import org.joiningtracks.his.data.dao.LdapDao; 4 import org.joiningtracks.his.data.model.LdapDepartment; 4 5 import org.joiningtracks.his.data.model.LdapEmployee; 5 import org.joiningtracks.his.data.model.LdapDepartment;6 6 import org.joiningtracks.his.data.model.LdapLocation; 7 import org.springframework.beans.factory.annotation.Required; 7 8 import org.springframework.jdbc.core.JdbcTemplate; 8 9 import org.springframework.jdbc.core.RowMapper; 9 import org.springframework.beans.factory.annotation.Required;10 10 11 import java.util.List;12 11 import java.sql.ResultSet; 13 12 import java.sql.SQLException; 13 import java.util.List; 14 14 15 15 /** … … 37 37 } 38 38 39 public LdapEmployee getEmployeeBy CaldavIdentifier(String identifier) {39 public LdapEmployee getEmployeeByIdentifier(String identifier) { 40 40 return findEmployeeByIdentifier(identifier); 41 41 } his/trunk/data/src/main/java/org/joiningtracks/his/data/model/AttendeeEntityListener.java
r1266 r1300 47 47 switch (attendeeReference.getAttendeeType()) { 48 48 case employee: 49 attendeeReference.setAttendee(ldapDao.getEmployeeBy CaldavIdentifier(attendeeId));49 attendeeReference.setAttendee(ldapDao.getEmployeeByIdentifier(attendeeId)); 50 50 break; 51 51 case location: his/trunk/data/src/main/java/org/joiningtracks/his/data/model/ExternalIdentifier.java
r1092 r1300 32 32 33 33 public static final String EXTERNAL_PAPER_FILE = "PaperFile"; 34 public static final String CALDAV_ATTENDEE_UID = "ldap";35 34 36 35 /** his/trunk/data/src/main/java/org/joiningtracks/his/data/model/LdapEmployee.java
r1208 r1300 18 18 import java.io.Serializable; 19 19 20 public class LdapEmployee implements Serializable, CaldavAttendee,IAttendee {20 public class LdapEmployee implements Serializable, IAttendee { 21 21 22 22 private String dn; his/trunk/data/src/main/java/org/joiningtracks/his/data/model/LdapLocation.java
r1208 r1300 21 21 22 22 @Embeddable 23 public class LdapLocation implements CaldavAttendee,IAttendee, Serializable {23 public class LdapLocation implements IAttendee, Serializable { 24 24 25 25 @Column(name = "location_dn") his/trunk/data/src/main/java/org/joiningtracks/his/data/model/Patient.java
r1274 r1300 44 44 45 45 @Table(name = "patient") 46 public class Patient extends Person implements CaldavAttendee,IAttendee {46 public class Patient extends Person implements IAttendee { 47 47 48 48 @Type(type = "org.joda.time.contrib.hibernate.PersistentLocalDate") … … 512 512 } 513 513 514 public String getIdentifier() {515 return this.getIdentifierValue(ExternalIdentifier.CALDAV_ATTENDEE_UID);516 }517 518 514 public String getAttendeeId() { 519 515 return String.valueOf(getId()); his/trunk/data/src/main/java/org/joiningtracks/his/data/model/TeamMemberEntityListener.java
r1270 r1300 24 24 private void loadTeamMember(LdapDao ldapDao, TeamMember teamMember) { 25 25 if(teamMember.getLdapId() != null){ 26 LdapEmployee ldapEmployee = ldapDao.getEmployeeBy CaldavIdentifier(teamMember.getLdapId());26 LdapEmployee ldapEmployee = ldapDao.getEmployeeByIdentifier(teamMember.getLdapId()); 27 27 teamMember.setEmployee(ldapEmployee); 28 28 } his/trunk/data/src/main/resources/context/sql.xml
r1292 r1300 57 57 <bean id="pathwayParticipationPaymentDao" class="org.joiningtracks.his.data.dao.jpa.JpaPathwayParticipationPaymentDao"/> 58 58 59 <bean id="occurredAppointmentDao" class="org.joiningtracks.his.data.dao.jpa.JpaOccurredAppointmentDao"/>60 61 59 <bean id="appointmentDao" class="org.joiningtracks.his.data.dao.jpa.JpaAppointmentDao"/> 62 60 63 61 <bean id="teamDao" class="org.joiningtracks.his.data.dao.jpa.JpaTeamDao"/> 64 65 <bean id="cancelledAttendeeDao" class="org.joiningtracks.his.data.dao.jpa.JpaCancelledAttendeeDao"/>66 62 67 63 <bean id="pathwayRegistryDao" class="org.joiningtracks.his.data.dao.jpa.JpaPathwayProviderRegistryDao"/> his/trunk/data/src/test/java/org/joiningtracks/his/data/dao/Database.java
r1295 r1300 652 652 } 653 653 654 //============================================== Occurred_appointment table ========================================655 656 /**657 * Inserts an occurred_appointment into the database658 *659 * @param id The occurred_appointment ID660 * @param identifier The CalDav UID661 * @param description Description of the occurred_appointment662 * @param startDate Start date and time of the occurred_appointment663 * @param endDate End date and time of the occurred_appointment664 */665 666 public void insertOccurredAppointment(667 long id,668 String identifier,669 String description,670 DateTime startDate,671 DateTime endDate) {672 673 PersistentDateTime pstartDate = new PersistentDateTime();674 pstartDate.disassemble(startDate);675 676 JdbcInsertStatement stmt = new JdbcInsertStatementBuilder("occurred_appointment")677 .addParameter("id", id)678 .addParameter("identifier", identifier)679 .addParameter("description", description)680 .addParameter("start_date", new java.sql.Timestamp(startDate.toDateTime().getMillis()))681 .addParameter("end_date", new java.sql.Timestamp(endDate.toDateTime().getMillis()))682 .addParameter("version", 0)683 .build();684 685 jdbcTemplate.update(stmt.getSql(), stmt.getParameters());686 }687 688 /**689 * Verifies an occurred_appointment with the data in the database690 *691 * @param id The occurred_appointments ID692 * @param identifier The CalDav UID693 * @param description Description of the occurred_appointment694 * @param startDate Start date and time of the occurred_appointment695 * @param endDate End date and time of the occurred_appointment696 * @param version The version of this row697 */698 public void verifyOccurredAppointment(699 final long id,700 final String identifier,701 final String description,702 final DateTime startDate,703 final DateTime endDate,704 final int version) {705 706 String sql = "select * from occurred_appointment where id = ?";707 jdbcTemplate.getJdbcOperations().query(sql, new Object[]{id}, new VerifyingResultSetExtractor() {708 public void doVerifyData(ResultSet rs) throws SQLException, DataAccessException {709 assertTrue(rs.next());710 assertEquals(identifier, rs.getString("identifier"));711 assertEquals(description, rs.getString("description"));712 713 assertEquals(new Timestamp(startDate.toDateTime().getMillis()), rs.getTimestamp("start_date"));714 assertEquals(new Timestamp(endDate.toDateTime().getMillis()), rs.getTimestamp("end_date"));715 assertEquals(version, rs.getInt("version"));716 assertFalse(rs.next());717 }718 });719 }720 721 654 /** 722 655 * Inserts an appointment into the database his/trunk/data/src/test/java/org/joiningtracks/his/data/dao/jpa/JpaPatientDaoTest.java
r1248 r1300 19 19 import org.joda.time.LocalDate; 20 20 import org.joiningtracks.his.data.dao.PatientDao; 21 import org.joiningtracks.his.data.model.*; 21 import org.joiningtracks.his.data.model.Address; 22 import org.joiningtracks.his.data.model.Country; 23 import org.joiningtracks.his.data.model.Gender; 24 import org.joiningtracks.his.data.model.GeneralPractitioner; 25 import org.joiningtracks.his.data.model.InsuranceCompany; 26 import org.joiningtracks.his.data.model.Patient; 27 import org.joiningtracks.his.data.model.PatientExternalIdentifier; 28 import org.joiningtracks.his.data.model.PatientInsurancePolicy; 22 29 import org.springframework.core.io.ClassPathResource; 23 30 … … 1243 1250 1244 1251 Patient patient = dao.getById(1L); 1245 patient.setIdentifier(" caldav", "caldavuid 01");1252 patient.setIdentifier("example", "example uid 01"); 1246 1253 dao.update(patient); 1247 1254 1248 1255 patient = dao.getById(2L); 1249 patient.setIdentifier(" caldav", "caldavuid 02");1256 patient.setIdentifier("example", "example uid 02"); 1250 1257 dao.update(patient); 1251 1258 1252 1259 1253 patient = dao.findByExternalIdentifier(" caldav", "caldavuid 01");1260 patient = dao.findByExternalIdentifier("example", "example uid 01"); 1254 1261 assertEquals("Patient1", patient.getFirstName()); 1255 1262 1256 patient = dao.findByExternalIdentifier(" caldav", "caldavuid 02");1263 patient = dao.findByExternalIdentifier("example", "example uid 02"); 1257 1264 assertEquals("Patient2", patient.getFirstName()); 1258 1265 } his/trunk/data/src/test/java/org/joiningtracks/his/data/dao/ldap/LdapDaoTest.java
r1209 r1300 117 117 } 118 118 119 public void testGetEmployeeBy CaldavIdentifier(){119 public void testGetEmployeeByIdentifier(){ 120 120 expect(ldapTemplate.search((DistinguishedName) anyObject(), (String) anyObject(), (AttributesMapper) anyObject())).andReturn(employeeResult); 121 121 122 122 replay(ldapTemplate, employeeAttributesMapper); 123 ldapDao.getEmployeeBy CaldavIdentifier("identifier");123 ldapDao.getEmployeeByIdentifier("identifier"); 124 124 verify(ldapTemplate, employeeAttributesMapper); 125 125 } his/trunk/frontend/common/src/main/java/org/joiningtracks/his/frontend/common/wicket/model/LdapEmployeeDetachableModel.java
r1231 r1300 97 97 @Override 98 98 protected Object load() { 99 return ldapEmployeeService.getEmployeeBy CaldavIdentifier(identifier);99 return ldapEmployeeService.getEmployeeByIdentifier(identifier); 100 100 } 101 101 } his/trunk/plugin/bridge/pom.xml
r1285 r1300 58 58 </dependency> 59 59 60 <dependency> 61 <groupId>javax.servlet</groupId> 62 <artifactId>servlet-api</artifactId> 63 <version>2.4</version> 64 <scope>provided</scope> 65 </dependency> 60 66 </dependencies> 61 67 his/trunk/plugin/bridge/src/main/resources/context/osgiContainerContext.xml
r1295 r1300 34 34 <value> 35 35 patientService, 36 planningService,37 36 appointmentService, 38 37 clinicalPathwayService, his/trunk/service/pom.xml
r1285 r1300 101 101 </dependency> 102 102 103 <dependency>104 <groupId>org.osaf</groupId>105 <artifactId>caldav4j</artifactId>106 <version>0.4-SNAPSHOT</version>107 <exclusions>108 <exclusion>109 <groupId>net.fortuna</groupId>110 <artifactId>ical4j</artifactId>111 </exclusion>112 <exclusion>113 <groupId>ehcache</groupId>114 <artifactId>ehcache</artifactId>115 </exclusion>116 <exclusion>117 <groupId>xerces</groupId>118 <artifactId>xerces</artifactId>119 </exclusion>120 </exclusions>121 </dependency>122 123 103 </dependencies> 124 104 his/trunk/service/src/main/java/org/joiningtracks/his/service/ldap/LdapEmployeeService.java
r1092 r1300 45 45 public List<LdapLocation> findLocationsByName(String searchInput); 46 46 47 LdapEmployee getEmployeeBy CaldavIdentifier(String identifier);47 LdapEmployee getEmployeeByIdentifier(String identifier); 48 48 } his/trunk/service/src/main/java/org/joiningtracks/his/service/ldap/impl/LdapEmployeeServiceImpl.java
r1208 r1300 74 74 } 75 75 76 public LdapEmployee getEmployeeBy CaldavIdentifier(String identifier) {77 return ldapDao.getEmployeeBy CaldavIdentifier(identifier);76 public LdapEmployee getEmployeeByIdentifier(String identifier) { 77 return ldapDao.getEmployeeByIdentifier(identifier); 78 78 } 79 79 } his/trunk/service/src/main/resources/context/cache.xml
r1110 r1300 28 28 </bean> 29 29 30 <bean id="ccisEmpByCaldavIdMethodCachingAdvice" class="org.joiningtracks.his.support.util.aop.MethodCachingInterceptor">31 <property name="cacheManager" ref="ccisServiceCacheManager"/>32 <property name="cacheName" value="CCIS_EMP"/>33 </bean>34 35 <!-- cache for the caldav identifiers, a none changing external identifier of a patient -->36 <bean id="ccisPatientByExternalIdentifierCachingAdvice" class="org.joiningtracks.his.support.util.aop.MethodCachingInterceptor">37 <property name="cacheManager" ref="ccisServiceCacheManager"/>38 <property name="cacheName" value="CCIS_PATIENT"/>39 </bean>40 41 <bean id="ccisCaldavEventMethodCachingAdvice" class="org.joiningtracks.his.support.util.aop.MethodCachingInterceptor">42 <property name="cacheManager" ref="ccisServiceCacheManager"/>43 <property name="cacheName" value="CCIS_CALDAV_EVENT"/>44 </bean>45 46 <bean id="ccisCaldavEventMethodCacheInvalidationAdvice" class="org.joiningtracks.his.support.util.aop.MethodCacheInvalidatorAdvice">47 <property name="cacheManager" ref="ccisServiceCacheManager"/>48 <property name="cacheName" value="CCIS_CALDAV_EVENT"/>49 </bean>50 51 <bean id="ccisCaldavEventsListMethodCachingAdvice" class="org.joiningtracks.his.support.util.aop.MethodCachingInterceptor">52 <property name="cacheManager" ref="ccisServiceCacheManager"/>53 <property name="cacheName" value="CCIS_CALDAV_EVENT_LIST"/>54 </bean>55 56 <bean id="ccisCaldavEventsListMethodCacheInvalidationAdvice" class="org.joiningtracks.his.support.util.aop.MethodCacheInvalidatorAdvice">57 <property name="cacheManager" ref="ccisServiceCacheManager"/>58 <property name="cacheName" value="CCIS_CALDAV_EVENT_LIST"/>59 </bean>60 61 30 <bean id="methodTimingAdvice" class="org.joiningtracks.his.support.util.aop.MethodTimingInterceptor"/> 62 31 63 32 <aop:config> 64 <aop:pointcut id="getEmployeeByCaldavIdentifierPointcut" expression="execution(org.joiningtracks..LdapEmployee org.joiningtracks..LdapEmployeeService.getEmployeeByCaldavIdentifier(..))"/>65 33 <aop:pointcut id="getAllEmployeesPointcut" expression="execution(* org.joiningtracks..LdapEmployeeService.getAllEmployees())"/> 66 <aop:pointcut id="getEventPointcut" expression="execution(* org.joiningtracks..CaldavTemplate.getEvent(..))"/>67 <aop:pointcut id="getAllEventsForDateRangePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.getAllEventsForDateRange(..))"/>68 <aop:pointcut id="caldavUpdatePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.update(..))"/>69 <aop:pointcut id="caldavCreatePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.create(..))"/>70 <aop:pointcut id="caldavRemovePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.remove(..))"/>71 <!-- aop:pointcut id="getPlannedAppointmentsForPointcut" expression="execution(* org.joiningtracks..PlanningService.getPlannedAppointmentFor(..))"/ -->72 73 <!-- TODO only cache the CALDAV external identifier -->74 <aop:pointcut id="patientServiceGetExternalIdentifierPointcut" expression="execution(* org.joiningtracks..PatientService.findByExternalIdentifier(..))"/>75 34 76 <!-- aop:advisor id="getAllEmployeesMethodTimingAdvisor" advice-ref="methodTimingAdvice" pointcut-ref="getAllEmployeesPointcut"/-->77 35 <aop:advisor id="getAllEmployeesMethodCachingAdvice" advice-ref="ccisEmpListMethodCachingAdvice" pointcut-ref="getAllEmployeesPointcut"/> 78 <!-- aop:advisor id="getEmployeeByCaldavIdentifierMethodTimingAdvisor" advice-ref="methodTimingAdvice" pointcut-ref="getEmployeeByCaldavIdentifierPointcut"/ -->79 <aop:advisor id="getEmployeeByCaldavIdentifierMethodCachingAdvisor" advice-ref="ccisEmpByCaldavIdMethodCachingAdvice" pointcut-ref="getEmployeeByCaldavIdentifierPointcut"/>80 <!-- aop:advisor id="getEventMethodTimingAdvisor" advice-ref="methodTimingAdvice" pointcut-ref="getEventPointcut"/ -->81 <aop:advisor id="getEventMethodCachingAdvisor" advice-ref="ccisCaldavEventMethodCachingAdvice" pointcut-ref="getEventPointcut"/>82 <!-- aop:advisor id="getAllEventsForDateRangeMethodTimingAdvisor" advice-ref="methodTimingAdvice" pointcut-ref="getAllEventsForDateRangePointcut"/ -->83 <aop:advisor id="getAllEventsForDateRangeMethodCachingAdvisor" advice-ref="ccisCaldavEventsListMethodCachingAdvice" pointcut-ref="getAllEventsForDateRangePointcut"/>84 <aop:advisor id="caldavCreateListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavCreatePointcut"/>85 <aop:advisor id="caldavUpdateListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavUpdatePointcut"/>86 <aop:advisor id="caldavUpdateInvalidationAdvice" advice-ref="ccisCaldavEventMethodCacheInvalidationAdvice" pointcut-ref="caldavUpdatePointcut"/>87 <aop:advisor id="caldavRemoveListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavRemovePointcut"/>88 <aop:advisor id="caldavRemoveInvalidationAdvice" advice-ref="ccisCaldavEventMethodCacheInvalidationAdvice" pointcut-ref="caldavRemovePointcut"/>89 <aop:advisor id="getEmployeeByCaldavIdentifierAdvice" advice-ref="ccisPatientByExternalIdentifierCachingAdvice" pointcut-ref="patientServiceGetExternalIdentifierPointcut"/>90 <!-- aop:advisor id="planningServiceMethodsTimingAdvisor" advice-ref="methodTimingAdvice" pointcut-ref="getPlannedAppointmentsForPointcut"/-->91 36 </aop:config> 92 37 his/trunk/service/src/main/resources/context/services-ehcache.xml
r1110 r1300 4 4 <defaultCache maxElementsInMemory="10" eternal="false" 5 5 timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" /> 6 <!-- LdapEmployeeServiceImpl --> 7 <!-- 8 <cache name="getEmployeeByCaldavIdentifier" maxElementsInMemory="50" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" /> 9 <cache name="getAllEmployees" maxElementsInMemory="50" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" /> 10 --> 6 11 7 <cache name="CCIS_EMP_LIST" maxElementsInMemory="50" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" /> 12 8 <cache name="CCIS_EMP" maxElementsInMemory="50" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" /> … … 14 10 <cache name="CCIS_PATIENT" maxElementsInMemory="100" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" /> 15 11 16 <!-- CaldavTemplate -->17 <!--18 <cache name="getEvent" maxElementsInMemory="300" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400"/>19 <cache name="getAllEventsForDateRange" maxElementsInMemory="20" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" />20 -->21 <cache name="CCIS_CALDAV_EVENT" maxElementsInMemory="300" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400"/>22 <cache name="CCIS_CALDAV_EVENT_LIST" maxElementsInMemory="20" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="86400" />23 12 </ehcache> 24 13 his/trunk/service/src/main/resources/context/services.xml
r1292 r1300 39 39 <bean id="employeeRoleService" class="org.joiningtracks.his.service.team.impl.DefaultEmployeeRoleService"> 40 40 <property name="employeeRoleDao" ref="employeeRoleDao"/> 41 </bean>42 43 <bean id="caldavConfiguration" class="org.joiningtracks.his.service.planning.CaldavConfiguration">44 <property name="caldavServer" value="${caldav.host}"/>45 <property name="caldavServerPort" value="${caldav.port}"/>46 <property name="caldavRoot" value="${caldav.root}"/>47 <property name="caldavUser" value="${caldav.username}"/>48 <property name="caldavPassword" value="${caldav.password}"/>49 </bean>50 51 <bean id="caldavTemplate" class="org.joiningtracks.his.service.planning.CaldavTemplate">52 <!-- constructor-arg ref="caldavConfiguration"/ -->53 <property name="caldavConfiguration" ref="caldavConfiguration"/>54 </bean>55 56 <bean id="planningService" class="org.joiningtracks.his.service.planning.impl.DefaultPlanningService">57 <property name="occurredAppointmentDao" ref="occurredAppointmentDao"/>58 <property name="cancelledAttendeeDao" ref="cancelledAttendeeDao"/>59 <property name="caldavTemplate" ref="caldavTemplate"/>60 <property name="patientService" ref="patientService"/>61 <property name="employeeService" ref="ldapEmployeeService"/>62 41 </bean> 63 42 his/trunk/service/src/test/java/org/joiningtracks/his/service/appointment/impl/DefaultAppointmentServiceTest.java
r1228 r1300 11 11 import org.joiningtracks.his.data.dao.jpa.JpaAppointmentDao; 12 12 import org.joiningtracks.his.data.model.Appointment; 13 import org.joiningtracks.his.data.model.CaldavAttendee;14 13 import org.joiningtracks.his.data.model.Patient; 15 14 import org.joiningtracks.his.service.appointment.AppointmentService; 16 import org.joiningtracks.his.service.planning.converter.AppointmentConverter;17 15 import org.joiningtracks.his.support.util.event.EventListener; 18 16 import org.joiningtracks.his.support.util.event.EventListenerRegistry; … … 52 50 53 51 public void testCreate() throws Exception { 54 AppointmentConverter appointmentConverter = new AppointmentConverter();55 56 52 DateTime startDate = new DateTime(2008, 1, 1, 10, 0, 0, 0); 57 53 DateTime endDate = new DateTime(2008, 1, 1, 12, 0, 0, 0); … … 93 89 DateTime startDate = new DateTime(2008, 1, 1, 10, 0, 0, 0); 94 90 DateTime endDate = new DateTime(2008, 1, 1, 12, 0, 0, 0); 95 ArrayList<CaldavAttendee> attendees = new ArrayList<CaldavAttendee>();96 attendees.add(new Patient());97 attendees.add(new Patient());98 99 91 100 92 Appointment appointment = new Appointment("Description", startDate, endDate); his/trunk/service/src/test/java/org/joiningtracks/his/service/ldap/impl/LdapEmployeeServiceImplTest.java
r1209 r1300 111 111 } 112 112 113 public void testGetEmployeeBy CaldavIdentifier(){114 expect(ldapDao.getEmployeeBy CaldavIdentifier("identifier")).andReturn(new LdapEmployee());113 public void testGetEmployeeByIdentifier(){ 114 expect(ldapDao.getEmployeeByIdentifier("identifier")).andReturn(new LdapEmployee()); 115 115 116 116 replay(ldapDao); 117 ldapEmployeeService.getEmployeeBy CaldavIdentifier("identifier");117 ldapEmployeeService.getEmployeeByIdentifier("identifier"); 118 118 verify(ldapDao); 119 119 } his/trunk/support/testutil/src/main/resources/test.properties
r1092 r1300 110 110 # 111 111 osgi.show.prompt=false 112 113 114 115 ######################################116 # CalDav plugin configuration #117 ######################################118 caldav.host=10.0.114.196119 caldav.port=8008120 caldav.root=/calendars/121 122 caldav.username=planning123 caldav.password=planning124 ######################################125 # End of CalDav plugin configuration #126 ######################################his/trunk/support/util/src/main/java/org/joiningtracks/his/support/util/aop/MethodCacheInvalidatorAdvice.java
r1092 r1300 16 16 package org.joiningtracks.his.support.util.aop; 17 17 18 import net.sf.ehcache.Cache; 19 import net.sf.ehcache.CacheManager; 20 import org.apache.commons.logging.Log; 21 import org.apache.commons.logging.LogFactory; 18 22 import org.springframework.aop.AfterReturningAdvice; 19 23 import org.springframework.beans.factory.annotation.Required; 20 import org.apache.commons.logging.Log;21 import org.apache.commons.logging.LogFactory;22 24 23 25 import java.lang.reflect.Method; 24 26 25 import net.sf.ehcache.CacheManager; 26 import net.sf.ehcache.Cache; 27 28 /** 29 * Invalidate the method cache as use by the MethodCachingInterceptor 30 * Sample configuration using Spring AOP: 31 * <code> 32 * <bean id="ccisCaldavEventsListMethodCacheInvalidationAdvice" class="org.joiningtracks.his.support.util.aop.MethodCacheInvalidatorAdvice"> 33 * <property name="cacheManager" ref="ccisServiceCacheManager"/> 34 * <property name="cacheName" value="CCIS_CALDAV_EVENT_LIST"/> 35 * </bean> 36 * 37 * <aop:config> 38 * <aop:pointcut id="caldavUpdatePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.update(..))"/> 39 * <aop:pointcut id="caldavCreatePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.create(..))"/> 40 * <aop:pointcut id="caldavRemovePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.remove(..))"/> 41 * 42 * <aop:advisor id="caldavCreateListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavCreatePointcut"/> 43 * <aop:advisor id="caldavUpdateListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavUpdatePointcut"/> 44 * <aop:advisor id="caldavUpdateInvalidationAdvice" advice-ref="ccisCaldavEventMethodCacheInvalidationAdvice" pointcut-ref="caldavUpdatePointcut"/> 45 * <aop:advisor id="caldavRemoveListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavRemovePointcut"/> 46 * <aop:advisor id="caldavRemoveInvalidationAdvice" advice-ref="ccisCaldavEventMethodCacheInvalidationAdvice" pointcut-ref="caldavRemovePointcut"/> 47 * 48 * </aop:config> 49 * </code> 50 * 51 * @see MethodCachingInterceptor 52 * @since 10 januari 2009 53 * @author Olger Warnier 54 */ 27 /** 28 * Invalidate the method cache as use by the MethodCachingInterceptor 29 * @see MethodCachingInterceptor 30 * @since 10 januari 2009 31 * @author Olger Warnier 32 **/ 55 33 public class MethodCacheInvalidatorAdvice implements AfterReturningAdvice { 56 34 private final Log log = LogFactory.getLog(getClass()); … … 72 50 log.debug("Invalidated cache " + cacheName); 73 51 } 74 /*75 StringBuffer cacheKey = new StringBuffer(method.getName());76 Object arg;77 for(int i = 0; i < args.length ; i++) {78 arg = args[i];79 cacheKey.append(arg.toString().hashCode());80 }81 82 if (log.isDebugEnabled()) {83 log.debug("Lookup cachedElement in cache " + cacheName + " for key " + cacheKey.toString());84 }85 if (cache.isKeyInCache(cacheKey)) {86 cache.removeAll();87 if (log.isDebugEnabled()) {88 log.debug("Remove cachedElement in cache " + cacheName + " for key " + cacheKey.toString());89 }90 }91 */92 52 } 93 53 } 94 95 54 96 55 @Required 97 public void setCacheName(String cacheName) {56 public final void setCacheName(String cacheName) { 98 57 this.cacheName = cacheName; 99 58 } 100 59 101 60 @Required 102 public void setCacheManager(CacheManager cacheManager) {61 public final void setCacheManager(CacheManager cacheManager) { 103 62 this.cacheManager = cacheManager; 104 63 } his/trunk/support/util/src/main/java/org/joiningtracks/his/support/util/aop/MethodCachingInterceptor.java
r1180 r1300 32 32 * When the cache is not available, it will be created based on the default settings. 33 33 * 34 * The cache uses as key the method name and the hash value of each argument and is used35 * in conjunction with the MethodCacheInvalidatorAdvice in order to invalidate the given cache name36 *37 * Spring AOP Sample configuration:38 * <code>39 * <bean id="ccisServiceCacheManager" class="net.sf.ehcache.CacheManager">40 * <constructor-arg index="0" type="java.net.URL" value="classpath:context/services-ehcache.xml"/>41 * </bean>42 *43 *44 * <bean id="ccisCaldavEventsListMethodCachingAdvice" class="org.joiningtracks.his.support.util.aop.MethodCachingInterceptor">45 * <property name="cacheManager" ref="ccisServiceCacheManager"/>46 * <property name="cacheName" value="CCIS_CALDAV_EVENT_LIST"/>47 * </bean>48 *49 * <bean id="ccisCaldavEventsListMethodCacheInvalidationAdvice" class="org.joiningtracks.his.support.util.aop.MethodCacheInvalidatorAdvice">50 * <property name="cacheManager" ref="ccisServiceCacheManager"/>51 * <property name="cacheName" value="CCIS_CALDAV_EVENT_LIST"/>52 * </bean>53 *54 * <aop:config>55 * <aop:pointcut id="getEventPointcut" expression="execution(* org.joiningtracks..CaldavTempate.getEvent(..))"/>56 * <aop:pointcut id="getAllEventsForDateRangePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.getAllEventsForDateRange(..))"/>57 * <aop:pointcut id="caldavUpdatePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.update(..))"/>58 * <aop:pointcut id="caldavCreatePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.create(..))"/>59 * <aop:pointcut id="caldavRemovePointcut" expression="execution(* org.joiningtracks..CaldavTemplate.remove(..))"/>60 *61 * <aop:advisor id="getEventMethodCachingAdvisor" advice-ref="ccisCaldavEventMethodCachingAdvice" pointcut-ref="getEventPointcut"/>62 * <aop:advisor id="getAllEventsForDateRangeMethodCachingAdvisor" advice-ref="ccisCaldavEventsListMethodCachingAdvice" pointcut-ref="getAllEventsForDateRangePointcut"/>63 * <aop:advisor id="caldavCreateListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavCreatePointcut"/>64 * <aop:advisor id="caldavUpdateListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavUpdatePointcut"/>65 * <aop:advisor id="caldavUpdateInvalidationAdvice" advice-ref="ccisCaldavEventMethodCacheInvalidationAdvice" pointcut-ref="caldavUpdatePointcut"/>66 * <aop:advisor id="caldavRemoveListInvalidationAdvice" advice-ref="ccisCaldavEventsListMethodCacheInvalidationAdvice" pointcut-ref="caldavRemovePointcut"/>67 * <aop:advisor id="caldavRemoveInvalidationAdvice" advice-ref="ccisCaldavEventMethodCacheInvalidationAdvice" pointcut-ref="caldavRemovePointcut"/>68 *69 * </aop:config>70 * </code>71 *72 34 * @see MethodCacheInvalidatorAdvice 73 35 * @since 10 januari 2009 his/trunk/support/util/src/main/java/org/joiningtracks/his/support/util/aop/MethodTimingInterceptor.java
r1092 r1300 16 16 package org.joiningtracks.his.support.util.aop; 17 17 18 import java.math.BigDecimal;19 20 18 import org.aopalliance.intercept.MethodInterceptor; 21 19 import org.aopalliance.intercept.MethodInvocation; … … 25 23 import org.apache.commons.logging.LogFactory; 26 24 25 import java.math.BigDecimal; 26 27 27 /** 28 28 * MethodTimingInterceptor calculates the total time used for a specific method. 29 29 * 30 * Sample configuration with Spring AOP:31 *<code>32 * <bean id="methodTimingAdvice" class="org.joiningtracks.his.support.util.aop.MethodTimingInterceptor"/>33 * <aop:config>34 * <aop:pointcut id="planningServiceMethodsPointcut" expression="execution(* org.joiningtracks..PlanningService.*(..))"/>35 *36 * <aop:advisor id="planningServiceMethodsTimingAdvisor" advice-ref="methodTimingAdvice" pointcut-ref="planningServiceMethodsPointcut"/>37 * </aop:config>38 *</code>39 40 30 * @since 10 januari 2009 41 31 * @author Jacob Briscoe (thanks) his/trunk/tools/pom.xml
r1285 r1300 30 30 <modules> 31 31 <module>archetype</module> 32 <module>migration</module>33 32 </modules> 34 33 </project>
