Update of /var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten
In directory
james.mmbase.org:/tmp/cvs-serv7402/src/nl/natuurmonumenten/activiteiten
Modified Files:
Tag: BRANCH_NATMM_1_2
ActiviteitenService.java MockActiviteitenService.java
ActiviteitenHelper.java IActiviteitenService.java
Added Files:
Tag: BRANCH_NATMM_1_2
Aanmelding.java Subscription.java
Log Message:
NMCMS-622 - Added subscribeEvent code
See also:
http://cvs.mmbase.org/viewcvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten
See also: http://www.mmbase.org/jira/browse/NMCMS-622
Aanmelding.java is new
Subscription.java is new
Index: ActiviteitenService.java
===================================================================
RCS file:
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/ActiviteitenService.java,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -b -r1.1.2.3 -r1.1.2.4
--- ActiviteitenService.java 16 Jan 2009 08:43:53 -0000 1.1.2.3
+++ ActiviteitenService.java 19 Jan 2009 11:23:51 -0000 1.1.2.4
@@ -2,17 +2,12 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Calendar;
import java.util.Date;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
-import nl.leocms.util.DoubleDateNode;
import org.apache.log4j.Logger;
import org.mmbase.bridge.Cloud;
@@ -20,6 +15,7 @@
import org.mmbase.bridge.NodeIterator;
import org.mmbase.bridge.NodeList;
import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.RelationList;
/**
* WebService voor de Centrale Activiteiten Database (CAD)
@@ -28,19 +24,27 @@
*
*/
public class ActiviteitenService implements IActiviteitenService {
- //private static Logger logger =
Logging.getLoggerInstance(MMBaseActiviteitenService.class);
+ // private static Logger logger =
+ // Logging.getLoggerInstance(MMBaseActiviteitenService.class);
private static Logger logger = Logger.getLogger(ActiviteitenService.class);
BeanFactory beanFactory = new BeanFactory();
- /* (non-Javadoc)
- * @see
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getVersion()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getVersion()
*/
public String getVersion() {
return "0.2";
}
- /* (non-Javadoc)
- * @see
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getProvincies()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getProvincies
+ * ()
*/
public Provincie[] getProvincies() {
logger.debug("getProvincies");
@@ -57,8 +61,13 @@
// return null;
}
- /* (non-Javadoc)
- * @see
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEvents(java.util.Date,
java.util.Date, java.lang.String[], java.lang.String, java.lang.String)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEvents(
+ * java.util.Date, java.util.Date, java.lang.String[], java.lang.String,
+ * java.lang.String)
*/
public Event[] getEvents(Date start, Date eind, String[] eventTypeIds,
String provincieId, String natuurgebiedenId) {
logger.debug("getEvents() - eventTypeIds: " + eventTypeIds);
@@ -80,14 +89,17 @@
}
logger.debug("beans: " + beans);
logger.debug("beans.size(): " + beans.size());
-
Event[] events = (Event[]) beans.toArray(new Event[beans.size()]);
logger.debug("events: " + Arrays.asList(events));
return events;
}
- /* (non-Javadoc)
- * @see
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEventTypes()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEventTypes
+ * ()
*/
public EventType[] getEventTypes() {
logger.debug("getEventTypes");
@@ -103,8 +115,12 @@
return (EventType[]) beans.toArray(new EventType[beans.size()]);
}
- /* (non-Javadoc)
- * @see
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getMediaTypes()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getMediaTypes
+ * ()
*/
public MediaType[] getMediaTypes() {
logger.debug("getMediaTypes");
@@ -119,8 +135,11 @@
return (MediaType[]) beans.toArray(new MediaType[beans.size()]);
}
- /* (non-Javadoc)
- * @see
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getDeelnemersCategorieen()
+ /*
+ * (non-Javadoc)
+ *
+ * @seenl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#
+ * getDeelnemersCategorieen()
*/
public DeelnemersCategorie[] getDeelnemersCategorieen() {
logger.debug("getDeelnemersCategorieen");
@@ -135,8 +154,12 @@
return (DeelnemersCategorie[]) beans.toArray(new
DeelnemersCategorie[beans.size()]);
}
- /* (non-Javadoc)
- * @see
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getNatuurgebieden()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ *
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getNatuurgebieden
+ * ()
*/
public Natuurgebied[] getNatuurgebieden() {
logger.debug("getNatuurgebieden");
@@ -175,5 +198,44 @@
return (Vertrekpunt[]) beans.toArray(new Vertrekpunt[beans.size()]);
}
-
+ public String subscribeEvent(Subscription subscription) {
+ Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
+ Node eventNode = cloud.getNode(subscription.getEvenementId());
+ if (eventNode == null) {
+ throw new IllegalArgumentException("Evenement id does not exist: "
+ subscription.getEvenementId());
+ }
+ NodeManager manager = cloud.getNodeManager("inschrijvingen");
+ Node subscriptionNode = manager.createNode();
+ subscriptionNode.setLongValue("datum_inschrijving", (new
Date()).getTime() / 1000);
+ subscriptionNode.setStringValue("source",
subscription.getMediaTypeId());
+ subscriptionNode.setStringValue("description",
subscription.getBijzonderheden());
+ subscriptionNode.setStringValue("ticket_office", "website");
+ subscriptionNode.commit();
+ eventNode.createRelation(subscriptionNode,
cloud.getRelationManager("posrel")).commit();
+ // *** update inschrijvingen,related,inschrijvings_status
+ RelationList relations = subscriptionNode.getRelations("related",
"inschrijvings_status");
+ for (int r = 0; r < relations.size(); r++) {
+ relations.getRelation(r).delete(true);
+ }
+ String thisStatus =
cloud.getNode("site_subscription").getStringValue("number");
+ Node statusNode = cloud.getNode(thisStatus);
+ if (statusNode != null) {
+ subscriptionNode.createRelation(cloud.getNode(thisStatus),
cloud.getRelationManager("related")).commit();
+ } else {
+ logger.error("inschrijvings_status with number " + thisStatus + "
does not exist.");
+ }
+ Aanmelding[] aanmeldingen = subscription.getAanmeldingen();
+ if (aanmeldingen != null) {
+ for (int i = 0; i < aanmeldingen.length; i++) {
+ if (aanmeldingen[i].getAantal() > 0) {
+ logger.debug("aanmelding-deelnemerscatid:" +
aanmeldingen[i].getDeelnemersCategorieId());
+ logger.debug("aanmelding-aantal:" +
aanmeldingen[i].getAantal());
+ ActiviteitenHelper.createParticipant(cloud, eventNode,
subscriptionNode, aanmeldingen[i]
+ .getDeelnemersCategorieId(),
aanmeldingen[i].getAantal(), subscription);
+ }
+ }
+ }
+ // emails worden niet verstuurd zoals in het origineel, dit hoeft niet
+ return "Aanmelding ontvangen";
+ }
}
Index: MockActiviteitenService.java
===================================================================
RCS file:
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/MockActiviteitenService.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
--- MockActiviteitenService.java 16 Jan 2009 08:00:10 -0000 1.1.2.1
+++ MockActiviteitenService.java 19 Jan 2009 11:23:51 -0000 1.1.2.2
@@ -49,4 +49,9 @@
// TODO Auto-generated method stub
return null;
}
+
+ public String subscribeEvent(Subscription subscription) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
Index: ActiviteitenHelper.java
===================================================================
RCS file:
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/ActiviteitenHelper.java,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -b -r1.1.2.3 -r1.1.2.4
--- ActiviteitenHelper.java 16 Jan 2009 13:02:33 -0000 1.1.2.3
+++ ActiviteitenHelper.java 19 Jan 2009 11:23:51 -0000 1.1.2.4
@@ -8,11 +8,16 @@
import java.util.Set;
import java.util.TreeMap;
+import nl.leocms.evenementen.Evenement;
+import nl.leocms.evenementen.forms.SubscribeAction;
+
import org.apache.log4j.Logger;
import org.mmbase.bridge.Cloud;
import org.mmbase.bridge.Node;
import org.mmbase.bridge.NodeIterator;
import org.mmbase.bridge.NodeList;
+import org.mmbase.bridge.Relation;
+import org.mmbase.bridge.RelationList;
public class ActiviteitenHelper {
private static Logger logger = Logger.getLogger(ActiviteitenHelper.class);
@@ -182,4 +187,79 @@
public static int getAantalBeschikbarePlaatsen(Node parentEvent, Node
childEvent) {
return parentEvent.getIntValue("max_aantal_deelnemers") -
childEvent.getIntValue("cur_aantal_deelnemers");
}
+
+ public static Node createParticipant(Cloud cloud, Node thisEvent, Node
thisSubscription, String thisCategory, int thisNumber, Subscription
subscription) {
+
+ Node thisParticipant = null;
+ thisParticipant = cloud.getNodeManager("deelnemers").createNode();
+
+ thisParticipant.setStringValue("initials",
subscription.getVoorletter());
+ thisParticipant.setStringValue("firstname",
subscription.getVoornaam());
+ thisParticipant.setStringValue("suffix",
subscription.getTussenvoegsel());
+ thisParticipant.setStringValue("lastname",
subscription.getAchternaam());
+ thisParticipant.setStringValue("email", subscription.getEmail());
+ thisParticipant.setStringValue("privatephone",
subscription.getTelefoon());
+ thisParticipant.setStringValue("straatnaam", subscription.getStraat());
+ thisParticipant.setStringValue("huisnummer",
subscription.getHuisnummer());
+ thisParticipant.setStringValue("plaatsnaam", subscription.getPlaats());
+ thisParticipant.setStringValue("land", subscription.getLand());
+ thisParticipant.setStringValue("postcode", subscription.getPostcode());
+ thisParticipant.setStringValue("lidnummer",
subscription.getLidnummer());
+ thisParticipant.commit();
+
+ Relation thisRel = null;
+ if(thisRel==null) {
+ thisRel =
thisSubscription.createRelation(thisParticipant,cloud.getRelationManager("posrel"));
+ }
+
+ // set the price for this participant
+ int costs = 9999;
+ String sParent =
Evenement.findParentNumber(thisEvent.getStringValue("number"));
+
if(!Evenement.isGroupBooking(cloud,thisParticipant.getStringValue("number"))) {
+ // this is a regular excursion
+ NodeList dcl = cloud.getList( sParent
+
,"evenement,posrel,deelnemers_categorie"
+ ,"posrel.pos"
+ ,"deelnemers_categorie.number='"+
thisCategory+ "'",null,null,null,false);
+ if(dcl.size()>0) {
+ costs = dcl.getNode(0).getIntValue("posrel.pos");
+ logger.debug("costs1: " + costs);
+ // if these are members of a group_excursion, but not the main
group excursion participant: set costs to zero
+ if(Evenement.isGroupExcursion(cloud,sParent)
+ && (costs==SubscribeAction.GROUP_EXCURSION_COSTS ||
costs==SubscribeAction.DEFAULT_COSTS )) {
+ costs = 0;
+ }
+ logger.debug("costs2: " + costs);
+ }
+ costs = costs * thisNumber;
+ logger.debug("costs3: " + costs);
+ } else {
+ // this is the subscription for group excursion
+ costs = Evenement.getGroupExcursionCosts(cloud, sParent,
thisSubscription.getStringValue("number"));
+ logger.debug("costs4: " + costs);
+ }
+ logger.debug("costs5: " + costs);
+ thisRel.setIntValue("pos",costs);
+ thisRel.commit();
+
+ // *** update deelnemers,related,deelnemers_categorie
+
if(!Evenement.isGroupBooking(cloud,thisParticipant.getStringValue("number"))) {
+
+ thisParticipant.setStringValue("bron", String.valueOf(thisNumber));
+ thisParticipant.commit();
+ RelationList relations =
thisParticipant.getRelations("related","deelnemers_categorie");
+ for(int r=0; r<relations.size(); r++) {
relations.getRelation(r).delete(true); }
+ if(!thisCategory.equals("-1")) {
+
+ Node thisCategoryNode = cloud.getNode(thisCategory);
+
thisParticipant.createRelation(thisCategoryNode,cloud.getRelationManager("related")).commit();
+
+ }
+ }
+
+ thisEvent.commit(); // *** save to update cur_aantal_deelnemers
+
+ return thisParticipant;
+ }
+
}
Index: IActiviteitenService.java
===================================================================
RCS file:
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/IActiviteitenService.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
--- IActiviteitenService.java 16 Jan 2009 08:00:10 -0000 1.1.2.1
+++ IActiviteitenService.java 19 Jan 2009 11:23:51 -0000 1.1.2.2
@@ -27,4 +27,6 @@
public abstract EventDetails getEventDetails(String id);
public abstract Vertrekpunt[] getVertrekpunten();
+
+ public abstract String subscribeEvent(Subscription subscription);
}
\ No newline at end of file
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs