1   package ch.ige.edossier.web.server;
2   
3   import java.util.Collection;
4   import java.util.List;
5   import java.util.Properties;
6   import ch.ige.edossier.util.MailSender;
7   import ch.ige.edossier.util.ServerProperties;
8   import ch.ige.edossier.web.struts.EDossierFacade;
9   import ch.ige.edossier.web.vo.*;
10  
11  /**
12   * B32.03 - eDossier-Interceptions - Diplomarbeit an der Software-Schule Schweiz<br>
13   * Die Klasse EDossierControl ist der Controller für die Business-Logik.
14   * <p>
15   * Copyright (c) 2004, Eidgenössisches Institut für Geistiges Eigentum
16   * @author    Anita Rueegsegger, Marc Bouquet
17   * @version   $Id: EDossierControl.java,v 1.26 2004/11/03 14:46:36 bouquet Exp $
18   * @see EDossierFacade
19   */
20  public class EDossierControl implements EDossierFacade
21  {
22    /**
23     * Standard-Konstruktor
24     */
25    public EDossierControl()
26    {}
27  
28    /**
29     * Diese Methode überprüft den Benutzernamen und das Passwort und gibt das Account-Value-Object zurück.
30     * @param accountVO AccountVO Value-Object
31     * @throws Exception Unerwarteter Fehler
32     * @return AccountVO Value-Object
33     */
34    public AccountVO checkPassword( AccountVO accountVO ) throws Exception
35    {
36      return new AccountAssembler().checkPasswort( accountVO );
37    }
38  
39    /**
40     * Diese Methode sendet dem Benutzer seine Benutzerdaten per Email.
41     * @param loginName String Benutzername zum selektieren des Datensatzes
42     * @param languageCd String Sprachcode
43     * @throws Exception Unerwarteter Fehler
44     * @return boolean true = wurde gesendet, false = wurde nicht gesendet
45     */
46    public boolean sendPassword( String loginName, String languageCd ) throws Exception
47    {
48      return sendMail( new AccountAssembler().sendPassword( loginName, languageCd ) );
49    }
50  
51    /**
52     * Diese Methode gibt ein DossierOverviewVO zurück, welches in Listen Dossier-Value-Object kapselt.
53     * @param accountId int Nummer zum selektieren der Datensätze
54     * @throws Exception Unerwarteter Fehler
55     * @return DossierOverviewVO beinhaltet Dossier-Value-Objects
56     */
57    public DossierOverviewVO getDossiers( int accountId ) throws Exception
58    {
59      return new DossierAssembler().getDossiers( accountId );
60    }
61  
62    /**
63     * Diese Methode gibt ein Dossier-Value-Object zurück mit allen benötigten Daten zu einem Dossier.
64     * @param dossierId int Nummer zum selektieren der Datensätze
65     * @throws Exception Unerwarteter Fehler
66     * @return DossierVO Value-Object
67     */
68    public DossierVO getDossier( int dossierId ) throws Exception
69    {
70      return new DossierAssembler().getDossier( dossierId );
71    }
72  
73    /**
74     * Diese Methode gibt eine Liste von Interception-Value-Objects zurück.
75     * @param dossierId int Nummer zum selektieren der Datensätze
76     * @throws Exception Unerwarteter Fehler
77     * @return List Liste mit Interceptions-Value-Objects
78     */
79    public List getInterceptions( int dossierId ) throws Exception
80    {
81      return new InterceptionAssembler().getInterceptions( dossierId );
82    }
83  
84    /**
85     * Diese Methode gibt ein Value-Object einer Beanstandung zurück.
86     * @param interceptionId int Nummer zum selektieren des Datensatzes
87     * @throws Exception Unerwarteter Fehler
88     * @return InterceptionVO Value-Object
89     */
90    public InterceptionVO getInterception( int interceptionId ) throws Exception
91    {
92      return new InterceptionAssembler().getInterception( interceptionId );
93    }
94  
95    /**
96     * Diese Methode liest alle neuen Interceptions des heutigen Tages aus.
97     * @param today String Datum des heutigen Tages
98     * @throws Exception Unerwarteter Fehler
99     * @return Collection mit Newsletter-Value-Objects
100    */
101   public Collection getNewInterceptions( String today ) throws Exception
102   {
103     return new InterceptionAssembler().getNewInterceptions( today );
104   }
105 
106   /**
107    * Mit dieser Methode wird der Status der Beanstandung mit dem übergebenen Wert gesetzt.
108    * @param interceptionId int Nummer zum selektieren des Datensatzes
109    * @param status int Status der in die Datenbank geschrieben wird
110    * @throws Exception Unerwarteter Fehler
111    * @return boolean true = Status wurde aktualisiert, false = Status konnte nicht aktualisiert werden
112    */
113   public boolean setState( int interceptionId, int status ) throws Exception
114   {
115     return new InterceptionAssembler().setState( interceptionId, status );
116   }
117 
118   /**
119    * Diese Methode gibt ein Value-Object für die Anzeige einer Antwort zurück.
120    * @param interceptionId int Nummer zum selektieren eines Datensatzes
121    * @throws Exception Unerwarteter Fehler
122    * @return AnswerVO Value-Object
123    */
124   public AnswerVO getAnswer( int interceptionId ) throws Exception
125   {
126     return new AnswerAssembler().getAnswer( interceptionId );
127   }
128 
129   /**
130    * Diese Methode speichert in der Tabelle Answer die Antwort des Benutzers.
131    * @param answerVO AnswerVO Value-Object
132    * @param languageCd String Sprachcode
133    * @throws Exception Unerwarteter Fehler
134    * @return boolean true = wurde gesendet, false = wurde nicht gesendet
135    */
136   public boolean saveAnswer( AnswerVO answerVO, String languageCd ) throws Exception
137   {
138     return sendMail( new AnswerAssembler().saveAnswer( answerVO, languageCd ) );
139   }
140 
141   /**
142    * Diese Methode gibt ein Value-Object mit den Anzeige-Daten des Attachment zurück.
143    * @param answerVO AnswerVO Value-Object
144    * @throws Exception Unerwarteter Fehler
145    * @return ImageVO Value-Object
146    */
147   public ImageVO getAttachement( AnswerVO answerVO ) throws Exception
148   {
149     return new AnswerAssembler().getAttachement( answerVO );
150   }
151 
152   /**
153    * Diese Methode versendet das erhaltene Mail-Value-Object per Mail an die
154    * enthaltenen Daten im Value-Object.
155    * @param mailVO MailSenderVO Value-Object
156    * @throws Exception Unerwarteter Fehler
157    * @return boolean true = wurde gesendet, false = wurde nicht gesendet
158    */
159   public boolean sendMail( MailSenderVO mailVO ) throws Exception
160   {
161     Properties properties = ServerProperties.loadServerProperties();
162 
163     if( mailVO != null && properties != null )
164     {
165       // Holt anhand der übergebene Mail-Adresse via edossier.properties die benötigte Standard-Mail-Adresse.
166       String addressTo = properties.getProperty( mailVO.getAdressTo().trim() );
167       /* Gibt es keine Property, wird null in das Attribut addressTo geschieben, es handelt sich
168        * daher nicht um eine Standard-Adresse und in diesem Fall wird die übergebene Adresse eingesetzt. */
169       if( mailVO.getAdressTo() != null && addressTo == null )
170       {
171         addressTo = mailVO.getAdressTo();
172       }
173       mailVO.setAdressTo( addressTo );
174       return MailSender.sendMail( mailVO, false );
175     }
176     return false;
177   }
178 }
179