[Bedework-commit] calendarapi r589 - releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar

svnadmin at bedework.org svnadmin at bedework.org
Thu Apr 3 16:41:03 EDT 2008


Author: douglm
Date: 2008-04-03 16:41:02 -0400 (Thu, 03 Apr 2008)
New Revision: 589

Modified:
   releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/IcalTranslator.java
   releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/VEventUtil.java
Log:
Output x-properties when converting to icalendar

Modified: releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/IcalTranslator.java
===================================================================
--- releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/IcalTranslator.java	2008-04-01 18:48:58 UTC (rev 588)
+++ releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/IcalTranslator.java	2008-04-03 20:41:02 UTC (rev 589)
@@ -74,6 +74,9 @@
 import net.fortuna.ical4j.model.component.VTimeZone;
 import net.fortuna.ical4j.model.component.VVenue;
 import net.fortuna.ical4j.model.ComponentList;
+import net.fortuna.ical4j.model.Parameter;
+import net.fortuna.ical4j.model.ParameterFactoryImpl;
+import net.fortuna.ical4j.model.ParameterList;
 import net.fortuna.ical4j.model.Property;
 import net.fortuna.ical4j.model.PropertyList;
 import net.fortuna.ical4j.model.TimeZone;
@@ -501,10 +504,55 @@
     }
   }
 
+  /** Parse parameters and return a parameter list.
+   *
+   * @param parList String parameter list
+   * @return ParameterList
+   * @throws CalFacadeException
+   */
+  public static ParameterList parseParameters(String parList) throws CalFacadeException {
+    ParameterList pl = new ParameterList();
+
+    if (parList == null) {
+      return pl;
+    }
+
+    String[] pars = parList.split(";");
+    for (String par: pars) {
+      if ((par != null) && (par.length() > 0)) {
+        pl.add(parseParameter(par, parList));
+      }
+    }
+
+    return pl;
+  }
+
   /* ====================================================================
                       Private methods
      ==================================================================== */
 
+  private static Parameter parseParameter(String par,
+                                          String parList) throws CalFacadeException {
+    int pos = par.indexOf('=');
+    if (pos < 0) {
+      throw new CalFacadeException(CalFacadeException.badRequest, parList);
+    }
+
+    String pname = par.substring(0, pos);
+
+    String val = null;
+    if (pos == par.length()) {
+      val = par.substring(pos + 1);
+    }
+
+    try {
+      return ParameterFactoryImpl.getInstance().createParameter(pname.toUpperCase(),
+                                                                val);
+    } catch (Throwable t) {
+      throw new CalFacadeException(CalFacadeException.badRequest, parList);
+    }
+  }
+
   private void addToCalendar(Calendar cal,
                              EventInfo val,
                              TreeSet<String> added) throws CalFacadeException {

Modified: releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/VEventUtil.java
===================================================================
--- releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/VEventUtil.java	2008-04-01 18:48:58 UTC (rev 588)
+++ releases/bedework-3.4.1/icalendar/src/org/bedework/icalendar/VEventUtil.java	2008-04-03 20:41:02 UTC (rev 589)
@@ -66,6 +66,7 @@
 import org.bedework.calfacade.BwContact;
 import org.bedework.calfacade.BwRelatedTo;
 import org.bedework.calfacade.BwString;
+import org.bedework.calfacade.BwXproperty;
 import org.bedework.calfacade.CalFacadeDefs;
 import org.bedework.calfacade.base.BwStringBase;
 import org.bedework.calfacade.exc.CalFacadeException;
@@ -121,6 +122,7 @@
 import net.fortuna.ical4j.model.property.Transp;
 import net.fortuna.ical4j.model.property.Uid;
 import net.fortuna.ical4j.model.property.Url;
+import net.fortuna.ical4j.model.property.XProperty;
 import net.fortuna.ical4j.model.PropertyList;
 
 import java.net.URI;
@@ -458,6 +460,26 @@
         pl.add(new Url(new URI(strval)));
       }
 
+      /* ------------------- X-PROPS -------------------- */
+
+      if (val.getNumXproperties() > 0) {
+        /* This event has x-props */
+
+        try {
+          for (BwXproperty x: val.getXproperties()) {
+            XProperty xp = new XProperty(x.getName(),
+                                         IcalTranslator.parseParameters(x.getPars()),
+                                         x.getValue());
+            pl.add(xp);
+          }
+        } catch (Throwable t) {
+          // XXX For the moment swallow these.
+          error(t);
+        }
+      }
+
+      /* ------------------- Overrides -------------------- */
+
       if (!isOverride && val.getRecurring().booleanValue()) {
         doRecurring(val, pl);
       }



More information about the Bedework-commit mailing list