source: contrib/MailArchiver/sources/src/serpro/mailarchiver/domain/metaarchive/AddressListField_Group.java @ 6785

Revision 6785, 5.3 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado codigo do MailArchiver?. Documentação na subpasta DOCS.

Line 
1/**
2 * MailArchiver is an application that provides services for storing and managing e-mail messages through a Web Services SOAP interface.
3 * Copyright (C) 2012  Marcio Andre Scholl Levien and Fernando Alberto Reuter Wendt and Jose Ronaldo Nogueira Fonseca Junior
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Affero General Public License as
7 * published by the Free Software Foundation, either version 3 of the
8 * License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
19/******************************************************************************\
20*
21*  This product was developed by
22*
23*        SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO),
24*
25*  a government company established under Brazilian law (5.615/70),
26*  at Department of Development of Porto Alegre.
27*
28\******************************************************************************/
29
30package serpro.mailarchiver.domain.metaarchive;
31
32import java.util.ArrayList;
33import java.util.Collections;
34import java.util.List;
35
36import javax.jdo.JDOHelper;
37import javax.jdo.annotations.NotPersistent;
38import javax.jdo.annotations.PersistenceCapable;
39
40import org.apache.james.mime4j.codec.EncoderUtil;
41
42import serpro.mailarchiver.util.Logger;
43
44@PersistenceCapable
45public class AddressListField_Group
46    extends AddressListField_Address
47{
48    @NotPersistent
49    private static final Logger log = Logger.getLocalLogger();
50
51    //**** P E R S I S T E N T ****
52    private ArrayList<AddressListField_Group_Mailbox> mailboxList = new ArrayList<AddressListField_Group_Mailbox>();
53    //*****************************
54
55    public final List<AddressListField_Group_Mailbox> getMailboxList() {
56        return Collections.unmodifiableList(mailboxList);
57    }
58
59    public final int indexOf(AddressListField_Group_Mailbox mailbox) {
60        return mailboxList.indexOf(mailbox);
61    }
62
63    public final void addMailbox(AddressListField_Group_Mailbox mailbox) {
64        if(mailbox != null) {
65            mailbox.setGroup(this);
66        }
67    }
68
69    final void internal_addMailbox(AddressListField_Group_Mailbox mailbox) {
70        mailboxList.add(mailbox);
71    }
72
73    public final void removeMailbox(AddressListField_Group_Mailbox mailbox) {
74        if((mailbox != null) && (mailbox.getGroup() == this)) {
75            mailbox.setGroup(null);
76        }
77    }
78
79    final void internal_removeMailbox(AddressListField_Group_Mailbox mailbox) {
80        mailboxList.remove(mailbox);
81    }
82
83    //----------------------------------------------------------------------
84    @Override
85    public final String toDisplayString(boolean includeRoute) {
86        String name = getName();
87
88        StringBuilder sb = new StringBuilder();
89
90        sb.append(name);
91        sb.append(":");
92
93        boolean first = true;
94        for(AddressListField_Group_Mailbox mailbox : getMailboxList()) {
95            if(first) {
96                first = false;
97            }
98            else {
99                sb.append(",");
100            }
101            sb.append(" ");
102            sb.append(mailbox.toDisplayString(includeRoute));
103        }
104        sb.append(";");
105
106        return sb.toString();
107    }
108
109    @Override
110    public final String toEncodedString() {
111        String name = getName();
112
113        StringBuilder sb = new StringBuilder();
114
115        sb.append(EncoderUtil.encodeAddressDisplayName(name));
116        sb.append(":");
117
118        boolean first = true;
119        for(AddressListField_Group_Mailbox mailbox : getMailboxList()) {
120            if (first) {
121                first = false;
122            }
123            else {
124                sb.append(",");
125            }
126
127            sb.append(" ");
128            sb.append(mailbox.toEncodedString());
129        }
130        sb.append(";");
131
132        return sb.toString();
133    }
134
135    //----------------------------------------------------------------------
136    @Override
137    final void dumpTree(StringBuilder sb, String pad) {
138        int size = mailboxList.size();
139        sb.append(toString(pad + ((size > 0) ? "|   " : "    ")));
140        for(int i = 0; i < size; i++) {
141            sb.append("\n")
142              .append(pad).append("|\n");
143            if(i < (size - 1)) {
144                sb.append(pad).append("+---");
145                mailboxList.get(i).dumpTree(sb, pad + "|   ");
146            }
147            else {
148                sb.append(pad).append("+---");
149                mailboxList.get(i).dumpTree(sb, pad + "    ");
150            }
151        }
152    }
153
154    @Override
155    final String toString(String pad) {
156        String idx = (getField() == null) ? "" : ("[" + String.valueOf(getFieldIdx()) + "]");
157        return String.format(
158                "AddressListField_Group %1$s%n"
159              + "%2$sjdoState: %3$s%n"
160              + "%2$soid: %4$s%n"
161              + "%2$shash: %5$x%n"
162              + "%2$sname: %6$s"
163              , idx
164              , pad
165              , JDOHelper.getObjectState(this)
166              , getOid()
167              , hashCode()
168              , getName());
169    }
170}
Note: See TracBrowser for help on using the repository browser.