/
Elemento_voceHome.java
417 lines (366 loc) · 16 KB
/
Elemento_voceHome.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
package it.cnr.contab.config00.pdcfin.bulk;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Hashtable;
import it.cnr.contab.anagraf00.tabrif.bulk.Tipologie_istatBulk;
import it.cnr.contab.config00.bulk.Codici_siopeBulk;
import it.cnr.contab.consultazioni.bulk.ConsultazioniRestHome;
import it.cnr.contab.progettiric00.core.bulk.Progetto_piano_economicoBulk;
import it.cnr.jada.UserContext;
import it.cnr.jada.bulk.BulkHome;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.persistency.IntrospectionException;
import it.cnr.jada.persistency.PersistencyException;
import it.cnr.jada.persistency.PersistentCache;
import it.cnr.jada.persistency.sql.CompoundFindClause;
import it.cnr.jada.persistency.sql.FindClause;
import it.cnr.jada.persistency.sql.LoggableStatement;
import it.cnr.jada.persistency.sql.PersistentHome;
import it.cnr.jada.persistency.sql.SQLBuilder;
public class Elemento_voceHome extends BulkHome implements ConsultazioniRestHome {
private static java.util.Hashtable ti_appartenenzaKeys;
private static java.util.Hashtable ti_gestioneKeys;
private static java.util.Hashtable ti_elemento_voceKeys;
public final static String APPARTENENZA_CNR = "C" ;
public final static String APPARTENENZA_CDS = "D" ;
public final static String GESTIONE_ENTRATE = "E" ;
public final static String GESTIONE_SPESE = "S" ;
public final static String TIPO_TITOLO = "T" ;
public final static String TIPO_PARTE = "P" ;
public final static String TIPO_CAPITOLO = "C" ;
public final static String TIPO_SEZIONE = "S" ;
public final static String TIPO_CATEGORIA = "G" ;
public final static String TIPO_ARTICOLO = "A" ;
public final static String CD_CNR_SPESE_CATEGORIA_2 = "2" ;
public final static String PARTE_1 = "1" ;
public final static String PARTE_2 = "2" ;
private static java.util.Hashtable lunghezzeChiavi;
private static java.util.Hashtable tipiPadre;
protected Elemento_voceHome(Class clazz,java.sql.Connection connection) {
super(clazz,connection);
}
protected Elemento_voceHome(Class clazz,java.sql.Connection connection,PersistentCache persistentCache) {
super(clazz,connection,persistentCache);
}
/**
* <!-- @TODO: da completare -->
* Costruisce un Elemento_voceHome
*
* @param conn La java.sql.Connection su cui vengono effettuate le operazione di persistenza
*/
public Elemento_voceHome(java.sql.Connection conn) {
super(Elemento_voceBulk.class,conn);
}
/**
* <!-- @TODO: da completare -->
* Costruisce un Elemento_voceHome
*
* @param conn La java.sql.Connection su cui vengono effettuate le operazione di persistenza
* @param persistentCache La PersistentCache in cui vengono cachati gli oggetti persistenti caricati da questo Home
*/
public Elemento_voceHome(java.sql.Connection conn,PersistentCache persistentCache) {
super(Elemento_voceBulk.class,conn,persistentCache);
}
/**
* Genera un nuovo codice per Elemento_voceBulk calcolando il progressivo successivo al massimo esistente
* per l'Elemento_voceBulk
* @param evBulk elemento voce per cui e' necessario creare il codice
* @return String codice creato
*/
public String creaNuovoCodice( Elemento_voceBulk evBulk ) throws ApplicationException, PersistencyException
{
String codice;
try
{
LoggableStatement ps = new LoggableStatement(getConnection(),
"SELECT CD_PROPRIO_ELEMENTO FROM " +
it.cnr.jada.util.ejb.EJBCommonServices.getDefaultSchema() +
"ELEMENTO_VOCE " +
"WHERE ESERCIZIO = ? AND " +
"TI_APPARTENENZA = ? AND " +
"TI_GESTIONE = ? AND " +
"TI_ELEMENTO_VOCE = ? AND " +
"CD_ELEMENTO_PADRE = ? AND " +
"CD_PROPRIO_ELEMENTO = ( SELECT MAX(CD_PROPRIO_ELEMENTO) " +
"FROM "+
it.cnr.jada.util.ejb.EJBCommonServices.getDefaultSchema() +
"ELEMENTO_VOCE WHERE " +
"ESERCIZIO = ? AND " +
"TI_APPARTENENZA = ? AND " +
"TI_GESTIONE = ? AND " +
"TI_ELEMENTO_VOCE = ? AND " +
"CD_ELEMENTO_PADRE = ?) " +
"FOR UPDATE NOWAIT",true ,this.getClass());
ps.setObject( 1, evBulk.getEsercizio() );
ps.setString( 2, evBulk.getTi_appartenenza() );
ps.setString( 3, evBulk.getTi_gestione() );
ps.setString( 4, evBulk.getTi_elemento_voce() );
ps.setString( 5, evBulk.getElemento_padre().getCd_elemento_voce() );
ps.setObject( 6, evBulk.getEsercizio() );
ps.setString( 7, evBulk.getTi_appartenenza() );
ps.setString( 8, evBulk.getTi_gestione() );
ps.setString( 9, evBulk.getTi_elemento_voce() );
ps.setString(10, evBulk.getElemento_padre().getCd_elemento_voce() );
ResultSet rs = ps.executeQuery();
if ( rs.next() )
{
codice = rs.getString( 1 );
if ( codice != null )
{
long cdLong = Long.parseLong( codice ) + 1;
codice = String.valueOf( cdLong );
}
else
codice = String.valueOf( 1 );
}
else
codice = String.valueOf( 1 );
try{ps.close();}catch( java.sql.SQLException e ){};
// return getLunghezza_chiaviHome().create().formatCdrKey( codice, esercizio, livello );
return codice;
}
catch (java.lang.NumberFormatException e)
{
throw new ApplicationException( "Esistono codice non numerici nel database. " );
}
catch ( SQLException e )
{
throw new PersistencyException( e );
}
}
/**
* Formatta le chiavi (cd_elemento_voce) dell'Elemento_voceBulk in base all'appartenenza, alla gestione e al
* tipo di elemento voce a cui la chiave si riferisce
*/
public String formatKey( String key, String appartenenza, String gestione, String tipoVoce ) throws ApplicationException
{
if ( key == null || key.equals("") )
return key;
int len = getLunghezzaChiave( appartenenza, gestione, tipoVoce );
if ( key.length() > len )
throw new ApplicationException( "Il codice non può essere più lungo di " + len + " caratteri" );
return leftPadding(key, len);
}
/**
* Restitusce la lunghezza della chiave di un Elemento_voceBulk in base all'appartenenza, alla gestione e al
* tipo di elemento voce
*/
public int getLunghezzaChiave( String appartenenza, String gestione, String tipo )
{
return ((Integer)((Hashtable)((Hashtable) getLunghezzeChiavi().get( appartenenza )).get( gestione)).get( tipo )).intValue();
}
/**
* Restitusce la hashtable contenente la lunghezza di tutte le chiavi raggruppate
* in base all'appartenenza, alla gestione e al tipo di elemento voce
*/
public java.util.Hashtable getLunghezzeChiavi()
{
if ( lunghezzeChiavi == null )
{
java.util.Hashtable lungCnrEntrate = new java.util.Hashtable();
lungCnrEntrate.put( TIPO_CATEGORIA, new Integer( 2 ));
lungCnrEntrate.put( TIPO_CAPITOLO, new Integer( 12 ));
java.util.Hashtable lungCnrSpese = new java.util.Hashtable();
lungCnrSpese.put( TIPO_CAPITOLO, new Integer( 3 ));
java.util.Hashtable lungCdsEntrate = new java.util.Hashtable();
lungCdsEntrate.put( TIPO_CAPITOLO, new Integer( 3 ));
java.util.Hashtable lungCdsSpese = new java.util.Hashtable();
lungCdsSpese.put( TIPO_CAPITOLO, new Integer( 15 ));
lunghezzeChiavi = new java.util.Hashtable();
java.util.Hashtable tmp = new java.util.Hashtable();
tmp.put( GESTIONE_ENTRATE, lungCnrEntrate );
tmp.put( GESTIONE_SPESE, lungCnrSpese);
lunghezzeChiavi.put( APPARTENENZA_CNR, tmp );
tmp = new java.util.Hashtable();
tmp.put( GESTIONE_ENTRATE, lungCdsEntrate );
tmp.put( GESTIONE_SPESE, lungCdsSpese);
lunghezzeChiavi.put( APPARTENENZA_CDS, tmp );
}
return lunghezzeChiavi;
}
/**
* Restituisce il valore della proprietà 'tipiPadre'
*
* @return Il valore della proprietà 'tipiPadre'
*/
public static java.util.Hashtable getTipiPadre()
{
if ( tipiPadre == null )
{
tipiPadre = new java.util.Hashtable();
java.util.Hashtable tipiCnrEntrate = new java.util.Hashtable();
tipiCnrEntrate.put( TIPO_CATEGORIA, TIPO_TITOLO);
tipiCnrEntrate.put( TIPO_CAPITOLO, TIPO_CATEGORIA);
java.util.Hashtable tipiCnrSpese = new java.util.Hashtable();
tipiCnrSpese.put( TIPO_CAPITOLO, TIPO_CATEGORIA);
java.util.Hashtable tipiCdsEntrate = new java.util.Hashtable();
tipiCdsEntrate.put( TIPO_CAPITOLO, TIPO_TITOLO);
java.util.Hashtable tipiCdsSpese = new java.util.Hashtable();
tipiCdsSpese.put( TIPO_CAPITOLO, TIPO_TITOLO);
tipiPadre = new java.util.Hashtable();
java.util.Hashtable tmp = new java.util.Hashtable();
tmp.put( GESTIONE_ENTRATE, tipiCnrEntrate );
tmp.put( GESTIONE_SPESE, tipiCnrSpese);
tipiPadre.put( APPARTENENZA_CNR, tmp );
tmp = new java.util.Hashtable();
tmp.put( GESTIONE_ENTRATE, tipiCdsEntrate );
tmp.put( GESTIONE_SPESE, tipiCdsSpese);
tipiPadre.put( APPARTENENZA_CDS, tmp );
}
return tipiPadre;
}
/**
* Ritorna il tipo della voce padre dati appartenenza/gestione e tipo della voce figlio
*
* @param appartenenza Cnr/Cds
* @param gestione E/S
* @param tipo Tipo di voce
* @return Tipo della voce padre
*/
public static String getTipoPadre( String appartenenza, String gestione, String tipo )
{
return (String)((Hashtable)((Hashtable) getTipiPadre().get( appartenenza )).get( gestione)).get( tipo );
}
/**
* Aggiunge caratteri '0' all'inizio della stringa fino a raggiungerne la lunghezza richiesta
*/
public String leftPadding( String key, int keyLen )
{
int valueLen = key.length();
String newKey = new String();
for ( int i = 0; i < (keyLen - valueLen); i++ )
newKey = newKey.concat("0");
newKey = newKey.concat( key );
return newKey;
}
/**
* Carica in una hashtable l'elenco di tipologie di appartenenza
* @return it.cnr.jada.util.OrderedHashtable
*/
public java.util.Hashtable loadTi_appartenenzaKeys( Elemento_voceBulk bulk )
{
if ( ti_appartenenzaKeys == null )
{
ti_appartenenzaKeys = new java.util.Hashtable();
ti_appartenenzaKeys.put( APPARTENENZA_CNR, "C - CNR" );
ti_appartenenzaKeys.put( APPARTENENZA_CDS, "D - CDS" );
}
return ti_appartenenzaKeys;
}
/**
* Carica in una hashtable l'elenco di tipologie di elemento voce
* @return it.cnr.jada.util.OrderedHashtable
*/
public java.util.Hashtable loadTi_elemento_voceKeys( Elemento_voceBulk bulk ) {
if ( ti_elemento_voceKeys == null )
{
ti_elemento_voceKeys = new java.util.Hashtable();
// ti_elemento_voceKeys.put("T", "Titolo" );
// ti_elemento_voceKeys.put("P", "Parte" );
ti_elemento_voceKeys.put( TIPO_CAPITOLO, "Capitolo" );
ti_elemento_voceKeys.put( TIPO_CATEGORIA, "Categoria" );
}
return ti_elemento_voceKeys;
}
/**
* Carica in una hashtable l'elenco di tipologie di Gestione
* @return it.cnr.jada.util.OrderedHashtable
*/
public java.util.Hashtable loadTi_gestioneKeys( Elemento_voceBulk bulk ) {
if ( ti_gestioneKeys == null )
{
ti_gestioneKeys = new java.util.Hashtable();
ti_gestioneKeys.put(GESTIONE_SPESE, "S - Spese");
ti_gestioneKeys.put(GESTIONE_ENTRATE, "E - Entrate");
}
return ti_gestioneKeys;
}
/**
* Reset chiavi
*
*
*/
public static void resetKeys()
{
ti_gestioneKeys = null;
ti_appartenenzaKeys = null;
ti_elemento_voceKeys = null;
tipiPadre = null;
lunghezzeChiavi = null;
}
/**
* Restituisce il SQLBuilder per selezionare i Titoli di Spesa del Cds
* @param bulk bulk ricevente
* @param home home del bulk su cui si cerca
* @param bulkClause è l'istanza di bulk che ha indotto le clauses
* @param clause clause che arrivano dalle properties (form collegata al search tool)
* @return it.cnr.jada.persistency.sql.SQLBuilder
*/
public SQLBuilder selectCdsSpesaTitoliByClause( Elemento_voceBulk bulk,it.cnr.jada.bulk.BulkHome home,OggettoBulk bulkClause,CompoundFindClause clause) throws java.lang.reflect.InvocationTargetException,IllegalAccessException, it.cnr.jada.persistency.PersistencyException {
SQLBuilder sql = home.selectByClause(clause);
sql.addClause("AND", "ti_appartenenza", SQLBuilder.EQUALS, APPARTENENZA_CDS );
sql.addClause("AND", "ti_gestione", SQLBuilder.EQUALS, GESTIONE_SPESE );
sql.addClause("AND", "ti_elemento_voce", SQLBuilder.EQUALS, TIPO_TITOLO);
sql.addClause("AND", "esercizio", SQLBuilder.EQUALS, bulk.getEsercizio() );
return sql;
}
/**
* Restituisce il SQLBuilder per selezionare i Titoli di Spesa del Cnr
* @param bulk bulk ricevente
* @param home home del bulk su cui si cerca
* @param bulkClause è l'istanza di bulk che ha indotto le clauses
* @param clause clause che arrivano dalle properties (form collegata al search tool)
* @return it.cnr.jada.persistency.sql.SQLBuilder
*/
public SQLBuilder selectCnrSpesaTitoliByClause( Elemento_voceBulk bulk,it.cnr.jada.bulk.BulkHome home,OggettoBulk bulkClause,CompoundFindClause clause) throws java.lang.reflect.InvocationTargetException,IllegalAccessException, it.cnr.jada.persistency.PersistencyException {
SQLBuilder sql = home.selectByClause(clause);
sql.addClause("AND", "ti_appartenenza", SQLBuilder.EQUALS, APPARTENENZA_CNR );
sql.addClause("AND", "ti_gestione", SQLBuilder.EQUALS, GESTIONE_SPESE );
sql.addClause("AND", "ti_elemento_voce", SQLBuilder.EQUALS, TIPO_TITOLO);
sql.addClause("AND", "esercizio", SQLBuilder.EQUALS, bulk.getEsercizio() );
return sql;
}
/**
* Recupera tutti i dati nella tabella CODICI_SIOPE relativi alla voce in uso.
*
* @param elemento_voce L'elemento voce in uso.
*
* @return java.util.Collection Collezione di oggetti <code>Codici_siopeBulk</code>
*/
public java.util.Collection findCodiciCollegatiSIOPE(UserContext userContext, Elemento_voceBulk elemento_voce, Tipologie_istatBulk tipologia) throws PersistencyException {
PersistentHome codici_siopeHome = getHomeCache().getHome(Codici_siopeBulk.class);
SQLBuilder sql = codici_siopeHome.createSQLBuilder();
sql.addClause("AND", "esercizio", SQLBuilder.EQUALS, elemento_voce.getEsercizio());
sql.addClause("AND", "ti_gestione", SQLBuilder.EQUALS, elemento_voce.getTi_gestione());
if (tipologia != null) {
sql.addTableToHeader("ASS_TIPOLOGIA_ISTAT_SIOPE");
sql.addSQLJoin("CODICI_SIOPE.ESERCIZIO", "ASS_TIPOLOGIA_ISTAT_SIOPE.ESERCIZIO_SIOPE");
sql.addSQLJoin("CODICI_SIOPE.TI_GESTIONE", "ASS_TIPOLOGIA_ISTAT_SIOPE.TI_GESTIONE_SIOPE");
sql.addSQLJoin("CODICI_SIOPE.CD_SIOPE", "ASS_TIPOLOGIA_ISTAT_SIOPE.CD_SIOPE");
sql.addSQLClause("AND", "ASS_TIPOLOGIA_ISTAT_SIOPE.PG_TIPOLOGIA", SQLBuilder.EQUALS, tipologia.getPg_tipologia());
}
sql.addTableToHeader("ASS_EV_SIOPE");
sql.addSQLJoin("CODICI_SIOPE.ESERCIZIO", "ASS_EV_SIOPE.ESERCIZIO_SIOPE");
sql.addSQLJoin("CODICI_SIOPE.TI_GESTIONE", "ASS_EV_SIOPE.TI_GESTIONE_SIOPE");
sql.addSQLJoin("CODICI_SIOPE.CD_SIOPE", "ASS_EV_SIOPE.CD_SIOPE");
sql.addSQLClause("AND", "ASS_EV_SIOPE.TI_APPARTENENZA", SQLBuilder.EQUALS, elemento_voce.getTi_appartenenza());
sql.addSQLClause("AND", "ASS_EV_SIOPE.CD_ELEMENTO_VOCE", SQLBuilder.EQUALS, elemento_voce.getCd_elemento_voce());
return codici_siopeHome.fetchAll(sql);
}
@Override
public SQLBuilder restSelect(UserContext userContext, SQLBuilder sql, CompoundFindClause compoundfindclause, OggettoBulk oggettobulk) throws ComponentException, PersistencyException {
// sql.addSQLClause("AND","ESERCIZIO",sql.EQUALS, CNRUserContext.getEsercizio(userContext));
return sql;
}
public java.util.List<Elemento_voceBulk> findElementoVociAssociate(Progetto_piano_economicoBulk progettoPiaeco) throws IntrospectionException, PersistencyException {
PersistentHome home = getHomeCache().getHome(Elemento_voceBulk.class);
SQLBuilder sql = home.createSQLBuilder();
sql.addClause(FindClause.AND, "esercizio", SQLBuilder.EQUALS, progettoPiaeco.getEsercizio_piano());
sql.addClause(FindClause.AND, "cd_unita_piano", SQLBuilder.EQUALS, progettoPiaeco.getCd_unita_organizzativa());
sql.addClause(FindClause.AND, "cd_voce_piano", SQLBuilder.EQUALS, progettoPiaeco.getCd_voce_piano());
sql.addOrderBy("cd_elemento_voce");
return home.fetchAll(sql);
}
}