1   package ch.ige.edossier.web.server;
2   
3   import java.util.Map;
4   import java.util.Properties;
5   import org.apache.log4j.Logger;
6   import ch.ige.edossier.util.ImageProcessor;
7   import ch.ige.edossier.util.ServerProperties;
8   import ch.ige.edossier.web.server.dao.AnswerDAO;
9   import ch.ige.edossier.web.vo.AnswerVO;
10  import ch.ige.edossier.web.vo.ImageVO;
11  import ch.ige.edossier.web.vo.MailSenderVO;
12  
13  /**
14   * B32.03 - eDossier-Interceptions - Diplomarbeit an der Software-Schule Schweiz<br>
15   * Die Klasse AnswerAssembler ist die Steuerklasse für die Datenaufbereitung der Antworten.
16   * <p>
17   * Copyright (c) 2004, Eidgenössisches Institut für Geistiges Eigentum
18   * @author    Anita Rueegsegger, Marc Bouquet
19   * @version   $Id: AnswerAssembler.java,v 1.12 2004/11/02 02:01:48 bouquet Exp $
20   */
21  public class AnswerAssembler
22  {
23    /**
24     * Standard-Konstruktor
25     */
26    public AnswerAssembler()
27    {}
28  
29    /**
30     * Diese Methode gibt ein Value-Object für die Anzeige einer Antwort zurück.
31     * @param interceptionId int Nummer zum selektieren eines Datensatzes
32     * @throws Exception Unerwarteter Fehler
33     * @return AnswerVO Value-Object
34     */
35    public AnswerVO getAnswer( int interceptionId ) throws Exception
36    {
37      return new AnswerDAO().selectByInterception( interceptionId );
38    }
39  
40    /**
41     * Diese Methode speichert in der Tabelle Answer die Antwort des Benutzers.
42     * @param answerVO AnswerVO Value-Object
43     * @param languageCd String Sprachcode
44     * @throws Exception Unerwarteter Fehler
45     * @return MailSenderVO Value-Object für den Versand der Antwort
46     */
47    public MailSenderVO saveAnswer( AnswerVO answerVO, String languageCd ) throws Exception
48    {
49      new AnswerDAO().insert( answerVO );
50      return fillMailVO( answerVO, languageCd );
51    }
52  
53    /**
54     * Diese Methode gibt ein Value-Object mit den Anzeige-Daten des Attachment zurück.
55     * @param answerVO AnswerVO Value-Object
56     * @throws Exception Unerwarteter Fehler
57     * @return ImageVO Value-Object
58     */
59    public ImageVO getAttachement( AnswerVO answerVO ) throws Exception
60    {
61      return loadAttachment( answerVO );
62    }
63  
64    /**
65     * Diese Methode erzeugt ein Value-Object für den Mailversand.
66     * @param answerVO AnswerVO Value-Object mit den Antwortdaten
67     * @param languageCd String Sprachcode
68     * @throws Exception Unerwarteter Fehler
69     * @return MailSenderVO Value-Object für den Mailversand
70     */
71    private MailSenderVO fillMailVO( AnswerVO answerVO, String languageCd ) throws Exception
72    {
73      Properties properties = ServerProperties.loadWebProperties( languageCd );
74      MailSenderVO mailSenderVO = new MailSenderVO();
75      mailSenderVO.setAdressTo( answerVO.getMaEmail() );
76      mailSenderVO.setAdressCc( answerVO.getEmail() );
77      mailSenderVO.setAdressFrom( answerVO.getEmail() );
78      mailSenderVO.setSubject( properties.getProperty( "mail.answer.subject" ) + " " + answerVO.getSubject().replaceAll( "<br>", " " ) );
79  
80      StringBuffer buf = new StringBuffer();
81      buf.append( properties.getProperty( "mail.body.auto" ) ); // Globale definierte Resource
82      buf.append( properties.getProperty( "mail.answer.body.start" ) );
83      buf.append( answerVO.getName() );
84      buf.append( properties.getProperty( "mail.answer.body.phone" ) );
85      buf.append( answerVO.getTelNr() );
86  
87      if( answerVO.getStandardtext() != null && !answerVO.getStandardtext().equals( "" ) )
88      {
89        buf.append( properties.getProperty( "mail.answer.body.standardtext" ) );
90        buf.append( answerVO.getStandardtext() );
91      }
92      if( answerVO.getText() != null && !answerVO.getText().equals( "" ) )
93      {
94        buf.append( properties.getProperty( "mail.answer.body.freetext" ) );
95        buf.append( answerVO.getText() );
96      }
97      buf.append( properties.getProperty( "mail.body.end" ) ); // Globale definierte Resource
98      mailSenderVO.setBody( buf.toString() );
99  
100     if( answerVO.getAttachement() != null )
101     {
102       mailSenderVO.setFileName( answerVO.getFileName() );
103       mailSenderVO.setMimeType( answerVO.getMimeType() );
104       mailSenderVO.setFile( answerVO.getAttachement() );
105     }
106     return mailSenderVO;
107   }
108 
109   /**
110    * Diese Methode holt die Daten des Attachment und überprüft, ob es Bild-Daten oder eine PDF-Datei ist.
111    * @param answerVO AnswerVO Value-Object
112    * @throws Exception Unerwarteter Fehler
113    * @return ImageVO Value-Object mit den Anzeige-Daten des Attachments
114    */
115   private ImageVO loadAttachment( AnswerVO answerVO ) throws Exception
116   {
117     ImageVO imageVO = new AnswerDAO().selectImage( answerVO.getAnswerId() );
118 
119     if( imageVO.getImageType().equals( "image/pjpeg" ) || imageVO.getImageType().equals( "image/gif" ) || imageVO.getImageType().equals( "image/x-png" ) )
120     {
121       return writeBildFile( imageVO, answerVO.getAnswerId() );
122     }
123     return imageVO;
124   }
125 
126   /**
127    * Diese Methode füllt in das Value-Object die Bilddaten für die Anzeige auf der Antwort-Ansicht.
128    * @param imageVO ImageVO Value-Object
129    * @param answerId int Antwort-Nummer
130    * @throws Exception Unerwarteter Fehler
131    * @return ImageVO Value-Object mit den Bild-Daten
132    */
133   private ImageVO writeBildFile( ImageVO imageVO, int answerId ) throws Exception
134   {
135     if( imageVO.getImage() != null && imageVO.getImage().length > 0 )
136     {
137       Properties properties = ServerProperties.loadServerProperties();
138       String imageName = "bild_" + answerId + ".jpg";
139       String path = ( properties.getProperty( "pathImages" ) ) + imageName;
140       imageVO.setImagePath( "/tmp/" + imageName );
141 
142       Map map = ImageProcessor.getInstance().writeImage( path, imageVO.getImage() );
143       return ImageProcessor.getInstance().defineDimension( imageVO, map );
144     }
145     else
146     {
147       return null;
148     }
149   }
150 }
151