View Javadoc

1   package org.apache.fulcrum.commonsemail.impl;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.fulcrum.commonsemail.SendDeliveryStatus;
23  
24  import javax.mail.Address;
25  import javax.mail.event.TransportEvent;
26  import java.util.ArrayList;
27  import java.util.List;
28  
29  /**
30   * Keep track of the delivery status of a single email.
31   *
32   * @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
33   */
34  
35  public class SendDeliveryStatusImpl implements SendDeliveryStatus
36  {
37      private List validSentAddressList;
38      private List validUnsentAddressList;
39      private List invalidAddressList;
40  
41      /**
42       * Constructor.
43       */
44      SendDeliveryStatusImpl()
45      {
46          this.validSentAddressList = new ArrayList();
47          this.validUnsentAddressList = new ArrayList();
48          this.invalidAddressList = new ArrayList();        
49      }
50  
51      /** @see org.apache.fulcrum.commonsemail.SendDeliveryStatus#hasSucceeded()  */
52      public boolean hasSucceeded()
53      {
54          if((this.validSentAddressList.size() > 0) &&
55             (this.validUnsentAddressList.size() == 0) &&
56             (this.invalidAddressList.size() == 0 ))
57          {
58              return true;
59          }
60          else
61          {
62              return false;
63          }
64      }
65  
66      /** @see org.apache.fulcrum.commonsemail.SendDeliveryStatus#getValidSentAddresses()  */
67      public Address[] getValidSentAddresses()
68      {
69          List currList = this.validSentAddressList;
70          return (Address[]) currList.toArray(new Address[currList.size()]);
71      }
72  
73      /** @see org.apache.fulcrum.commonsemail.SendDeliveryStatus#getValidUnsentAddresses()  */
74      public Address[] getValidUnsentAddresses()
75      {
76          List currList = this.validUnsentAddressList; 
77          return (Address[]) currList.toArray(new Address[currList.size()]);
78      }
79  
80      /** @see org.apache.fulcrum.commonsemail.SendDeliveryStatus#getInvalidAddresses()  */
81      public Address[] getInvalidAddresses()
82      {
83          List currList = this.invalidAddressList; 
84          return (Address[]) currList.toArray(new Address[currList.size()]);
85      }
86  
87      /** @see Object#toString() */
88      public String toString()
89      {
90          StringBuffer result = new StringBuffer(128);
91          result.append(this.getClass().getName());
92          result.append('@');
93          result.append(Integer.toHexString(this.hashCode()));
94          result.append(' ');
95          result.append("validSentAddresses:");
96          result.append(this.validSentAddressList.size());
97          result.append(',');
98          result.append("validUnsentAddresses:");
99          result.append(this.validUnsentAddressList.size());
100         result.append(',');
101         result.append("invalidAddresses:");
102         result.append(this.invalidAddressList.size());
103         return result.toString();
104     }
105 
106     /**
107      * Store the addresses of the incoming TransportEvents.
108      *
109      * @param transportEvent the transport event
110      */
111     void add( TransportEvent transportEvent )
112     {
113         this.addAddresses(this.validSentAddressList, transportEvent.getValidSentAddresses());
114         this.addAddresses(this.validUnsentAddressList, transportEvent.getValidUnsentAddresses() );
115         this.addAddresses(this.invalidAddressList, transportEvent.getInvalidAddresses());
116     }
117 
118     /**
119      * Store the addresses.
120      *
121      * @param sentAddresses of email addresses
122      */
123     void addSendAddressList( Address[] sentAddresses )
124     {
125         this.addAddresses(this.validSentAddressList, sentAddresses);
126     }
127 
128     /**
129      * Add a list of addresses to the given target list
130      *
131      * @param target the target list
132      * @param addressList the address list
133      */
134     private void addAddresses(List target, Address[] addressList)
135     {
136         if((addressList != null) && (addressList.length > 0))
137         {
138             for(int i=0; i<addressList.length; i++)
139             {
140                 target.add( addressList[i]);
141             }
142         }
143     }
144 }