1   package ch.ige.edossier.transfer.client;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import ch.ige.edossier.transfer.vo.EreignisVO;
6   import ch.ige.edossier.transfer.vo.PrioritaetVO;
7   import ch.ige.edossier.transfer.vo.RegAdrVO;
8   import ch.ige.edossier.web.vo.*;
9   
10  
11  /**
12   * B32.03 - eDossier-Interceptions - Diplomarbeit an der Software-Schule Schweiz<br>
13   * Diese Klasse splittet die Value-Objects für den Datentransfer auf.
14   * Daten aus Bagis-DB werden aufgeteilt in die entsprechenden ValueObjects
15   * welche die Tabellen der EDossier-DB abstrahieren.
16   * <p>
17   * Copyright (c) 2004, Eidgenössisches Institut für Geistiges Eigentum
18   * @author    Anita Rueegsegger, Marc Bouquet
19   * @version   $Id: DataDivider.java,v 1.2 2004/11/01 13:52:31 ruegsegger Exp $
20   */
21  public class DataDivider
22  {
23    public DataDivider()
24    {
25    }
26  
27    /**
28     * Daten aus Bagis-DB werden aufgeteilt in die entsprechenden ValueObjects
29     * welche die Tabellen der EDossier-DB abstrahieren.
30     * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
31     * @return DossierVO kapselt Daten von EDossier-DB (Oracle)
32     */
33    public DossierVO divide( EreignisVO ereignisVO )
34    {
35      DossierVO dossierVO = fillDossierVO( ereignisVO );
36      dossierVO.setImageVO( fillImageVO( ereignisVO ) );
37      dossierVO.setListPriorityVO( fillPriorityVO( ereignisVO ) );
38      dossierVO.setInterceptionVO( fillInterceptionVO( ereignisVO ) );
39      dossierVO.setListTMKindVO( fillTMKindDossierVO( ereignisVO ) );
40      dossierVO.setListAddressVO( fillAddressVO( ereignisVO ) );
41      dossierVO.setListRoleAdrDossierVO( fillRoleAdrDossierVO( ereignisVO ) );
42      return dossierVO;
43    }
44  
45    /**
46     * Daten aus Bagis-DB werden abgefüllt in das ValueObject DossierVO,
47     * welches Daten der Tabelle DOSSIER kapselt.
48     * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
49     * @return DossierVO kapselt Daten von EDossier-DB (Oracle)
50     */
51    private DossierVO fillDossierVO( EreignisVO ereignisVO )
52    {
53      DossierVO dossierVO = new DossierVO();
54      dossierVO.setDossierId( ereignisVO.schutitKey );
55      dossierVO.setAccountId( ereignisVO.accountId );
56      dossierVO.setTmtypeId( ereignisVO.schutitVO.marTyp );
57      dossierVO.setLanguageCd( ereignisVO.schutitVO.sprache );
58      dossierVO.setRequestNr( ereignisVO.schutitVO.schutitNr );
59      dossierVO.setGuardNr( ereignisVO.schutitVO.gesuchNr );
60      dossierVO.setDescription( ereignisVO.schutitVO.beschreibung );
61      dossierVO.setBeginDat( ereignisVO.schutitVO.schutzBegin );
62      dossierVO.setReference( ereignisVO.schutitVO.ihrZeichen );
63      dossierVO.setColorclaim( ereignisVO.schutitVO.farbAnspr );
64      return dossierVO;
65    }
66  
67    /**
68     * Daten aus Bagis-DB werden abgefüllt in das ValueObject ImageVO,
69     * welches Bildinformationen beinhaltet.
70     * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
71     * @return ImageVO kapselt Daten von EDossier-DB (Oracle)
72     */
73    private ImageVO fillImageVO( EreignisVO ereignisVO )
74    {
75      ImageVO imageVO = ereignisVO.schutitVO.imageVO;
76      return imageVO;
77    }
78  
79    /**
80     * Daten aus Bagis-DB werden abgefüllt in das ValueObject InterceptionVO,
81     * welches Daten der Tabelle INTERCEPTION kapselt.
82     * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
83     * @return InterceptionVO kapselt Daten von EDossier-DB (Oracle)
84     */
85    private InterceptionVO fillInterceptionVO( EreignisVO ereignisVO )
86    {
87      InterceptionVO interceptionVO = new InterceptionVO();
88      interceptionVO.setInterceptionId( ereignisVO.bfakturVO.bfaktId );
89      interceptionVO.setDossierId( ereignisVO.schutitKey );
90      interceptionVO.setStateId( InterceptionVO.STATUS_NEW );
91      interceptionVO.setTitel( ereignisVO.bfakturVO.titel );
92      interceptionVO.setText( ereignisVO.bfakturVO.textLong );
93      interceptionVO.setPdf( ereignisVO.bfakturVO.printJobFile );
94      interceptionVO.setLetterDat( ereignisVO.bfakturVO.bfaktDat );
95      interceptionVO.setExpireDat( ereignisVO.fristablDat );
96      interceptionVO.setEventIdat( ereignisVO.ereigIdat );
97      interceptionVO.setMaName( ereignisVO.maVO.maName );
98      interceptionVO.setMaVname( ereignisVO.maVO.maVname );
99      interceptionVO.setMaEmail( ereignisVO.maVO.emailIpi );
100     interceptionVO.setMaTel( ereignisVO.maVO.telNr );
101     return interceptionVO;
102   }
103 
104   /**
105    * Daten aus Bagis-DB werden abgefüllt in eine Liste von ValueObject PriorityVO,
106    * welches Daten der Tabelle PRIORITY kapselt.
107    * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
108    * @return List PriorityVO's kapselt Daten von EDossier-DB (Oracle)
109    */
110   private List fillPriorityVO( EreignisVO ereignisVO )
111   {
112     List listPriorityVO = new ArrayList();
113     List listPrioritaetVO = ereignisVO.schutitVO.alPrioritaetVO;
114 
115     for( int i = 0; i < listPrioritaetVO.size(); i++ )
116     {
117       PriorityVO priorityVO = new PriorityVO();
118       PrioritaetVO prioritaetVO = ( PrioritaetVO )listPrioritaetVO.get( i );
119       priorityVO.setDossierId( ereignisVO.schutitKey );
120       priorityVO.setPrioDat( prioritaetVO.prioDat );
121       priorityVO.setCountryCd( prioritaetVO.blandCd );
122       listPriorityVO.add( priorityVO );
123     }
124 
125     return listPriorityVO;
126   }
127 
128   /**
129    * Daten aus Bagis-DB werden abgefüllt in eine Liste von ValueObject AddressVO,
130    * welches Daten der Tabelle ADDRESS kapselt.
131    * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
132    * @return List AddressVO's kapselt Daten von EDossier-DB (Oracle)
133    */
134   private List fillAddressVO( EreignisVO ereignisVO )
135   {
136     List alRegAdrVO = ereignisVO.schutitVO.alRegAdrVO;
137     List alAddressVO = new ArrayList();
138 
139     for( int i = 0; i < alRegAdrVO.size(); i++ )
140     {
141       RegAdrVO regAdrVO = ( RegAdrVO )alRegAdrVO.get( i );
142       AddressVO addressVO = new AddressVO();
143 
144       addressVO.setAddressId( regAdrVO.regadrNr );
145       addressVO.setName( regAdrVO.regName );
146       addressVO.setAddress( regAdrVO.regStrasse );
147       addressVO.setCity( regAdrVO.regOrt );
148       addressVO.setCountryCd( regAdrVO.blandCd );
149 
150       alAddressVO.add( addressVO );
151     }
152     return alAddressVO;
153   }
154 
155   /**
156    * Daten aus Bagis-DB werden abgefüllt in eine Liste von ValueObject RoleAdrDossierVO,
157    * welches Daten der Tabelle ROLE_ADR_DOSSIER kapselt.
158    * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
159    * @return List RoleAdrDossierVO's kapselt Daten von EDossier-DB (Oracle)
160    */
161   private List fillRoleAdrDossierVO( EreignisVO ereignisVO )
162   {
163     List listRegAdrVO = ereignisVO.schutitVO.alRegAdrVO;
164     List listRoleAdrDossierVO = new ArrayList();
165 
166     for( int i = 0; i < listRegAdrVO.size(); i++ )
167     {
168       RegAdrVO regAdrVO = ( RegAdrVO )listRegAdrVO.get( i );
169       RoleAdrDossierVO roleAdrDossierVO = new RoleAdrDossierVO();
170 
171       roleAdrDossierVO.setDossierId( ereignisVO.schutitKey );
172       roleAdrDossierVO.setRoleId( regAdrVO.regAdrRolle );
173       roleAdrDossierVO.setAddressId( regAdrVO.regadrNr );
174 
175       listRoleAdrDossierVO.add( roleAdrDossierVO );
176     }
177     return listRoleAdrDossierVO;
178   }
179 
180   /**
181    * Daten aus Bagis-DB werden abgefüllt in eine Liste von ValueObject TMKindDossierVO,
182    * welches Daten der Tabelle TMKIND_DOSSIER kapselt.
183    * @param ereignisVO EreignisVO kapselt Daten von Bagis-DB (Ingres)
184    * @return List TMKindDossierVO's kapselt Daten von EDossier-DB (Oracle)
185    */
186   private List fillTMKindDossierVO( EreignisVO ereignisVO )
187   {
188     List listMarart = ereignisVO.schutitVO.alMarart;
189     List listTMKindDossierVO = new ArrayList();
190 
191     for( int i = 0; i < listMarart.size(); i++ )
192     {
193       TMKindDossierVO tmKindDossierVO = new TMKindDossierVO();
194 
195       tmKindDossierVO.setDossierId( ereignisVO.schutitKey );
196       tmKindDossierVO.setLanguageCd( ereignisVO.schutitVO.sprache );
197       tmKindDossierVO.setTmkindId( ( ( Integer )listMarart.get( i ) ).intValue() );
198 
199       listTMKindDossierVO.add( tmKindDossierVO );
200     }
201     return listTMKindDossierVO;
202   }
203 }
204