1   package ch.ige.edossier.transfer.server.dao;
2   
3   import java.sql.*;
4   import java.util.ArrayList;
5   import java.util.List;
6   import java.util.Iterator;
7   import ch.ige.edossier.transfer.vo.EreignisVO;
8   import ch.ige.edossier.util.DBHelper;
9   
10  /**
11   * B32.03 - eDossier-Interceptions - Diplomarbeit an der Software-Schule Schweiz<br>
12   * Data Access Objekt für alle Daten die aus der bestehenden Datenbank-Umgebung
13   * ausgelesen werden.
14   * <p>
15   * Copyright (c) 2004, Eidgenössisches Institut für Geistiges Eigentum
16   * @author    Anita Rueegsegger, Marc Bouquet
17   * @version   $Id: EreignisDAO.java,v 1.9 2004/11/01 13:52:22 ruegsegger Exp $
18   */
19  public class EreignisDAO
20  {
21    public EreignisDAO()
22    {
23    }
24  
25    /**
26     * Selektiert alle Daten die zu einer Beanstandung gehören aus den verschiedenen Tabellen
27     * @throws Exception Unerwarteter SQL-Fehler
28     * @return List von EreignisVOs
29     */
30    public List selectAllData() throws Exception
31    {
32      SchutitDAO schutitDAO = new SchutitDAO();
33      MaDAO maDAO = new MaDAO();
34      BfakturDAO bfakturDAO = new BfakturDAO();
35      EreignisVO ereignisVO = null;
36  
37      List list = this.selectInterceptions();
38  
39      for( int i = 0; i < list.size(); i++ )
40      {
41        ereignisVO = ( EreignisVO )list.get( i );
42  
43        ereignisVO.maVO = maDAO.select( ereignisVO.maNr );
44        ereignisVO.schutitVO = schutitDAO.select( ereignisVO.schutitKey );
45        ereignisVO.schutitVO.farbAnspr = schutitDAO.selectColorClaim( ereignisVO.schutitKey );
46        ereignisVO.schutitVO.imageVO = schutitDAO.selectImage( ereignisVO.schutitKey );
47        ereignisVO.schutitVO.alRegAdrVO = schutitDAO.selectRegAdrSchutit( ereignisVO.schutitKey );
48        ereignisVO.schutitVO.alPrioritaetVO = schutitDAO.selectPrioritaet( ereignisVO.schutitKey );
49        ereignisVO.schutitVO.alMarart = schutitDAO.selectMarart( ereignisVO.schutitKey );
50        ereignisVO.bfakturVO = bfakturDAO.select( ereignisVO.schutitKey,
51                                                  ereignisVO.ereigIdat,
52                                                  ereignisVO.artNr );
53        ereignisVO.bfakturVO.titel = bfakturDAO.selectTitel( ereignisVO.bfakturVO.bfaktId );
54        ereignisVO.bfakturVO.printJobFile = bfakturDAO.selectPdf( ereignisVO.bfakturVO.bfaktId );
55      }
56  
57      replaceP2D2Tags( list ); // Ersetzt alle P2D2-Tags
58      return list;
59    }
60  
61  
62    /**
63     * Selektiert alle hängigen Beanstandungen
64     * Folgende Kriterien bestimmen eine hängige Beanstandugen
65     *  - Fristablauf noch nicht abgelaufen
66     *  - Beanstandungsereigniss zwischen 43110 und 43670 und ungleich 43230
67     *  - Status auf Frist (ereig_stat_nr = 0)
68     *  - Abschlussdatum ist leer
69     *  - Ereignis ist nicht registerrelevant (regstat=0)
70     * @return List mit EreignisVOs
71     * @throws SQLException Unerwarteter SQL-Fehler
72     */
73    public List selectInterceptions() throws SQLException
74    {
75      Connection con = null;
76      PreparedStatement ps = null;
77      ResultSet rs = null;
78      EreignisVO ereignisVO = null;
79      List list = new ArrayList();
80  
81      try
82      {
83        con = DBHelper.getInstance().getConnection();
84        ps = con.prepareStatement(
85            "SELECT schutit_key, ereig_idat, ma_nr, art_nr, fristabl_dat " +
86            "FROM   ereignis " +
87            "WHERE fristabl_dat >= date('today') " + //Fristablauf noch nicht abgelaufen
88            "AND art_nr BETWEEN 43110 AND 43670 AND art_nr != 43230 " + //Beanstandungsereigniss
89            "AND ereig_stat_nr = 0 " + //Frist
90            "AND abschl_dat = '' " + //Abschlussdatum ist leer
91            "AND reg_stat = 0 " ); //Ereignis ist nicht registerrelevant
92  
93        rs = ps.executeQuery();
94  
95        while( rs.next() )
96        {
97          ereignisVO = new EreignisVO();
98          ereignisVO.schutitKey = rs.getInt( "schutit_key" );
99          ereignisVO.ereigIdat = rs.getInt( "ereig_idat" );
100         ereignisVO.maNr = rs.getInt( "ma_nr" );
101         ereignisVO.artNr = rs.getString( "art_nr" );
102         ereignisVO.fristablDat = rs.getDate( "fristabl_dat" );
103 
104         list.add( ereignisVO );
105       }
106 
107       return list;
108     }
109     finally
110     {
111       DBHelper.getInstance().close( con, ps );
112     }
113   }
114 
115   /**
116    * Diese Methode ersetzt alle P2D2-Tags in den Texten
117    * @param List mit EreignisVO
118    */
119   private void replaceP2D2Tags( List list )
120   {
121     String replaceText = "";
122     Iterator iter = list.iterator();
123     while( iter.hasNext() )
124     {
125       EreignisVO ereignisVO = ( EreignisVO )iter.next();
126 
127       replaceText = ereignisVO.bfakturVO.titel;
128       replaceText = replaceText.replaceAll( "%%\\$\\$Schutit", ereignisVO.schutitVO.schutitNr );
129       replaceText = replaceText.replaceAll( "%%\\$\\$Text", ereignisVO.bfakturVO.varText );
130       replaceText = replaceText.replaceAll( "%%\\$\\$Inhaber", ereignisVO.bfakturVO.inhaber );
131       ereignisVO.bfakturVO.titel = replaceText;
132     }
133   }
134 }
135