Revision: 4504
Author:   seba.wagner
Date:     Tue Nov  1 06:30:24 2011
Log:      Update issue 1563
Add test and according to test the issue is fixed by removing the Method from the iCal invitation.

Update issue 1561
Extend and add some tests to add appointments
http://code.google.com/p/openmeetings/source/detail?r=4504

Added:
 /trunk/singlewebapp/src/META-INF/derby_persistence.xml
/trunk/singlewebapp/src/test/org/openmeetings/test/calendar/TestAppointmentAddAppointment.java /trunk/singlewebapp/src/test/org/openmeetings/test/calendar/TestSendIcalMessage.java
Modified:
 /trunk/singlewebapp/build.xml
 /trunk/singlewebapp/red5-1.0.0-RC1/red5/conf/logback.xml
 /trunk/singlewebapp/src/META-INF/persistence.xml
/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/MeetingMemberLogic.java /trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/Invitationmanagement.java /trunk/singlewebapp/src/app/org/openmeetings/app/templates/VelocityLoader.java
 /trunk/singlewebapp/src/app/org/openmeetings/utils/mail/IcalHandler.java

=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/META-INF/derby_persistence.xml Tue Nov 1 06:30:24 2011
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- persistence.xml schema -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"; version="2.0">
+       <persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
+ <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+               
<class>org.openmeetings.app.persistence.beans.adresses.Adresses</class>
+               
<class>org.openmeetings.app.persistence.beans.adresses.States</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.Configuration</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.ErrorType</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.ErrorValues</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.LdapConfig</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.Naviglobal</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.Navimain</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.Navisub</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.OmTimeZone</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.Sessiondata</class>
+               
<class>org.openmeetings.app.persistence.beans.basic.SOAPLogin</class>
+ <class>org.openmeetings.app.persistence.beans.calendar.Appointment</class> + <class>org.openmeetings.app.persistence.beans.calendar.AppointmentCategory</class> + <class>org.openmeetings.app.persistence.beans.calendar.AppointmentReminderTyps</class> + <class>org.openmeetings.app.persistence.beans.calendar.MeetingMember</class>
+               
<class>org.openmeetings.app.persistence.beans.domain.Organisation</class>
+ <class>org.openmeetings.app.persistence.beans.domain.Organisation_Users</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecording</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingLog</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaDelta</class> + <class>org.openmeetings.app.persistence.beans.invitation.Invitations</class>
+               
<class>org.openmeetings.app.persistence.beans.lang.FieldLanguage</class>
+ <class>org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues</class>
+               
<class>org.openmeetings.app.persistence.beans.lang.Fieldvalues</class>
+               
<class>org.openmeetings.app.persistence.beans.logs.ConferenceLog</class>
+ <class>org.openmeetings.app.persistence.beans.logs.ConferenceLogType</class>
+               
<class>org.openmeetings.app.persistence.beans.poll.PollType</class>
+               
<class>org.openmeetings.app.persistence.beans.poll.RoomPoll</class>
+ <class>org.openmeetings.app.persistence.beans.poll.RoomPollAnswers</class> + <class>org.openmeetings.app.persistence.beans.recording.ChatvaluesEvent</class>
+               
<class>org.openmeetings.app.persistence.beans.recording.Recording</class>
+ <class>org.openmeetings.app.persistence.beans.recording.RecordingClient</class> + <class>org.openmeetings.app.persistence.beans.recording.RecordingConversionJob</class> + <class>org.openmeetings.app.persistence.beans.recording.RoomClient</class> + <class>org.openmeetings.app.persistence.beans.recording.RoomRecording</class> + <class>org.openmeetings.app.persistence.beans.recording.RoomStream</class> + <class>org.openmeetings.app.persistence.beans.recording.WhiteBoardEvent</class> + <class>org.openmeetings.app.persistence.beans.rooms.RoomModerators</class>
+               
<class>org.openmeetings.app.persistence.beans.rooms.Rooms</class>
+               
<class>org.openmeetings.app.persistence.beans.rooms.RoomTypes</class>
+ <class>org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation</class> + <class>org.openmeetings.app.persistence.beans.sip.OpenXGReturnObject</class> + <class>org.openmeetings.app.persistence.beans.user.PrivateMessages</class> + <class>org.openmeetings.app.persistence.beans.user.PrivateMessageFolder</class>
+               
<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
+               
<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
+               
<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
+               
<class>org.openmeetings.app.persistence.beans.user.Usergroups</class>
+               
<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
+ <class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class>
+               
<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
+               <class>org.openmeetings.app.persistence.beans.user.Users</class>
+ <class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>
+               <exclude-unlisted-classes>false</exclude-unlisted-classes>
+        <properties>
+            <property name="openjpa.ConnectionProperties"
+                value="DriverClassName=org.apache.derby.jdbc.ClientDriver,
+                                  Url=jdbc:derby:openmeetings;create=true,
+                                  create=true,
+                                  MaxActive=100,
+                                  MaxWait=10000,
+                                  TestOnBorrow=true,
+                                  Username=user,
+                                  Password=secret" />
+ <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> + <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" /> + <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" /> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
+            <property name="openjpa.DataCache" value="true" />
+            <property name="openjpa.QueryCache" value="true" />
+ <property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
+            <property name="openjpa.jdbc.QuerySQLCache" value="false" />
+       </properties>
+       </persistence-unit>
+</persistence>
=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/test/org/openmeetings/test/calendar/TestAppointmentAddAppointment.java Tue Nov 1 06:30:24 2011
@@ -0,0 +1,93 @@
+package org.openmeetings.test.calendar;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+import org.openmeetings.app.data.calendar.management.AppointmentLogic;
+import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.test.AbstractOpenmeetingsSpringTest;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestAppointmentAddAppointment extends
+               AbstractOpenmeetingsSpringTest {
+
+       private static final Logger log = Red5LoggerFactory.getLogger(
+                       TestAppointmentAddAppointment.class,
+                       ScopeApplicationAdapter.webAppRootKey);
+
+       @Autowired
+       private AppointmentLogic appointmentLogic;
+
+       @Test
+       public void saveAppointment() {
+               log.debug("- 1 MeetingReminderJob.execute");
+               log.warn("- 2 MeetingReminderJob.execute");
+
+               try {
+
+                       //Simulate webapp path
+                       ScopeApplicationAdapter.webAppPath = "./WebContent";
+
+                       Calendar start = Calendar.getInstance();
+                       start.setTimeInMillis(start.getTimeInMillis() + 900000);
+
+                       Calendar end = Calendar.getInstance();
+                       end.setTimeInMillis(end.getTimeInMillis() + 1800000);
+
+                       String appointmentName = "Test 01";
+                       String appointmentDescription = "Descr";
+                       Long users_id = 1L;
+                       String appointmentLocation = "office";
+                       Boolean isMonthly = false;
+                       Date appointmentstart = start.getTime();
+                       Date appointmentend = end.getTime();
+                       Boolean isDaily = false;
+                       Long categoryId = 1L;
+                       Boolean isWeekly = false;
+                       Long remind = 3L;
+                       Boolean isYearly = false;
+ List<Map<String, String>> mmClient = new LinkedList<Map<String, String>>();
+                       for (int i = 0; i < 1; i++) {
+                               mmClient.add(createClientObj("firstname" + i, 
"lastname" + i,
+                                               "first" + i + ".last" + i + 
"@webbase-design.de", "Etc/GMT+1"));
+                       }
+                       Long language_id = 1L;
+                       String baseUrl = "http://localhost:5080/openmeetings/";;
+                       Long roomType = 1L;
+
+                       Long id = 
appointmentLogic.saveAppointment(appointmentName,
+                                       users_id, appointmentLocation, 
appointmentDescription,
+                                       appointmentstart, appointmentend, 
isDaily, isWeekly,
+                                       isMonthly, isYearly, categoryId, 
remind, mmClient,
+                                       roomType, baseUrl, language_id);
+
+
+                       Thread.sleep(40000);
+
+                       assertTrue(id != null && id > 0);
+
+               } catch (Exception err) {
+                       log.error("[saveAppointment]", err);
+               }
+       }
+
+       private Map<String, String> createClientObj(String firstname,
+                       String lastname, String email, String jNameTimeZone) {
+               Map<String, String> client = new HashMap<String, String>();
+               client.put("firstname", firstname);
+               client.put("lastname", lastname);
+               client.put("email", email);
+               client.put("jNameTimeZone", jNameTimeZone);
+               return client;
+       }
+
+}
=======================================
--- /dev/null
+++ /trunk/singlewebapp/src/test/org/openmeetings/test/calendar/TestSendIcalMessage.java Tue Nov 1 06:30:24 2011
@@ -0,0 +1,308 @@
+package org.openmeetings.test.calendar;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.SocketException;
+import java.net.URI;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Properties;
+import java.util.Vector;
+
+import javax.activation.DataHandler;
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import net.fortuna.ical4j.data.CalendarOutputter;
+import net.fortuna.ical4j.model.DateTime;
+import net.fortuna.ical4j.model.TimeZone;
+import net.fortuna.ical4j.model.TimeZoneRegistry;
+import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
+import net.fortuna.ical4j.model.ValidationException;
+import net.fortuna.ical4j.model.component.VEvent;
+import net.fortuna.ical4j.model.component.VTimeZone;
+import net.fortuna.ical4j.model.parameter.Cn;
+import net.fortuna.ical4j.model.parameter.Role;
+import net.fortuna.ical4j.model.property.Attendee;
+import net.fortuna.ical4j.model.property.CalScale;
+import net.fortuna.ical4j.model.property.Method;
+import net.fortuna.ical4j.model.property.Organizer;
+import net.fortuna.ical4j.model.property.ProdId;
+import net.fortuna.ical4j.model.property.Uid;
+import net.fortuna.ical4j.model.property.Version;
+import net.fortuna.ical4j.util.UidGenerator;
+
+import org.junit.Test;
+import org.openmeetings.app.data.basic.Configurationmanagement;
+import org.openmeetings.app.data.basic.dao.OmTimeZoneDaoImpl;
+import org.openmeetings.app.persistence.beans.basic.Configuration;
+import org.openmeetings.app.remote.red5.ScopeApplicationAdapter;
+import org.openmeetings.test.AbstractOpenmeetingsSpringTest;
+import org.openmeetings.utils.mail.ByteArrayDataSource;
+import org.openmeetings.utils.mail.IcalHandler;
+import org.openmeetings.utils.mail.SmtpAuthenticator;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class TestSendIcalMessage extends AbstractOpenmeetingsSpringTest {
+
+       private static final Logger log = Red5LoggerFactory.getLogger(
+                       TestAppointmentSchedulerTask.class,
+                       ScopeApplicationAdapter.webAppRootKey);
+
+       @Autowired
+       private Configurationmanagement cfgManagement;
+
+       @Autowired
+       private OmTimeZoneDaoImpl omTimeZoneDaoImpl;
+
+       private byte[] iCalMimeBody;
+
+       String subject = "test iCal";
+       String recipients = "[email protected]";
+       String htmlBody = "test";
+
+
+       public void simpleInvitionIcalLink() {
+               // Create a TimeZone
+               TimeZoneRegistry registry = 
TimeZoneRegistryFactory.getInstance()
+                               .createRegistry();
+               TimeZone timezone = registry.getTimeZone("America/Mexico_City");
+               VTimeZone tz = timezone.getVTimeZone();
+
+               // Start Date is on: April 1, 2008, 9:00 am
+               java.util.Calendar startDate = new GregorianCalendar();
+               startDate.setTimeZone(timezone);
+               startDate.set(java.util.Calendar.MONTH, 
java.util.Calendar.APRIL);
+               startDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
+               startDate.set(java.util.Calendar.YEAR, 2008);
+               startDate.set(java.util.Calendar.HOUR_OF_DAY, 9);
+               startDate.set(java.util.Calendar.MINUTE, 0);
+               startDate.set(java.util.Calendar.SECOND, 0);
+
+               // End Date is on: April 1, 2008, 13:00
+               java.util.Calendar endDate = new GregorianCalendar();
+               endDate.setTimeZone(timezone);
+               endDate.set(java.util.Calendar.MONTH, java.util.Calendar.APRIL);
+               endDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
+               endDate.set(java.util.Calendar.YEAR, 2008);
+               endDate.set(java.util.Calendar.HOUR_OF_DAY, 13);
+               endDate.set(java.util.Calendar.MINUTE, 0);
+               endDate.set(java.util.Calendar.SECOND, 0);
+
+               // Create the event
+               String eventName = "Progress Meeting";
+               DateTime start = new DateTime(startDate.getTime());
+               DateTime end = new DateTime(endDate.getTime());
+               VEvent meeting = new VEvent(start, end, eventName);
+
+               // add timezone info..
+               meeting.getProperties().add(tz.getTimeZoneId());
+
+               // generate unique identifier..
+               UidGenerator ug;
+               try {
+                       ug = new UidGenerator("uidGen");
+
+                       Uid uid = ug.generateUid();
+                       meeting.getProperties().add(uid);
+               } catch (SocketException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+
+               // add attendees..
+               Attendee dev1 = new 
Attendee(URI.create("mailto:[email protected]";));
+               dev1.getParameters().add(Role.REQ_PARTICIPANT);
+               dev1.getParameters().add(new Cn("Developer 1"));
+               meeting.getProperties().add(dev1);
+
+               Attendee dev2 = new 
Attendee(URI.create("mailto:[email protected]";));
+               dev2.getParameters().add(Role.OPT_PARTICIPANT);
+               dev2.getParameters().add(new Cn("Developer 2"));
+               meeting.getProperties().add(dev2);
+
+               // Create a calendar
+ net.fortuna.ical4j.model.Calendar icsCalendar = new net.fortuna.ical4j.model.Calendar();
+               icsCalendar.getProperties().add(
+                               new ProdId("-//Events Calendar//iCal4j 
1.0//EN"));
+               icsCalendar.getProperties().add(CalScale.GREGORIAN);
+               icsCalendar.getProperties().add(Version.VERSION_2_0);
+
+               // Add the event and print
+               icsCalendar.getComponents().add(meeting);
+
+               Organizer orger = new 
Organizer(URI.create("[email protected]"));
+               orger.getParameters().add(new Cn("Sebastian Wagner"));
+               meeting.getProperties().add(orger);
+
+               icsCalendar.getProperties().add(Method.REQUEST);
+
+               System.out.println(icsCalendar);
+
+
+
+
+               ByteArrayOutputStream bout = new ByteArrayOutputStream();
+               CalendarOutputter outputter = new CalendarOutputter();
+               try {
+                       outputter.output(icsCalendar, bout);
+                       iCalMimeBody = bout.toByteArray();
+
+                       sendIcalMessage();
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (ValidationException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (Exception e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+
+
+
+       }
+
+
+       @Test
+       public void sendInvitionIcalLink() {
+               try {
+
+                       String email = "[email protected]";
+                       String username = "shans";
+                       boolean invitor = false;
+
+                       String jNametimeZone = "Etc/GMT+1";
+
+                       GregorianCalendar start = new GregorianCalendar();
+                       Calendar start1 = Calendar.getInstance();
+                       start.setTimeInMillis(start1.getTimeInMillis() + 
900000);
+
+                       GregorianCalendar end = new GregorianCalendar();
+                       Calendar end1 = Calendar.getInstance();
+                       end.setTimeInMillis(end1.getTimeInMillis() + 1800000);
+
+                       IcalHandler handler = new IcalHandler(omTimeZoneDaoImpl,
+                                       IcalHandler.ICAL_METHOD_REQUEST);
+
+                       // Transforming Meeting Members
+
+                       HashMap<String, String> attendeeList = 
handler.getAttendeeData(
+                                       email, username, invitor);
+
+                       HashMap<String, String> organizerAttendee = handler
+                                       .getAttendeeData(recipients, 
"seba-test", true);
+
+ Vector<HashMap<String, String>> atts = new Vector<HashMap<String, String>>();
+                       atts.add(attendeeList);
+
+                       // Create ICal Message
+                       String meetingId = handler.addNewMeeting(start, end, "test 
event",
+                                       atts, 
"localhost:5080/link_openmeetings",
+                                       organizerAttendee, "", jNametimeZone);
+
+                       log.debug("meetingId " + meetingId);
+
+                       iCalMimeBody = handler.getIcalAsByteArray();
+
+                       sendIcalMessage();
+
+                       // return MailHandler.sendMail(email, subject, 
template);
+
+               } catch (Exception err) {
+                       log.error("sendInvitionIcalLink", err);
+               }
+       }
+
+       private void sendIcalMessage() throws Exception {
+
+               log.debug("sendIcalMessage");
+
+               // Evaluating Configuration Data
+               String smtpServer = cfgManagement.getConfKey(3, "smtp_server")
+                               .getConf_value();
+               String smtpPort = cfgManagement.getConfKey(3, "smtp_port")
+                               .getConf_value();
+               // String from = "[email protected]";
+               String from = cfgManagement.getConfKey(3, "system_email_addr")
+                               .getConf_value();
+
+               String emailUsername = cfgManagement.getConfKey(3, 
"email_username")
+                               .getConf_value();
+               String emailUserpass = cfgManagement.getConfKey(3, 
"email_userpass")
+                               .getConf_value();
+
+               Properties props = System.getProperties();
+
+               props.put("mail.smtp.host", smtpServer);
+               props.put("mail.smtp.port", smtpPort);
+
+               Configuration conf = cfgManagement.getConfKey(3,
+                               "mail.smtp.starttls.enable");
+               if (conf != null) {
+                       if (conf.getConf_value().equals("1")) {
+                               props.put("mail.smtp.starttls.enable", "true");
+                       }
+               }
+
+               // Check for Authentification
+               Session session = null;
+               if (emailUsername != null && emailUsername.length() > 0
+                               && emailUserpass != null && emailUserpass.length() 
> 0) {
+                       // use SMTP Authentication
+                       props.put("mail.smtp.auth", "true");
+                       session = Session.getDefaultInstance(props, new 
SmtpAuthenticator(
+                                       emailUsername, emailUserpass));
+               } else {
+                       // not use SMTP Authentication
+                       session = Session.getDefaultInstance(props, null);
+               }
+
+               // Building MimeMessage
+               MimeMessage mimeMessage = new MimeMessage(session);
+               mimeMessage.setSubject(subject);
+               mimeMessage.setFrom(new InternetAddress(from));
+               mimeMessage.addRecipients(Message.RecipientType.TO,
+                               InternetAddress.parse(recipients, false));
+
+               // -- Create a new message --
+               BodyPart msg = new MimeBodyPart();
+               msg.setDataHandler(new DataHandler(new 
ByteArrayDataSource(htmlBody,
+                               "text/html; charset=\"utf-8\"")));
+
+               Multipart multipart = new MimeMultipart();
+
+               BodyPart iCalAttachment = new MimeBodyPart();
+               iCalAttachment.setDataHandler(new DataHandler(
+                               new javax.mail.util.ByteArrayDataSource(
+                                               new 
ByteArrayInputStream(iCalMimeBody),
+                                               
"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
+
+               multipart.addBodyPart(iCalAttachment);
+               multipart.addBodyPart(msg);
+
+               mimeMessage.setSentDate(new Date());
+               mimeMessage.setContent(multipart);
+
+               // -- Set some other header information --
+               // mimeMessage.setHeader("X-Mailer", "XML-Mail");
+               // mimeMessage.setSentDate(new Date());
+
+               // Transport trans = session.getTransport("smtp");
+               Transport.send(mimeMessage);
+
+       }
+}
=======================================
--- /trunk/singlewebapp/build.xml       Sat Sep 24 01:51:11 2011
+++ /trunk/singlewebapp/build.xml       Tue Nov  1 06:30:24 2011
@@ -593,6 +593,7 @@
                <pathelement path="${red5.root}/conf" />
                <pathelement path="${om.dist.webapp}" />
                <pathelement path="${om.dist.webapp}/WEB-INF" />
+               <pathelement path="${basedir}/WebContent/WEB-INF" />
        </path>
<target name="test" depends="enhance" description="Will run all tests unless -Dtestcases=_file_name_pattern_ will be passed">
                <mkdir dir="${report.dir}"/>
=======================================
--- /trunk/singlewebapp/red5-1.0.0-RC1/red5/conf/logback.xml Mon Oct 31 08:25:57 2011 +++ /trunk/singlewebapp/red5-1.0.0-RC1/red5/conf/logback.xml Tue Nov 1 06:30:24 2011
@@ -211,9 +211,9 @@
     <logger name="org.eclipse.jetty">
         <level value="DEBUG" />
     </logger>
-    <!-- Enable for debugging JUnit tests
+    <!-- Enable for debugging JUnit tests -->
     <logger name="org.openmeetings">
         <level value="DEBUG" />
     </logger>
-     -->
+
 </configuration>
=======================================
--- /trunk/singlewebapp/src/META-INF/persistence.xml Sat Oct 8 02:25:05 2011 +++ /trunk/singlewebapp/src/META-INF/persistence.xml Tue Nov 1 06:30:24 2011
@@ -1,82 +1,82 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- persistence.xml schema -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"; version="2.0">
-       <persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
- <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-               
<class>org.openmeetings.app.persistence.beans.adresses.Adresses</class>
-               
<class>org.openmeetings.app.persistence.beans.adresses.States</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.Configuration</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.ErrorType</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.ErrorValues</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.LdapConfig</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.Naviglobal</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.Navimain</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.Navisub</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.OmTimeZone</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.Sessiondata</class>
-               
<class>org.openmeetings.app.persistence.beans.basic.SOAPLogin</class>
- <class>org.openmeetings.app.persistence.beans.calendar.Appointment</class> - <class>org.openmeetings.app.persistence.beans.calendar.AppointmentCategory</class> - <class>org.openmeetings.app.persistence.beans.calendar.AppointmentReminderTyps</class> - <class>org.openmeetings.app.persistence.beans.calendar.MeetingMember</class>
-               
<class>org.openmeetings.app.persistence.beans.domain.Organisation</class>
- <class>org.openmeetings.app.persistence.beans.domain.Organisation_Users</class> - <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecording</class> - <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingLog</class> - <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData</class> - <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaDelta</class> - <class>org.openmeetings.app.persistence.beans.invitation.Invitations</class>
-               
<class>org.openmeetings.app.persistence.beans.lang.FieldLanguage</class>
- <class>org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues</class>
-               
<class>org.openmeetings.app.persistence.beans.lang.Fieldvalues</class>
-               
<class>org.openmeetings.app.persistence.beans.logs.ConferenceLog</class>
- <class>org.openmeetings.app.persistence.beans.logs.ConferenceLogType</class>
-               
<class>org.openmeetings.app.persistence.beans.poll.PollType</class>
-               
<class>org.openmeetings.app.persistence.beans.poll.RoomPoll</class>
- <class>org.openmeetings.app.persistence.beans.poll.RoomPollAnswers</class> - <class>org.openmeetings.app.persistence.beans.recording.ChatvaluesEvent</class>
-               
<class>org.openmeetings.app.persistence.beans.recording.Recording</class>
- <class>org.openmeetings.app.persistence.beans.recording.RecordingClient</class> - <class>org.openmeetings.app.persistence.beans.recording.RecordingConversionJob</class> - <class>org.openmeetings.app.persistence.beans.recording.RoomClient</class> - <class>org.openmeetings.app.persistence.beans.recording.RoomRecording</class> - <class>org.openmeetings.app.persistence.beans.recording.RoomStream</class> - <class>org.openmeetings.app.persistence.beans.recording.WhiteBoardEvent</class> - <class>org.openmeetings.app.persistence.beans.rooms.RoomModerators</class>
-               
<class>org.openmeetings.app.persistence.beans.rooms.Rooms</class>
-               
<class>org.openmeetings.app.persistence.beans.rooms.RoomTypes</class>
- <class>org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation</class> - <class>org.openmeetings.app.persistence.beans.sip.OpenXGReturnObject</class> - <class>org.openmeetings.app.persistence.beans.user.PrivateMessages</class> - <class>org.openmeetings.app.persistence.beans.user.PrivateMessageFolder</class>
-               
<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
-               
<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
-               
<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
-               
<class>org.openmeetings.app.persistence.beans.user.Usergroups</class>
-               
<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
- <class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class>
-               
<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
-               <class>org.openmeetings.app.persistence.beans.user.Users</class>
- <class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>
-               <exclude-unlisted-classes>false</exclude-unlisted-classes>
+ <persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL"> + <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> + <class>org.openmeetings.app.persistence.beans.adresses.Adresses</class> + <class>org.openmeetings.app.persistence.beans.adresses.States</class> + <class>org.openmeetings.app.persistence.beans.basic.Configuration</class> + <class>org.openmeetings.app.persistence.beans.basic.ErrorType</class> + <class>org.openmeetings.app.persistence.beans.basic.ErrorValues</class> + <class>org.openmeetings.app.persistence.beans.basic.LdapConfig</class> + <class>org.openmeetings.app.persistence.beans.basic.Naviglobal</class> + <class>org.openmeetings.app.persistence.beans.basic.Navimain</class>
+        <class>org.openmeetings.app.persistence.beans.basic.Navisub</class>
+ <class>org.openmeetings.app.persistence.beans.basic.OmTimeZone</class> + <class>org.openmeetings.app.persistence.beans.basic.Sessiondata</class> + <class>org.openmeetings.app.persistence.beans.basic.SOAPLogin</class> + <class>org.openmeetings.app.persistence.beans.calendar.Appointment</class> + <class>org.openmeetings.app.persistence.beans.calendar.AppointmentCategory</class> + <class>org.openmeetings.app.persistence.beans.calendar.AppointmentReminderTyps</class> + <class>org.openmeetings.app.persistence.beans.calendar.MeetingMember</class> + <class>org.openmeetings.app.persistence.beans.domain.Organisation</class> + <class>org.openmeetings.app.persistence.beans.domain.Organisation_Users</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecording</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingLog</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData</class> + <class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaDelta</class> + <class>org.openmeetings.app.persistence.beans.invitation.Invitations</class> + <class>org.openmeetings.app.persistence.beans.lang.FieldLanguage</class> + <class>org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues</class> + <class>org.openmeetings.app.persistence.beans.lang.Fieldvalues</class> + <class>org.openmeetings.app.persistence.beans.logs.ConferenceLog</class> + <class>org.openmeetings.app.persistence.beans.logs.ConferenceLogType</class>
+        <class>org.openmeetings.app.persistence.beans.poll.PollType</class>
+        <class>org.openmeetings.app.persistence.beans.poll.RoomPoll</class>
+ <class>org.openmeetings.app.persistence.beans.poll.RoomPollAnswers</class> + <class>org.openmeetings.app.persistence.beans.recording.ChatvaluesEvent</class> + <class>org.openmeetings.app.persistence.beans.recording.Recording</class> + <class>org.openmeetings.app.persistence.beans.recording.RecordingClient</class> + <class>org.openmeetings.app.persistence.beans.recording.RecordingConversionJob</class> + <class>org.openmeetings.app.persistence.beans.recording.RoomClient</class> + <class>org.openmeetings.app.persistence.beans.recording.RoomRecording</class> + <class>org.openmeetings.app.persistence.beans.recording.RoomStream</class> + <class>org.openmeetings.app.persistence.beans.recording.WhiteBoardEvent</class> + <class>org.openmeetings.app.persistence.beans.rooms.RoomModerators</class>
+        <class>org.openmeetings.app.persistence.beans.rooms.Rooms</class>
+ <class>org.openmeetings.app.persistence.beans.rooms.RoomTypes</class> + <class>org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation</class> + <class>org.openmeetings.app.persistence.beans.sip.OpenXGReturnObject</class> + <class>org.openmeetings.app.persistence.beans.user.PrivateMessages</class> + <class>org.openmeetings.app.persistence.beans.user.PrivateMessageFolder</class> + <class>org.openmeetings.app.persistence.beans.user.Salutations</class> + <class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
+        <class>org.openmeetings.app.persistence.beans.user.Userdata</class>
+ <class>org.openmeetings.app.persistence.beans.user.Usergroups</class> + <class>org.openmeetings.app.persistence.beans.user.Userlevel</class> + <class>org.openmeetings.app.persistence.beans.user.Users_Usergroups</class> + <class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
+        <class>org.openmeetings.app.persistence.beans.user.Users</class>
+ <class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>
+        <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
-            <property name="openjpa.ConnectionProperties"
-                value="DriverClassName=org.apache.derby.jdbc.ClientDriver,
-                                  Url=jdbc:derby:openmeetings;create=true,
-                                  create=true,
-                                  MaxActive=100,
-                                  MaxWait=10000,
-                                  TestOnBorrow=true,
-                                  Username=user,
-                                  Password=secret" />
- <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> - <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" /> - <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" /> - <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
-            <property name="openjpa.DataCache" value="true" />
-            <property name="openjpa.QueryCache" value="true" />
- <property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
-            <property name="openjpa.jdbc.QuerySQLCache" value="false" />
-       </properties>
-       </persistence-unit>
+                <property name="openjpa.ConnectionProperties"
+                    value="DriverClassName=com.mysql.jdbc.Driver
+ , Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000
+                        , MaxActive=100
+                        , MaxWait=10000
+                        , TestOnBorrow=true
+                        , poolPreparedStatements=true
+                        , Username=root
+                        , Password=admin"/>
+ <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/> + <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/> + <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" /> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/>
+                <property name="openjpa.DataCache" value="true"/>
+                <property name="openjpa.QueryCache" value="true"/>
+ <property name="openjpa.jdbc.DBDictionary" value="batchLimit=100,tableType=myisam"/> + <property name="openjpa.jdbc.QuerySQLCache" value="false"/>
+        </properties>
+    </persistence-unit>
 </persistence>
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/MeetingMemberLogic.java Sun Oct 30 07:28:15 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/MeetingMemberLogic.java Tue Nov 1 06:30:24 2011
@@ -90,13 +90,13 @@

                        String jNameTimeZone = null;
                        if (us != null && us.getOmTimeZone() != null) {
-                               System.out.println("Internal User ");
+                               log.debug("Internal User ");
                                // Internal User
                                jNameTimeZone = us.getOmTimeZone().getJname();
                                omTimeZone = 
omTimeZoneDaoImpl.getOmTimeZone(jNameTimeZone);
                        } else {

-                               System.out.println("External User ");
+                               log.debug("External User ");
                                // External User
                                jNameTimeZone = jNameMemberTimeZone;
                                omTimeZone = 
omTimeZoneDaoImpl.getOmTimeZone(jNameTimeZone);
@@ -120,19 +120,19 @@
                        int offset = cal.get(Calendar.ZONE_OFFSET)
                                        + cal.get(Calendar.DST_OFFSET);

-                       // 
System.out.println("1"+point.getAppointmentStarttime().getTime());
-                       // 
System.out.println("2"+point.getAppointmentEndtime().getTime());
+                       // 
log.debug("1"+point.getAppointmentStarttime().getTime());
+                       // 
log.debug("2"+point.getAppointmentEndtime().getTime());

                        Date starttime = new 
Date(point.getAppointmentStarttime().getTime()
                                        + offset);
                        Date endtime = new 
Date(point.getAppointmentEndtime().getTime()
                                        + offset);

-                       // System.out.println("jNameTimeZone "+jNameTimeZone);
-                       // System.out.println("Ical "+omTimeZone.getIcal());
-                       // System.out.println(offset);
-                       // System.out.println("3"+starttime);
-                       // System.out.println("4"+endtime);
+                       // log.debug("jNameTimeZone "+jNameTimeZone);
+                       // log.debug("Ical "+omTimeZone.getIcal());
+                       // log.debug(offset);
+                       // log.debug("3"+starttime);
+                       // log.debug("4"+endtime);

                        Fieldlanguagesvalues labelid1151 = fieldmanagment
                                        .getFieldByIdAndLanguage(new 
Long(1151), language_id);
@@ -201,6 +201,8 @@
                        } else if (point.getRemind().getTypId() == 3) {
                                log.debug("Reminder for Appointment : iCal 
mail");

+                               System.out.println("### SENDING iCAL EMAIL");
+
                                log.debug("5" + starttime);
                                log.debug("6" + endtime);

=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/Invitationmanagement.java Wed Aug 31 11:01:53 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/data/conference/Invitationmanagement.java Tue Nov 1 06:30:24 2011
@@ -784,7 +784,7 @@
         * @param invitationsHash
         * @return
         */
-       private String sendInvitionIcalLink(String username, String message,
+       public String sendInvitionIcalLink(String username, String message,
                        String baseurl, String email, String subject,
                        String invitationsHash, Long appointMentId, Long 
organizer_userId,
                        Boolean invitor, Long language_id, Date starttime, Date 
endtime,
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/app/templates/VelocityLoader.java Tue Aug 30 13:17:16 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/app/templates/VelocityLoader.java Tue Nov 1 06:30:24 2011
@@ -42,7 +42,7 @@
        /**
         * http://$server:$port/openmeetings/?param=value&param2=value2 Loads 
the
         * path by a given string, this is necessary cause if invoked by Servlet
-        * there is no Red5-Scope availible
+        * there is no Red5-Scope available
         *
         * @param path
         */
=======================================
--- /trunk/singlewebapp/src/app/org/openmeetings/utils/mail/IcalHandler.java Wed Aug 31 11:01:53 2011 +++ /trunk/singlewebapp/src/app/org/openmeetings/utils/mail/IcalHandler.java Tue Nov 1 06:30:24 2011
@@ -19,7 +19,6 @@
 import net.fortuna.ical4j.model.property.Attendee;
 import net.fortuna.ical4j.model.property.CalScale;
 import net.fortuna.ical4j.model.property.Description;
-import net.fortuna.ical4j.model.property.Method;
 import net.fortuna.ical4j.model.property.Organizer;
 import net.fortuna.ical4j.model.property.ProdId;
 import net.fortuna.ical4j.model.property.Sequence;
@@ -39,7 +38,7 @@
  *
  */
 public class IcalHandler {
-       private OmTimeZoneDaoImpl omTimeZoneDaoImpl;
+       private final OmTimeZoneDaoImpl omTimeZoneDaoImpl;

        private static final Logger log = Red5LoggerFactory.getLogger(
                        MailHandler.class, 
ScopeApplicationAdapter.webAppRootKey);
@@ -69,23 +68,21 @@

                icsCalendar = new net.fortuna.ical4j.model.Calendar();

-               // timeRegistry =
-               // TimeZoneRegistryFactory.getInstance().createRegistry();
-               // timeZone =
-               // 
timeRegistry.getTimeZone(java.util.TimeZone.getDefault().getID());
-
                icsCalendar.getProperties().add(
                                new ProdId("-//Events Calendar//iCal4j 
1.0//EN"));
                icsCalendar.getProperties().add(CalScale.GREGORIAN);
                icsCalendar.getProperties().add(Version.VERSION_2_0);
-
+
                // Switch Method Type
-               if (methodType.equals(ICAL_METHOD_REFRESH))
-                       icsCalendar.getProperties().add(Method.REFRESH);
-               else if (methodType.equals(ICAL_METHOD_CANCEL))
-                       icsCalendar.getProperties().add(Method.CANCEL);
-               else
-                       icsCalendar.getProperties().add(Method.REQUEST);
+ // we comment out the Method type for now: The event type needs an organizer + // set, actually this leads to errors in displaying the email as iCal invitation
+               // in gmail, so we removed it for now. issue 1563
+//             if (methodType.equals(ICAL_METHOD_REFRESH))
+//                     icsCalendar.getProperties().add(Method.REFRESH);
+//             else if (methodType.equals(ICAL_METHOD_CANCEL))
+//                     icsCalendar.getProperties().add(Method.CANCEL);
+//             else
+//                     icsCalendar.getProperties().add(Method.REQUEST);

        }

--
You received this message because you are subscribed to the Google Groups 
"OpenMeetings developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/openmeetings-dev?hl=en.

Reply via email to