source: contrib/MailArchiver/sources/src/serpro/mailarchiver/service/web/DefaultGetRawBinaryBodyOperation.java @ 6785

Revision 6785, 3.2 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.service.web;
31
32import java.io.IOException;
33
34import javax.jdo.annotations.PersistenceAware;
35
36import org.springframework.beans.factory.annotation.Autowired;
37
38import serpro.mailarchiver.domain.metaarchive.SingleBody;
39import serpro.mailarchiver.service.BaseService;
40import serpro.mailarchiver.service.find.FBinaryBody;
41import serpro.mailarchiver.service.find.FTextBody;
42import serpro.mailarchiver.util.transaction.WithReadOnlyTx;
43import serpro.mailarchiver.util.Logger;
44
45@PersistenceAware
46public class DefaultGetRawBinaryBodyOperation
47    extends BaseService
48    implements GetRawBinaryBodyOperation
49{
50    private static final Logger log = Logger.getLocalLogger();
51
52    @Autowired
53    private FBinaryBody findBinaryBody;
54
55    @Autowired
56    private FTextBody findTextBody;
57
58    @WithReadOnlyTx
59    @Override
60    public String apply(String bodyId) throws ServiceFault {
61
62        if(bodyId.isEmpty()) {
63            ServiceFault.invalidBodyId()
64                    .setActor("getRawBinaryBody")
65                    .setMessage("Body id is empty or null.")
66                    .raise();
67        }
68
69        SingleBody body = findBinaryBody.byId(bodyId);
70
71        if(body == null) {
72
73            body = findTextBody.byId(bodyId);
74
75            if(body == null) {
76
77                ServiceFault.binaryBodyNotFound()
78                        .setActor("getRawBinaryBody")
79                        .setMessage("Body not found.")
80                        .addValue("bodyId", bodyId)
81                        .raise();
82            }
83        }
84
85        String rawText = null;
86        try {
87            rawText = body.getRawText();
88        }
89        catch(IOException ex) {
90            ServiceFault.fileSystemFailure()
91                    .setActor("getRawBinaryBody")
92                    .setMessage("Body publish failure.")
93                    .addValue("bodyId", bodyId)
94                    .setCause(ex)
95                    .raise();
96        }
97
98        return rawText;
99    }
100}
Note: See TracBrowser for help on using the repository browser.