Update of /var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten
In directory 
james.mmbase.org:/tmp/cvs-serv26163/src/nl/natuurmonumenten/activiteiten

Modified Files:
      Tag: BRANCH_NATMM_1_2
        Event.java ActiviteitenService.java BeanFactory.java 
        EventDetails.java ActiviteitenHelper.java 
Added Files:
      Tag: BRANCH_NATMM_1_2
        EventData.java 
Log Message:
NMCMS-622: getEvents geeft nu alleen de parent events terug. getEventDetails 
geeft info van de parent plus van alle childs. Een vlaggetje isEenmaligEvent 
geeft aan of er childs zijn of niet. De child data staat in een nieuw object: 
EventData[]. Indien er geen childs zijn dan heeft EventData precies 1 element 
met de data van de parent.


See also: 
http://cvs.mmbase.org/viewcvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten
See also: http://www.mmbase.org/jira/browse/NMCMS-622


EventData.java is new



Index: Event.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/Event.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- Event.java  16 Jan 2009 08:00:10 -0000      1.1.2.1
+++ Event.java  11 Mar 2009 14:58:35 -0000      1.1.2.2
@@ -4,10 +4,6 @@
 import java.util.Date;
 
 public class Event implements Serializable {
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
     private String id;
     private String titel;
     private String omschrijving;


Index: ActiviteitenService.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/ActiviteitenService.java,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -b -r1.1.2.7 -r1.1.2.8
--- ActiviteitenService.java    30 Jan 2009 10:49:39 -0000      1.1.2.7
+++ ActiviteitenService.java    11 Mar 2009 14:58:35 -0000      1.1.2.8
@@ -5,7 +5,7 @@
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
+import java.util.Set;
 
 import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
 
@@ -35,7 +35,7 @@
      * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getVersion()
      */
     public String getVersion() {
-        return "1";
+        return "2.0";
     }
 
     /*
@@ -56,8 +56,6 @@
             beans.add(beanFactory.createProvincie(node));
         }
         return (Provincie[]) beans.toArray(new Provincie[beans.size()]);
-        // if (true) throw new IllegalArgumentException("dit is een test 
fout");
-        // return null;
     }
 
     /*
@@ -77,11 +75,12 @@
             throw new IllegalArgumentException("Start en/of einddatum 
ontbreekt");
         }
         Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
-        Map eventNodes = ActiviteitenHelper.findEvents(cloud, start, eind, 
eventTypeIds, provincieId, natuurgebiedenId);
+        Set eventNodes = ActiviteitenHelper.findParentEvents(cloud, start, 
eind, eventTypeIds, provincieId, natuurgebiedenId);
         List beans = new ArrayList();
-        for (Iterator iter = eventNodes.entrySet().iterator(); 
iter.hasNext();) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            String eventNumber = (String) entry.getValue();
+        for (Iterator iter = eventNodes.iterator(); iter.hasNext();) {
+            //Map.Entry entry = (Map.Entry) iter.next();
+            //String eventNumber = (String) entry.getValue();
+            String eventNumber = (String) iter.next();
             logger.debug("getting node for: " + eventNumber);
             Node event = cloud.getNode(eventNumber);
             beans.add(beanFactory.createEvent(event));
@@ -188,7 +187,14 @@
             logger.debug("Geen evenement: " + id);
             return null;
         }
-        return beanFactory.createEventDetails(node);
+        // always return the parent node, childs details are in EventData[]
+        String parentNumber = 
nl.leocms.evenementen.Evenement.findParentNumber(id);
+        if (parentNumber == null) {
+            logger.debug("Geen parent gevonden: " + id);
+            return null;
+        }
+        Node parent = cloud.getNode(parentNumber);
+        return beanFactory.createEventDetails(parent);
     }
 
     public Vertrekpunt[] getVertrekpunten() {
@@ -211,7 +217,7 @@
         try {
             eventNode = cloud.getNode(subscription.getEvenementId());
         } catch (NotFoundException ex) {
-            throw new IllegalArgumentException("Evenement id bestaat niet: " + 
subscription.getEvenementId(), ex);
+            throw new IllegalArgumentException("Evenement id bestaat niet: " + 
subscription.getEvenementId());
         }
         if (eventNode == null) {
             throw new IllegalArgumentException("Evenement id bestaat niet: " + 
subscription.getEvenementId());


Index: BeanFactory.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/BeanFactory.java,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -b -r1.1.2.4 -r1.1.2.5
--- BeanFactory.java    19 Jan 2009 13:55:47 -0000      1.1.2.4
+++ BeanFactory.java    11 Mar 2009 14:58:35 -0000      1.1.2.5
@@ -2,7 +2,9 @@
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.mmbase.bridge.Cloud;
@@ -147,6 +149,7 @@
         if (!isEmpty(tekst)) {
             bean.setVolledigeOmschrijving(tekst);
         }
+        
         bean.setAanvangstijd(toDate(node.getLongValue("begindatum")));
         bean.setEindtijd(toDate(node.getLongValue("einddatum")));
         NodeList eventTypeNodeList = node.getRelatedNodes("evenement_type");
@@ -163,21 +166,44 @@
         
         Cloud cloud = node.getCloud();
         String eventNumber = node.getStringValue("number");
-        String parentNumber = 
nl.leocms.evenementen.Evenement.findParentNumber(eventNumber);
-        Node imageNode = ActiviteitenHelper.getFoto(cloud, parentNumber);
+        Node imageNode = ActiviteitenHelper.getFoto(cloud, eventNumber);
         if (imageNode != null) {
             bean.setFoto(createFoto(imageNode));
         }
-        Node parentEvent = cloud.getNode(parentNumber);
-        
bean.setAantalPlaatsenBeschikbaar(ActiviteitenHelper.getAantalBeschikbarePlaatsen(parentEvent,
 node));
-        boolean volgeboekt = 
nl.leocms.evenementen.Evenement.isFullyBooked(parentEvent, node);
-        boolean aanmeldingGesloten = 
nl.leocms.evenementen.Evenement.subscriptionClosed(parentEvent, node);
-        boolean canceled = node.getBooleanValue("iscanceled");
+        Set childEvents = ActiviteitenHelper.getChildEvents(cloud, 
eventNumber);
+        List data = new ArrayList();
+        if (childEvents.isEmpty()) {
+            bean.setEenmaligEvent(true);
+            // no childs put info of parent in EventData
+            EventData eventData = createEventData(node, node);
+            data.add(eventData);
+        } else {
+            for (Iterator iter = childEvents.iterator(); iter.hasNext();) {
+                String childNumber = (String) iter.next();
+                Node childNode = cloud.getNode(childNumber); 
+                EventData eventData = createEventData(node, childNode);
+                data.add(eventData);
+            }
+            bean.setEenmaligEvent(false);
+        }
+        bean.setEventData((EventData[])data.toArray(new 
EventData[data.size()]));
+        return bean;
+    }
+    
+    private EventData createEventData(Node parentNode, Node childNode) {
+        EventData bean = new EventData();
+        String eventNumber = childNode.getStringValue("number");
+        bean.setId(eventNumber);
+        boolean volgeboekt = 
nl.leocms.evenementen.Evenement.isFullyBooked(parentNode, childNode);
         bean.setVolgeboekt(volgeboekt);
+        boolean aanmeldingGesloten = 
nl.leocms.evenementen.Evenement.subscriptionClosed(parentNode, childNode);
         bean.setAanmeldingGesloten(aanmeldingGesloten);
-        
bean.setTypeAanmeldMogelijkheid(node.getStringValue("aanmelden_vooraf"));
+        int aantalBeschikbarePlaatsen = 
ActiviteitenHelper.getAantalBeschikbarePlaatsen(parentNode, childNode);
+        bean.setAantalPlaatsenBeschikbaar(aantalBeschikbarePlaatsen);
+        bean.setAanvangstijd(toDate(childNode.getLongValue("begindatum")));
+        bean.setEindtijd(toDate(childNode.getLongValue("einddatum")));
+        boolean canceled = childNode.getBooleanValue("iscanceled");
         bean.setGeannuleerd(canceled);
-        
         return bean;
     }
     


Index: EventDetails.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/EventDetails.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -b -r1.1.2.2 -r1.1.2.3
--- EventDetails.java   16 Jan 2009 13:02:33 -0000      1.1.2.2
+++ EventDetails.java   11 Mar 2009 14:58:35 -0000      1.1.2.3
@@ -3,11 +3,8 @@
 import java.io.Serializable;
 import java.util.Date;
 
+// detail gegevens parent event
 public class EventDetails implements Serializable {
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
     private String id;
     private String titel;
     private String korteOmschrijving;
@@ -18,14 +15,14 @@
     private String contactPersoon;
     private String[] eventTypeId;
     private String[] natuurgebiedId;
-    private int aantalPlaatsenBeschikbaar;
-    private boolean volgeboekt;
-    private boolean aanmeldingGesloten;
     private Kosten[] kosten;
     private String[] vertrekpuntId;
     private String[] extraInfo;
     private String typeAanmeldMogelijkheid;
-    private boolean geannuleerd;
+    // als een event eenmalig is dan heeft het geen childs, we zetten dan de 
parent info in EventData
+    private boolean eenmaligEvent;
+    // detail gegevens per child event
+    private EventData[] eventData;
     public String getId() {
         return id;
     }
@@ -86,24 +83,6 @@
     public String[] getNatuurgebiedId() {
         return natuurgebiedId;
     }
-    public int getAantalPlaatsenBeschikbaar() {
-        return aantalPlaatsenBeschikbaar;
-    }
-    public void setAantalPlaatsenBeschikbaar(int aantalPlaatsenBeschikbaar) {
-        this.aantalPlaatsenBeschikbaar = aantalPlaatsenBeschikbaar;
-    }
-    public boolean isVolgeboekt() {
-        return volgeboekt;
-    }
-    public void setVolgeboekt(boolean volgeboekt) {
-        this.volgeboekt = volgeboekt;
-    }
-    public boolean isAanmeldingGesloten() {
-        return aanmeldingGesloten;
-    }
-    public void setAanmeldingGesloten(boolean aanmeldingGesloten) {
-        this.aanmeldingGesloten = aanmeldingGesloten;
-    }
     public void setKosten(Kosten[] kosten) {
         this.kosten = kosten;
     }
@@ -128,11 +107,16 @@
     public String getTypeAanmeldMogelijkheid() {
         return typeAanmeldMogelijkheid;
     }
-    public boolean isGeannuleerd() {
-        return geannuleerd;
+    public void setEventData(EventData[] eventData) {
+        this.eventData = eventData;
+    }
+    public EventData[] getEventData() {
+        return eventData;
+    }
+    public void setEenmaligEvent(boolean eenmaligEvent) {
+        this.eenmaligEvent = eenmaligEvent;
     }
-    public void setGeannuleerd(boolean geannuleerd) {
-        this.geannuleerd = geannuleerd;
+    public boolean isEenmaligEvent() {
+        return eenmaligEvent;
     }
-    
 }


Index: ActiviteitenHelper.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/ActiviteitenHelper.java,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -b -r1.1.2.7 -r1.1.2.8
--- ActiviteitenHelper.java     6 Mar 2009 11:14:45 -0000       1.1.2.7
+++ ActiviteitenHelper.java     11 Mar 2009 14:58:35 -0000      1.1.2.8
@@ -1,5 +1,6 @@
 package nl.natuurmonumenten.activiteiten;
 
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -21,7 +22,7 @@
 public class ActiviteitenHelper {
     private static Logger logger = Logger.getLogger(ActiviteitenHelper.class);
     
-    public static Map findEvents(Cloud cloud, Date start, Date eind, String[] 
eventTypeIds, String provincieId, String natuurgebiedenId) {
+    public static Set findParentEvents(Cloud cloud, Date start, Date eind, 
String[] eventTypeIds, String provincieId, String natuurgebiedenId) {
         // Deze code komt uit searchresults.jsp, omdat ik er geen touw aan 
vast kan knopen heb ik geprobeerd deze letterlijk over te zetten vanuit de jsp 
code
         // ik heb geen poging gedaan om het refactoren, *************** 
(gecensureerd)
         
@@ -29,107 +30,38 @@
         long lDateSearchTill = eind.getTime()/1000;
         logger.debug("lDateSearchFrom: " + lDateSearchFrom);
         logger.debug("lDateSearchTill: " + lDateSearchTill);
-        
-        
-        
-        // geen idee, maar ze rekken de tijd nog wat op
-//        Calendar cal = Calendar.getInstance();
-//        cal.setTime(new Date());
-//        long lDateSearchFromDefault = (cal.getTime().getTime()/1000);
-//        cal.add(Calendar.YEAR,1); // cache events for one year from now
-//        long lDateSearchTillDefault = (cal.getTime().getTime()/1000);
-
         //If the startdate is after the enddate, there can not exist any event 
         if (lDateSearchFrom >= lDateSearchTill) {
-           return new TreeMap();
-        }
-        
-        StringBuffer defaultParentEvents = new StringBuffer();
-        
-        HashSet parentEventSet = 
nl.leocms.evenementen.Evenement.getEvents(cloud,lDateSearchFrom,lDateSearchTill);
-        logger.debug("defaultEvents: " + parentEventSet);
-        boolean first = true;
-        for (Iterator iter = parentEventSet.iterator(); iter.hasNext();) {
-            String eventnumber = (String) iter.next();
-            if (first) {
-                first = false;
-            } else {
-                defaultParentEvents.append(",");
-            }
-            defaultParentEvents.append(eventnumber);
-        }
-        
-        logger.debug("defaultParentEvents: " + defaultParentEvents);
-
-        StringBuffer eventTypeConstraint = new StringBuffer();
-        if (eventTypeIds != null) {
-            first = true;
-            for (int i = 0; i < eventTypeIds.length; i++) {
-                // sommige soap clients geven een array met 1 leeg element ipv 
een lege array of null
-                if (isEmpty(eventTypeIds[i])) {
-                    continue;
-                }
-                if (first) {
-                    eventTypeConstraint.append("(");
-                    first = false;
-                } else {
-                    eventTypeConstraint.append(" OR ");
-                }
-                eventTypeConstraint.append("evenement_type.number='");
-                eventTypeConstraint.append(eventTypeIds[i]);
-                eventTypeConstraint.append("'");
-            }
-            if (!first) {
-                eventTypeConstraint.append(")");
+           return Collections.EMPTY_SET;
             }
+        String provincieConstraint = createProvincieConstraint(provincieId);
+        HashSet parentEvents = 
getEvents(cloud,lDateSearchFrom,lDateSearchTill, provincieConstraint);
+        logger.debug("parentEvents: " + parentEvents);
+        if (parentEvents.isEmpty()) {
+            return parentEvents;
         }
-        logger.debug("eventTypeConstraint: " + eventTypeConstraint);
-        
-        String provincieConstraint = null;
-        if (!isEmpty(provincieId)) {
-            provincieConstraint = "lokatie like '%," + provincieId + ",%'";
-        }
-        logger.debug("provincieConstraint: " + provincieConstraint);
-        Set parentEvents = new HashSet();
-        NodeList list = cloud.getList(defaultParentEvents.toString(), 
"evenement,related,evenement_type", "evenement.number", provincieConstraint, 
null, null, null, true);
-        for (NodeIterator iter = list.nodeIterator(); iter.hasNext();) {
-            Node node = iter.nextNode();
-            String parentNumber = node.getStringValue("evenement.number");
-            boolean parentBelongsToActivityType = true;
-            boolean parentBelongsToNatuurgebied = true;
-            
-            // check evenementType
-            if (eventTypeIds != null) {
-                // TODO how to find 1 node if it exists, not the whole list?
-                NodeList list2 = cloud.getList(parentNumber, 
"evenement,related,evenement_type", "evenement.number", 
"evenement_type.isoninternet='1'", null, null, null, true);
-                if (!list2.isEmpty()) {
-                    parentBelongsToActivityType = false;
-                }
-                NodeList list3 = cloud.getList(parentNumber, 
"evenement,related,evenement_type", "evenement.number", 
eventTypeConstraint.toString(), null, null, null, true);
-                if (!list3.isEmpty()) {
-                    parentBelongsToActivityType = true;
-                }
+        removeEventsNotOnInternet(cloud, parentEvents);
+        if (!isEmpty(eventTypeIds)) {
+            removeEventsWithoutEventType(cloud, eventTypeIds, parentEvents);
             }
-
-            logger.debug("natuurgebiedenId: " + natuurgebiedenId);
             if (!isEmpty(natuurgebiedenId)) {
-                parentBelongsToNatuurgebied = false;
-                NodeList list2 = cloud.getList(natuurgebiedenId, 
"natuurgebieden,related,evenement", "evenement.number", "evenement.number='" + 
parentNumber +"'", null, null, null, true);
-                if (!list2.isEmpty()) {
-                    parentBelongsToNatuurgebied = true;
-                }
+            removeEventsWithoutNatuurgebied(cloud, natuurgebiedenId, 
parentEvents);
             }
-            logger.debug("parentBelongsToNatuurgebied: " + 
parentBelongsToNatuurgebied);
-
-            if (parentBelongsToActivityType && parentBelongsToNatuurgebied) {
-                if (parentNumber != null && parentNumber.trim().length() > 0) {
-                    parentEvents.add(parentNumber);
+        return parentEvents;
                 }
+    public static Set getChildEvents(Cloud cloud, String parentNumber) {
+        HashSet childEvents = new HashSet();
+        NodeList childList = cloud.getList(parentNumber, 
"evenement1,partrel,evenement", "evenement.number", 
"evenement.isoninternet='true' and evenement.soort='child'", null, null, 
"destination", true);
+        for (NodeIterator iter = childList.nodeIterator(); iter.hasNext();) {
+            Node event = iter.nextNode();
+            childEvents.add(event.getStringValue("evenement.number"));
             }
+        return childEvents;
         }
+    public static Map getChildEvents(Cloud cloud, long lDateSearchFrom, long 
lDateSearchTill, Set parentEvents) {
         logger.debug("parentEvents: " + parentEvents);
         StringBuffer sb = new StringBuffer();
-        first = true;
+        boolean first = true;
         for (Iterator iter = parentEvents.iterator(); iter.hasNext();) {
             if (first) {
                 first = false;
@@ -276,9 +208,142 @@
         return thisParticipant;
      }
     
+
+    private static void removeEventsNotOnInternet(Cloud cloud, HashSet 
parentEvents) {
+        for (Iterator iter = parentEvents.iterator(); iter.hasNext();) {
+            String parentNumber = (String) iter.next();
+            String constraint = createEventTypeIsOnInternetConstraint();
+            NodeList list = cloud.getList(parentNumber, 
"evenement,related,evenement_type", "evenement.number", constraint, null, null, 
null, true);
+            if (list.isEmpty()) {
+                iter.remove();
+            }
+        }
+    }
+
+    private static void removeEventsWithoutNatuurgebied(Cloud cloud, String 
natuurgebiedenId, HashSet parentEvents) {
+        logger.debug("natuurgebiedenId: " + natuurgebiedenId);
+        for (Iterator iter = parentEvents.iterator(); iter.hasNext();) {
+            String parentNumber = (String) iter.next();
+            String constraint = createNatuurgebiedConstraint(parentNumber);
+            NodeList list = cloud.getList(natuurgebiedenId, 
"natuurgebieden,related,evenement", "evenement.number", constraint, null, null, 
null, true);
+            if (list.isEmpty()) {
+                iter.remove();
+            }
+        }
+    }
+
+    private static void removeEventsWithoutEventType(Cloud cloud, String[] 
eventTypeIds, HashSet parentEvents) {
+        for (Iterator iter = parentEvents.iterator(); iter.hasNext();) {
+            String parentNumber = (String) iter.next();
+            String constraint = createEventTypeConstraint(eventTypeIds);
+            if (!isEmpty(constraint)) {
+                NodeList list = cloud.getList(parentNumber, 
"evenement,related,evenement_type", "evenement.number", constraint, null, null, 
null, true);
+                if (list.isEmpty()) {
+                    iter.remove();
+                }
+            }
+        }
+    }
+
+    private static String createProvincieConstraint(String provincieId) {
+        String provincieConstraint = null;
+        if (!isEmpty(provincieId)) {
+            provincieConstraint = " AND lokatie like '%," + provincieId + ",%' 
";
+        }
+        return provincieConstraint;
+    }
+
+    private static String createNatuurgebiedConstraint(String parentNumber) {
+        StringBuffer sb = new StringBuffer();
+        sb.append("evenement.number='");
+        sb.append(parentNumber);
+        sb.append("'");
+        logger.debug("natuurgebiedConstraint: " + sb);
+        return sb.toString();
+    }
+
+    private static String createEventTypeIsOnInternetConstraint() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("evenement_type.isoninternet='1'");
+        logger.debug("eventTypeIsOnInternetConstraint: " + sb);
+        return sb.toString();
+    }
+
+    private static String createEventTypeConstraint(String[] eventTypeIds) {
+        StringBuffer sb = new StringBuffer();
+        boolean first = true;
+        for (int i = 0; i < eventTypeIds.length; i++) {
+            if (first) {
+                sb.append("evenement_type.isoninternet = 1 AND (");
+                first = false;
+            } else {
+                sb.append(" OR ");
+            }
+            sb.append("evenement_type.number='");
+            sb.append(eventTypeIds[i]);
+            sb.append("'");
+        }
+        if (!first) {
+            sb.append(")");
+        }
+        logger.debug("eventTypeConstraint: " + sb);
+        return sb.toString();
+    }
+
+    
+    public static HashSet getEvents(Cloud cloud, long lDateSearchFrom, long 
lDateSearchTill, String provincieConstraint) {
+        // all parent events that contain a date in the period
+        // [lDateSearchFrom,lDateSearchTill]
+        HashSet events = new HashSet();
+        String constraint = getEventsConstraint(lDateSearchFrom, 
lDateSearchTill);
+        if (provincieConstraint != null) {
+            constraint += provincieConstraint;
+        }
+        NodeList el = cloud.getList("", "evenement", "evenement.number", 
constraint, null, null, null, true);
+        for (int e = 0; e < el.size(); e++) {
+            String eventNumber = 
el.getNode(e).getStringValue("evenement.number");
+            if (!events.contains(eventNumber)) {
+                if (eventNumber != null && eventNumber.trim().length() > 0) {
+                    events.add(eventNumber);
+                }
+            }
+        }
+        return events;
+    }
+
+    private static String getEventsConstraint(long lDateSearchFrom, long 
lDateSearchTill) {
+        String sEventConstraint =
+           " (" +
+           "   ( " +
+           "       evenement.begindatum >= " + lDateSearchFrom +
+           "       AND evenement.begindatum <= " + lDateSearchTill + 
+           "   ) " +
+           "   OR " + 
+           "   (" +
+           "       evenement.einddatum >= " + lDateSearchFrom +
+           "       AND evenement.einddatum <= " + lDateSearchTill + 
+           "   ) " +
+           " ) " +
+           " AND evenement.isspare='false' AND evenement.isoninternet='true' " 
+
+           " AND soort='parent'";
+        return sEventConstraint;
+     }
+
     private static boolean isEmpty(String str) {
         return str == null || str.trim().length() == 0;
     }
 
+    private static boolean isEmpty(String[] str) {
+        if (str == null || str.length == 0) {
+            return true;
+        }
+        for (int i = 0; i < str.length; i++) {
+            if (!isEmpty(str[i])) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
 
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to