Author: adrianc
Date: Sat Jan 9 05:33:40 2010
New Revision: 897384
URL: http://svn.apache.org/viewvc?rev=897384&view=rev
Log:
Fixed an iCalendar bug where child work efforts were not created in a new
calendar. Bug reported by Chris Snow -
https://issues.apache.org/jira/browse/OFBIZ-3398.
Modified:
ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java
Modified:
ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java?rev=897384&r1=897383&r2=897384&view=diff
==============================================================================
---
ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java
(original)
+++
ofbiz/trunk/applications/workeffort/src/org/ofbiz/workeffort/workeffort/ICalConverter.java
Sat Jan 9 05:33:40 2010
@@ -19,8 +19,8 @@
package org.ofbiz.workeffort.workeffort;
-import java.io.InputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.StringReader;
import java.net.URISyntaxException;
import java.sql.Timestamp;
@@ -34,13 +34,48 @@
import javolution.util.FastList;
import javolution.util.FastMap;
import javolution.util.FastSet;
-
import net.fortuna.ical4j.data.CalendarBuilder;
import net.fortuna.ical4j.data.ParserException;
-import net.fortuna.ical4j.model.*;
-import net.fortuna.ical4j.model.component.*;
-import net.fortuna.ical4j.model.parameter.*;
-import net.fortuna.ical4j.model.property.*;
+import net.fortuna.ical4j.model.Calendar;
+import net.fortuna.ical4j.model.Component;
+import net.fortuna.ical4j.model.ComponentList;
+import net.fortuna.ical4j.model.DateTime;
+import net.fortuna.ical4j.model.Dur;
+import net.fortuna.ical4j.model.Parameter;
+import net.fortuna.ical4j.model.ParameterList;
+import net.fortuna.ical4j.model.Property;
+import net.fortuna.ical4j.model.PropertyList;
+import net.fortuna.ical4j.model.TimeZoneRegistry;
+import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
+import net.fortuna.ical4j.model.ValidationException;
+import net.fortuna.ical4j.model.component.VAlarm;
+import net.fortuna.ical4j.model.component.VEvent;
+import net.fortuna.ical4j.model.component.VToDo;
+import net.fortuna.ical4j.model.parameter.Cn;
+import net.fortuna.ical4j.model.parameter.PartStat;
+import net.fortuna.ical4j.model.parameter.XParameter;
+import net.fortuna.ical4j.model.property.Action;
+import net.fortuna.ical4j.model.property.Attendee;
+import net.fortuna.ical4j.model.property.CalScale;
+import net.fortuna.ical4j.model.property.Clazz;
+import net.fortuna.ical4j.model.property.Completed;
+import net.fortuna.ical4j.model.property.Created;
+import net.fortuna.ical4j.model.property.Description;
+import net.fortuna.ical4j.model.property.DtEnd;
+import net.fortuna.ical4j.model.property.DtStamp;
+import net.fortuna.ical4j.model.property.DtStart;
+import net.fortuna.ical4j.model.property.Duration;
+import net.fortuna.ical4j.model.property.LastModified;
+import net.fortuna.ical4j.model.property.Location;
+import net.fortuna.ical4j.model.property.Organizer;
+import net.fortuna.ical4j.model.property.PercentComplete;
+import net.fortuna.ical4j.model.property.Priority;
+import net.fortuna.ical4j.model.property.ProdId;
+import net.fortuna.ical4j.model.property.Status;
+import net.fortuna.ical4j.model.property.Summary;
+import net.fortuna.ical4j.model.property.Uid;
+import net.fortuna.ical4j.model.property.Version;
+import net.fortuna.ical4j.model.property.XProperty;
import org.ofbiz.base.util.DateRange;
import org.ofbiz.base.util.Debug;
@@ -62,7 +97,7 @@
import org.ofbiz.service.ServiceUtil;
import org.ofbiz.service.calendar.TemporalExpression;
import org.ofbiz.service.calendar.TemporalExpressionWorker;
-import static org.ofbiz.workeffort.workeffort.ICalWorker.ResponseProperties;
+import org.ofbiz.workeffort.workeffort.ICalWorker.ResponseProperties;
/** iCalendar converter class. This class uses the <a
href="http://ical4j.sourceforge.net/index.html">
* iCal4J</a> library.
@@ -692,41 +727,41 @@
}
boolean hasCreatePermission = hasPermission(workEffortId, "CREATE",
context);
List<GenericValue> workEfforts =
getRelatedWorkEfforts(publishProperties, context);
+ Set validWorkEfforts = FastSet.newInstance();
if (UtilValidate.isNotEmpty(workEfforts)) {
// Security issue: make sure only related work efforts get updated
- Set validWorkEfforts = FastSet.newInstance();
for (GenericValue workEffort : workEfforts) {
validWorkEfforts.add(workEffort.getString("workEffortId"));
}
- List<Component> components = calendar.getComponents();
- ResponseProperties responseProps = null;
- for (Component component : components) {
- if (Component.VEVENT.equals(component.getName()) ||
Component.VTODO.equals(component.getName())) {
- workEffortId = fromXProperty(component.getProperties(),
workEffortIdXPropName);
- if (workEffortId == null) {
- Property uid = component.getProperty(Uid.UID);
- if (uid != null) {
- GenericValue workEffort =
EntityUtil.getFirst(delegator.findByAnd("WorkEffort",
UtilMisc.toMap("universalId", uid.getValue())));
- if (workEffort != null) {
- workEffortId =
workEffort.getString("workEffortId");
- }
- }
- }
- if (workEffortId != null) {
- if (validWorkEfforts.contains(workEffortId)) {
- replaceProperty(component.getProperties(),
toXProperty(workEffortIdXPropName, workEffortId));
- responseProps = storeWorkEffort(component,
context);
- } else {
- Debug.logWarning("Spoof attempt: unrelated
workEffortId " + workEffortId +
- " on URL workEffortId " +
context.get("workEffortId"), module);
- responseProps =
ICalWorker.createForbiddenResponse(null);
+ }
+ List<Component> components = calendar.getComponents();
+ ResponseProperties responseProps = null;
+ for (Component component : components) {
+ if (Component.VEVENT.equals(component.getName()) ||
Component.VTODO.equals(component.getName())) {
+ workEffortId = fromXProperty(component.getProperties(),
workEffortIdXPropName);
+ if (workEffortId == null) {
+ Property uid = component.getProperty(Uid.UID);
+ if (uid != null) {
+ GenericValue workEffort =
EntityUtil.getFirst(delegator.findByAnd("WorkEffort",
UtilMisc.toMap("universalId", uid.getValue())));
+ if (workEffort != null) {
+ workEffortId =
workEffort.getString("workEffortId");
}
- } else if (hasCreatePermission) {
- responseProps = createWorkEffort(component, context);
}
- if (responseProps != null) {
- return responseProps;
+ }
+ if (workEffortId != null) {
+ if (validWorkEfforts.contains(workEffortId)) {
+ replaceProperty(component.getProperties(),
toXProperty(workEffortIdXPropName, workEffortId));
+ responseProps = storeWorkEffort(component, context);
+ } else {
+ Debug.logWarning("Spoof attempt: unrelated
workEffortId " + workEffortId +
+ " on URL workEffortId " +
context.get("workEffortId"), module);
+ responseProps =
ICalWorker.createForbiddenResponse(null);
}
+ } else if (hasCreatePermission) {
+ responseProps = createWorkEffort(component, context);
+ }
+ if (responseProps != null) {
+ return responseProps;
}
}
}