source: contrib/MailArchiver/sources/src/serpro/mailarchiver/util/BodyVisitor.java @ 6785

Revision 6785, 3.9 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.util;
31
32import serpro.mailarchiver.domain.metaarchive.BinaryBody;
33import serpro.mailarchiver.domain.metaarchive.ContentDispositionField;
34import serpro.mailarchiver.domain.metaarchive.ContentTypeField;
35import serpro.mailarchiver.domain.metaarchive.Entity;
36import serpro.mailarchiver.domain.metaarchive.SingleBody;
37import serpro.mailarchiver.domain.metaarchive.TextBody;
38
39public abstract class BodyVisitor {
40
41    private boolean quitted;
42
43    public final boolean isQuitted() {
44        return quitted;
45    }
46
47    protected final void quit() {
48        quitted = true;
49    }
50
51    public final void visitSingleBody(SingleBody singleBody) {
52        if(singleBody == null) {
53            return;
54        }
55        if(quitted) {
56            return;
57        }
58
59        boolean isTextBody = (singleBody instanceof TextBody);
60        boolean isBinaryBody = (singleBody instanceof BinaryBody);
61
62        Entity entity = singleBody.getEntity();
63
64        ContentTypeField contentTypeField = (entity != null) ? entity.getContentTypeField() : null;
65
66        boolean isTextType  = (contentTypeField != null) ? contentTypeField.isTextMediaType()  : true;
67        boolean isImageType = (contentTypeField != null) ? contentTypeField.isImageMediaType() : false;
68        boolean isAudioType = (contentTypeField != null) ? contentTypeField.isAudioMediaType() : false;
69        boolean isVideoType = (contentTypeField != null) ? contentTypeField.isVideoMediaType() : false;
70
71        ContentDispositionField contentDispositionField = (entity != null) ? entity.getContentDispositionField() : null;
72
73        boolean isInlineDisposition = (contentDispositionField != null) ? contentDispositionField.isInlineDisposition() : false;
74        boolean isAttachmentDisposition = (contentDispositionField != null) ? contentDispositionField.isAttachmentDisposition() : false;
75
76        if(isTextBody && isTextType && !isAttachmentDisposition) {
77            visitTextBody((TextBody)singleBody);
78        }
79
80        if(isBinaryBody) {
81            visitBinaryBody((BinaryBody)singleBody);
82        }
83
84        if(isInlineDisposition && !isTextType) {
85            visitInlineBody(singleBody);
86        }
87        else if(isAttachmentDisposition) {
88            visitAttachmentBody(singleBody);
89        }
90        else {
91            if(isImageType || isAudioType || isVideoType) {
92                visitAttachmentBody(singleBody);
93            }
94        }
95    }
96
97    public void visitTextBody(TextBody textBody) {}
98
99    public void visitBinaryBody(BinaryBody binaryBody) {}
100
101    public void visitInlineBody(SingleBody singleBody) {}
102
103    public void visitAttachmentBody(SingleBody singleBody) {}
104}
Note: See TracBrowser for help on using the repository browser.