EMMA Coverage Report (generated Tue Dec 09 03:51:57 CET 2014)
[all classes][org.jdtaus.banking.ri.blzdirectory]

COVERAGE SUMMARY FOR SOURCE FILE [BankfileBankleitzahlenVerzeichnis.java]

nameclass, %method, %block, %line, %
BankfileBankleitzahlenVerzeichnis.java100% (1/1)85%  (23/27)73%  (734/1006)80%  (138.2/173)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class BankfileBankleitzahlenVerzeichnis100% (1/1)85%  (23/27)73%  (734/1006)80%  (138.2/173)
BankfileBankleitzahlenVerzeichnis (long, long): void 0%   (0/1)0%   (0/23)0%   (0/6)
getApplicationLogger (): ApplicationLogger 0%   (0/1)0%   (0/6)0%   (0/1)
getBankfile (): BankleitzahlenDatei 0%   (0/1)0%   (0/7)0%   (0/3)
getReloadInfoMessage (Locale, Date, Date): String 0%   (0/1)0%   (0/16)0%   (0/1)
assertValidProperties (): void 100% (1/1)51%  (32/63)58%  (7/12)
getLatestBankfileProvider (): BankfileProvider 100% (1/1)60%  (27/45)88%  (5.3/6)
searchBankleitzahlInfos (String, String, String, Boolean, Boolean): Bankleitz... 100% (1/1)65%  (163/251)79%  (23.8/30)
findReplacementBankeitzahlInfo (BankleitzahlInfo): BankleitzahlInfo 100% (1/1)74%  (23/31)78%  (7/9)
getHeadOffice (Bankleitzahl): BankleitzahlInfo 100% (1/1)83%  (38/46)88%  (9.7/11)
getBranchOffices (Bankleitzahl): BankleitzahlInfo [] 100% (1/1)83%  (39/47)88%  (9.7/11)
assertInitialized (): void 100% (1/1)83%  (279/336)88%  (51.8/59)
search (String, String, String, boolean): BankleitzahlInfo [] 100% (1/1)86%  (12/14)85%  (0.8/1)
BankfileBankleitzahlenVerzeichnis (): void 100% (1/1)100% (6/6)100% (3/3)
getBankfileInfoMessage (Locale, Number, Number): String 100% (1/1)100% (16/16)100% (1/1)
getBankfileProvider (): BankfileProvider [] 100% (1/1)100% (7/7)100% (1/1)
getDateOfExpiration (): Date 100% (1/1)100% (9/9)100% (3/3)
getDateOfExpirationPattern (): String 100% (1/1)100% (6/6)100% (1/1)
getDateOfExpirationText (): String 100% (1/1)100% (6/6)100% (1/1)
getDefaultMonitoringThreshold (): Long 100% (1/1)100% (6/6)100% (1/1)
getDefaultReloadIntervalMillis (): Long 100% (1/1)100% (6/6)100% (1/1)
getLocale (): Locale 100% (1/1)100% (6/6)100% (1/1)
getLogger (): Logger 100% (1/1)100% (6/6)100% (1/1)
getMonitoringThreshold (): long 100% (1/1)100% (11/11)100% (3/3)
getNoBankfilesFoundMessage (Locale): String 100% (1/1)100% (7/7)100% (1/1)
getOutdatedInfoMessage (Locale, String): String 100% (1/1)100% (12/12)100% (1/1)
getReloadIntervalMillis (): long 100% (1/1)100% (11/11)100% (3/3)
getTaskMonitor (): TaskMonitor 100% (1/1)100% (6/6)100% (1/1)

1/*
2 *  jDTAUS Banking RI Bankleitzahlenverzeichnis
3 *  Copyright (C) 2005 Christian Schulte
4 *  <cs@schulte.it>
5 *
6 *  This library is free software; you can redistribute it and/or
7 *  modify it under the terms of the GNU Lesser General Public
8 *  License as published by the Free Software Foundation; either
9 *  version 2.1 of the License, or any later version.
10 *
11 *  This library is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 *  Lesser General Public License for more details.
15 *
16 *  You should have received a copy of the GNU Lesser General Public
17 *  License along with this library; if not, write to the Free Software
18 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 *
20 */
21package org.jdtaus.banking.ri.blzdirectory;
22 
23import java.io.IOException;
24import java.net.URL;
25import java.text.DateFormat;
26import java.text.DecimalFormat;
27import java.text.NumberFormat;
28import java.text.ParseException;
29import java.text.SimpleDateFormat;
30import java.util.ArrayList;
31import java.util.Collection;
32import java.util.Date;
33import java.util.Locale;
34import java.util.regex.Pattern;
35import java.util.regex.PatternSyntaxException;
36import org.jdtaus.banking.Bankleitzahl;
37import org.jdtaus.banking.BankleitzahlExpirationException;
38import org.jdtaus.banking.BankleitzahlInfo;
39import org.jdtaus.banking.BankleitzahlenVerzeichnis;
40import org.jdtaus.banking.messages.OutdatedBankleitzahlenVerzeichnisMessage;
41import org.jdtaus.banking.messages.ReadsBankleitzahlenDateiMessage;
42import org.jdtaus.banking.messages.SearchesBankleitzahlInfosMessage;
43import org.jdtaus.banking.util.BankleitzahlenDatei;
44import org.jdtaus.core.container.ContainerFactory;
45import org.jdtaus.core.container.PropertyException;
46import org.jdtaus.core.logging.spi.Logger;
47import org.jdtaus.core.monitor.spi.Task;
48import org.jdtaus.core.monitor.spi.TaskMonitor;
49import org.jdtaus.core.text.Message;
50import org.jdtaus.core.text.MessageEvent;
51import org.jdtaus.core.text.spi.ApplicationLogger;
52 
53/**
54 * {@code BankleitzahlenVerzeichnis} implementation backed by bank files.
55 * <p>This implementation uses bank file resources provided by any available {@link BankfileProvider}
56 * implementation.</p>
57 *
58 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
59 * @version $JDTAUS: BankfileBankleitzahlenVerzeichnis.java 8893 2014-12-08 22:40:08Z schulte $
60 */
61public class BankfileBankleitzahlenVerzeichnis implements BankleitzahlenVerzeichnis
62{
63 
64    /** Flag indicating that initialization has been performed. */
65    private boolean initialized;
66 
67    /** {@code BankleitzahlenDatei} delegate. */
68    private BankleitzahlenDatei bankFile;
69 
70    /** Date of expiration. */
71    private Date dateOfExpiration;
72 
73    /** Timestamp providers got checked for modifications. */
74    private long lastModificationCheck = System.currentTimeMillis();
75 
76    /** Number of milliseconds to pass before providers are checked for modifications. */
77    private Long reloadIntervalMillis;
78 
79    /** Provider checked for modifications. */
80    private BankfileProvider provider;
81 
82    /** Last modification of the provider checked for modifications. */
83    private long lastModifiedMillis;
84 
85    /** Number of bank codes for which progress monitoring gets enabled. */
86    private Long monitoringThreshold;
87 
88    /**
89     * Creates a new {@code BankfileBankleitzahlenVerzeichnis} instance taking the number of milliseconds to pass before
90     * resources are checked for modifications and the number of bank codes for which progress monitoring gets enabled.
91     *
92     * @param reloadIntervalMillis Number of milliseconds to pass before resources are checked for modifications.
93     * @param monitoringThreshold Number of bank codes for which progress monitoring gets enabled.
94     */
95    public BankfileBankleitzahlenVerzeichnis( final long reloadIntervalMillis, final long monitoringThreshold )
96    {
97        this();
98        if ( reloadIntervalMillis > 0 )
99        {
100            this.reloadIntervalMillis = new Long( reloadIntervalMillis );
101        }
102        if ( monitoringThreshold > 0 )
103        {
104            this.monitoringThreshold = new Long( monitoringThreshold );
105        }
106    }
107 
108    /**
109     * Gets the number of milliseconds to pass before providers are checked for modifications.
110     *
111     * @return The number of milliseconds to pass before providers are checked for modifications.
112     */
113    public long getReloadIntervalMillis()
114    {
115        if ( this.reloadIntervalMillis == null )
116        {
117            this.reloadIntervalMillis = this.getDefaultReloadIntervalMillis();
118        }
119 
120        return this.reloadIntervalMillis.longValue();
121    }
122 
123    /**
124     * Gets the number of bank codes for which progress monitoring gets enabled.
125     *
126     * @return The number of bank codes for which progress monitoring gets enabled.
127     */
128    public long getMonitoringThreshold()
129    {
130        if ( this.monitoringThreshold == null )
131        {
132            this.monitoringThreshold = this.getDefaultMonitoringThreshold();
133        }
134 
135        return this.monitoringThreshold.longValue();
136    }
137 
138    public Date getDateOfExpiration()
139    {
140        this.assertValidProperties();
141        this.assertInitialized();
142        return (Date) this.dateOfExpiration.clone();
143    }
144 
145    public BankleitzahlInfo getHeadOffice( final Bankleitzahl bankCode ) throws BankleitzahlExpirationException
146    {
147        if ( bankCode == null )
148        {
149            throw new NullPointerException( "bankCode" );
150        }
151 
152        this.assertValidProperties();
153        this.assertInitialized();
154 
155        BankleitzahlInfo headOffice = this.bankFile.getHeadOfficeRecord( bankCode );
156 
157        if ( headOffice == null )
158        {
159            final BankleitzahlInfo deletedHeadOfficeRecord = this.bankFile.getDeletedHeadOfficeRecord( bankCode );
160            final BankleitzahlInfo replacementRecord = this.findReplacementBankeitzahlInfo( deletedHeadOfficeRecord );
161 
162            if ( replacementRecord != null
163                     && ( replacementRecord.getDeletionDate() == null
164                          || replacementRecord.getDeletionDate().before( this.getDateOfExpiration() ) ) )
165            {
166                throw new BankleitzahlExpirationException( deletedHeadOfficeRecord, replacementRecord );
167            }
168        }
169 
170        return headOffice;
171    }
172 
173    public BankleitzahlInfo[] getBranchOffices( final Bankleitzahl bankCode ) throws BankleitzahlExpirationException
174    {
175        if ( bankCode == null )
176        {
177            throw new NullPointerException( "bankCode" );
178        }
179 
180        this.assertValidProperties();
181        this.assertInitialized();
182 
183        final BankleitzahlInfo[] branchOfficeRecords = this.bankFile.getBranchOfficeRecords( bankCode );
184 
185        if ( branchOfficeRecords.length == 0 )
186        {
187            final BankleitzahlInfo deletedHeadOfficeRecord = this.bankFile.getDeletedHeadOfficeRecord( bankCode );
188            final BankleitzahlInfo replacementRecord = this.findReplacementBankeitzahlInfo( deletedHeadOfficeRecord );
189 
190            if ( replacementRecord != null
191                     && ( replacementRecord.getDeletionDate() == null
192                          || replacementRecord.getDeletionDate().before( this.getDateOfExpiration() ) ) )
193            {
194                throw new BankleitzahlExpirationException( deletedHeadOfficeRecord, replacementRecord );
195            }
196        }
197 
198        return branchOfficeRecords;
199    }
200 
201    public final BankleitzahlInfo[] search( final String name, final String postalCode, final String city,
202                                            final boolean branchOffices )
203    {
204        return this.searchBankleitzahlInfos( name, postalCode, city, Boolean.valueOf( !branchOffices ),
205                                             Boolean.valueOf( branchOffices ) );
206 
207    }
208 
209    public BankleitzahlInfo[] searchBankleitzahlInfos( final String name, final String postalCode, final String city,
210                                                       final Boolean headOffices, final Boolean branchOffices )
211    {
212        this.assertValidProperties();
213        this.assertInitialized();
214 
215        final BankleitzahlInfo[] records =
216            this.bankFile == null ? new BankleitzahlInfo[ 0 ] : this.bankFile.getRecords();
217 
218        final Collection col = new ArrayList( records.length );
219 
220        if ( records.length > 0 )
221        {
222            final Task task = new Task();
223            task.setCancelable( true );
224            task.setDescription( new SearchesBankleitzahlInfosMessage() );
225            task.setIndeterminate( false );
226            task.setMinimum( 0 );
227            task.setMaximum( records.length - 1 );
228            task.setProgress( 0 );
229 
230            try
231            {
232                if ( task.getMaximum() > this.getMonitoringThreshold() )
233                {
234                    this.getTaskMonitor().monitor( task );
235                }
236 
237                final NumberFormat plzFmt = new DecimalFormat( "00000" );
238                final Pattern namePattern =
239                    name != null ? Pattern.compile( ".*" + name.toUpperCase() + ".*" ) : null;
240 
241                final Pattern postalPattern =
242                    postalCode != null ? Pattern.compile( ".*" + postalCode.toUpperCase() + ".*" ) : null;
243 
244                final Pattern cityPattern =
245                    city != null ? Pattern.compile( ".*" + city.toUpperCase() + ".*" ) : null;
246 
247                for ( int i = records.length - 1; i >= 0 && !task.isCancelled(); i-- )
248                {
249                    final String plz = plzFmt.format( records[i].getPostalCode() );
250                    task.setProgress( task.getMaximum() - i );
251 
252                    if ( ( namePattern == null
253                           ? true : namePattern.matcher( records[i].getName().toUpperCase() ).matches() )
254                             && ( postalPattern == null
255                                  ? true : postalPattern.matcher( plz ).matches() )
256                             && ( cityPattern == null
257                                  ? true : cityPattern.matcher( records[i].getCity().toUpperCase() ).matches() )
258                             && ( headOffices == null
259                                  ? true : records[i].isHeadOffice() == headOffices.booleanValue() )
260                             && ( branchOffices == null
261                                  ? true : records[i].isHeadOffice() != branchOffices.booleanValue() ) )
262                    {
263                        col.add( records[i].clone() );
264                    }
265                }
266 
267                if ( task.isCancelled() )
268                {
269                    col.clear();
270                }
271            }
272            catch ( final PatternSyntaxException e )
273            {
274                throw (IllegalArgumentException) new IllegalArgumentException( e.getMessage() ).initCause( e );
275            }
276            finally
277            {
278                if ( task.getMaximum() > this.getMonitoringThreshold() )
279                {
280                    this.getTaskMonitor().finish( task );
281                }
282            }
283        }
284 
285        return (BankleitzahlInfo[]) col.toArray( new BankleitzahlInfo[ col.size() ] );
286    }
287 
288    /**
289     * Gets the {@code BankleitzahlenDatei} backing the instance.
290     *
291     * @return The {@code BankleitzahlenDatei} backing the instance.
292     * @since 1.16
293     */
294    protected BankleitzahlenDatei getBankfile()
295    {
296        this.assertValidProperties();
297        this.assertInitialized();
298        return this.bankFile;
299    }
300 
301    /**
302     * Initializes the instance.
303     *
304     * @throws RuntimeException if initialization fails.
305     *
306     * @see #assertValidProperties()
307     */
308    private synchronized void assertInitialized()
309    {
310        Task task = null;
311        boolean logExpirationMessage = false;
312 
313        try
314        {
315            if ( this.provider == null
316                     || System.currentTimeMillis() - this.lastModificationCheck > this.getReloadIntervalMillis() )
317            {
318                this.lastModificationCheck = System.currentTimeMillis();
319                if ( this.provider == null || this.provider.getLastModifiedMillis() != this.lastModifiedMillis )
320                {
321                    this.bankFile = null;
322                    this.dateOfExpiration = null;
323                    this.initialized = false;
324 
325                    if ( this.provider != null )
326                    {
327                        this.getLogger().info( this.getReloadInfoMessage(
328                            this.getLocale(), new Date( this.lastModifiedMillis ),
329                            new Date( this.provider.getLastModifiedMillis() ) ) );
330 
331                    }
332                }
333            }
334 
335            if ( !this.initialized )
336            {
337                final DateFormat dateFormat = new SimpleDateFormat( this.getDateOfExpirationPattern() );
338                this.dateOfExpiration = dateFormat.parse( this.getDateOfExpirationText() );
339                final BankfileProvider bankfileProvider = this.getLatestBankfileProvider();
340 
341                if ( bankfileProvider != null && bankfileProvider.getBankfileCount() > 0 )
342                {
343                    this.provider = bankfileProvider;
344                    this.lastModifiedMillis = bankfileProvider.getLastModifiedMillis();
345                    this.dateOfExpiration =
346                        bankfileProvider.getDateOfExpiration( bankfileProvider.getBankfileCount() - 1 );
347 
348                    final URL[] rsrc = new URL[ bankfileProvider.getBankfileCount() ];
349                    for ( int i = 0; i < rsrc.length; i++ )
350                    {
351                        rsrc[i] = bankfileProvider.getBankfile( i );
352                    }
353 
354                    task = new Task();
355                    task.setIndeterminate( false );
356                    task.setCancelable( false );
357                    task.setDescription( new ReadsBankleitzahlenDateiMessage() );
358                    task.setMinimum( 0 );
359                    task.setProgress( 0 );
360                    task.setMaximum( rsrc.length );
361                    this.getTaskMonitor().monitor( task );
362 
363                    int progress = 0;
364                    long processedRecords = 0L;
365                    task.setProgress( progress++ );
366                    this.bankFile = new BankleitzahlenDatei( rsrc[0], bankfileProvider.getFormat( 0 ),
367                                                             bankfileProvider.getDateOfValidity( 0 ),
368                                                             bankfileProvider.getDateOfExpiration( 0 ) );
369 
370                    processedRecords += this.bankFile.getRecords().length;
371                    for ( int i = 1; i < rsrc.length; i++ )
372                    {
373                        task.setProgress( progress++ );
374                        final BankleitzahlenDatei update =
375                            new BankleitzahlenDatei( rsrc[i], bankfileProvider.getFormat( i ),
376                                                     bankfileProvider.getDateOfValidity( i ),
377                                                     bankfileProvider.getDateOfExpiration( i ) );
378 
379                        this.bankFile.update( update );
380                        processedRecords += update.getRecords().length;
381                    }
382 
383                    // Log outdated records.
384                    if ( this.getLogger().isDebugEnabled() )
385                    {
386                        for ( int i = 0, l0 = this.bankFile.getDeletedRecords().length; i < l0; i++ )
387                        {
388                            final BankleitzahlInfo record = this.bankFile.getDeletedRecords()[i];
389 
390                            if ( record.isHeadOffice() )
391                            {
392                                this.getLogger().debug( this.getOutdatedInfoMessage(
393                                    this.getLocale(), record.getBankCode().format( Bankleitzahl.LETTER_FORMAT ) ) );
394 
395                            }
396                        }
397                    }
398 
399                    logExpirationMessage = true;
400                    this.initialized = true;
401 
402                    this.getLogger().info( this.getBankfileInfoMessage(
403                        this.getLocale(), new Long( processedRecords ), new Integer( rsrc.length ) ) );
404 
405                }
406                else
407                {
408                    this.getLogger().warn( this.getNoBankfilesFoundMessage( this.getLocale() ) );
409                }
410            }
411        }
412        catch ( final ParseException e )
413        {
414            throw new RuntimeException( e );
415        }
416        catch ( final IOException e )
417        {
418            throw new RuntimeException( e );
419        }
420        finally
421        {
422            if ( task != null )
423            {
424                this.getTaskMonitor().finish( task );
425            }
426        }
427 
428        // Log an application message if the directory is outdated.
429        if ( logExpirationMessage )
430        {
431            if ( new Date().after( this.getDateOfExpiration() ) )
432            {
433                this.getApplicationLogger().log( new MessageEvent(
434                    this, new Message[]
435                    {
436                        new OutdatedBankleitzahlenVerzeichnisMessage( this.getDateOfExpiration() )
437                    }, MessageEvent.WARNING ) );
438 
439            }
440        }
441    }
442 
443    /**
444     * Checks configured properties.
445     *
446     * @throws PropertyException if configured properties hold invalid values.
447     */
448    private void assertValidProperties()
449    {
450        if ( this.getReloadIntervalMillis() < 0L )
451        {
452            throw new PropertyException( "reloadIntervalMillis", Long.toString( this.getReloadIntervalMillis() ) );
453        }
454        if ( this.getDateOfExpirationText() == null || this.getDateOfExpirationText().length() == 0 )
455        {
456            throw new PropertyException( "dateOfExpirationText", this.getDateOfExpirationText() );
457        }
458        if ( this.getDateOfExpirationPattern() == null || this.getDateOfExpirationPattern().length() == 0 )
459        {
460            throw new PropertyException( "dateOfExpirationPattern", this.getDateOfExpirationPattern() );
461        }
462 
463        try
464        {
465            final DateFormat dateFormat = new SimpleDateFormat( this.getDateOfExpirationPattern() );
466            dateFormat.parse( this.getDateOfExpirationText() );
467        }
468        catch ( final ParseException e )
469        {
470            throw new PropertyException( "dateOfExpirationText", this.getDateOfExpirationText(), e );
471        }
472    }
473 
474    /**
475     * Searches for a record replacing a given record recursively.
476     *
477     * @param bankInfo The record to search a replacing record for or {@code null}.
478     *
479     * @return The record to replace {@code bankInfo} with {@code null}.
480     */
481    private BankleitzahlInfo findReplacementBankeitzahlInfo( final BankleitzahlInfo bankInfo )
482    {
483        BankleitzahlInfo replacement = null;
484 
485        if ( bankInfo != null && bankInfo.getReplacingBankCode() != null )
486        {
487            replacement = this.bankFile.getHeadOfficeRecord( bankInfo.getReplacingBankCode() );
488 
489            if ( replacement == null )
490            {
491                replacement = this.bankFile.getDeletedHeadOfficeRecord( bankInfo.getReplacingBankCode() );
492            }
493 
494            final BankleitzahlInfo recurse = this.findReplacementBankeitzahlInfo( replacement );
495 
496            if ( recurse != null )
497            {
498                replacement = recurse;
499            }
500        }
501 
502        return replacement;
503    }
504 
505    /**
506     * Gets the {@code BankfileProvider} with the latest date of expiration from the available
507     * {@code BankfileProvider}s.
508     *
509     * @return The {@code BankfileProvider} with the latest date of expiration or {@code null}, if no providers are
510     * available.
511     *
512     * @throws IOException if getting the provider fails.
513     *
514     * @see BankfileProvider
515     */
516    private BankfileProvider getLatestBankfileProvider() throws IOException
517    {
518        final BankfileProvider[] providers = this.getBankfileProvider();
519        BankfileProvider latest = null;
520 
521        for ( int i = providers.length - 1; i >= 0; i-- )
522        {
523            if ( providers[i].getBankfileCount() > 0
524                     && ( latest == null || latest.getDateOfExpiration( latest.getBankfileCount() - 1 ).
525                         before( providers[i].getDateOfExpiration( providers[i].getBankfileCount() - 1 ) ) ) )
526            {
527                latest = providers[i];
528            }
529        }
530 
531        return latest;
532    }
533 
534    //--Constructors------------------------------------------------------------
535 
536// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausConstructors
537    // This section is managed by jdtaus-container-mojo.
538 
539    /** Standard implementation constructor <code>org.jdtaus.banking.ri.blzdirectory.BankfileBankleitzahlenVerzeichnis</code>. */
540    public BankfileBankleitzahlenVerzeichnis()
541    {
542        super();
543    }
544 
545// </editor-fold>//GEN-END:jdtausConstructors
546 
547    //------------------------------------------------------------Constructors--
548    //--Dependencies------------------------------------------------------------
549 
550// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausDependencies
551    // This section is managed by jdtaus-container-mojo.
552 
553    /**
554     * Gets the configured <code>Logger</code> implementation.
555     *
556     * @return The configured <code>Logger</code> implementation.
557     */
558    private Logger getLogger()
559    {
560        return (Logger) ContainerFactory.getContainer().
561            getDependency( this, "Logger" );
562 
563    }
564 
565    /**
566     * Gets the configured <code>ApplicationLogger</code> implementation.
567     *
568     * @return The configured <code>ApplicationLogger</code> implementation.
569     */
570    private ApplicationLogger getApplicationLogger()
571    {
572        return (ApplicationLogger) ContainerFactory.getContainer().
573            getDependency( this, "ApplicationLogger" );
574 
575    }
576 
577    /**
578     * Gets the configured <code>TaskMonitor</code> implementation.
579     *
580     * @return The configured <code>TaskMonitor</code> implementation.
581     */
582    private TaskMonitor getTaskMonitor()
583    {
584        return (TaskMonitor) ContainerFactory.getContainer().
585            getDependency( this, "TaskMonitor" );
586 
587    }
588 
589    /**
590     * Gets the configured <code>BankfileProvider</code> implementation.
591     *
592     * @return The configured <code>BankfileProvider</code> implementation.
593     */
594    private BankfileProvider[] getBankfileProvider()
595    {
596        return (BankfileProvider[]) ContainerFactory.getContainer().
597            getDependency( this, "BankfileProvider" );
598 
599    }
600 
601    /**
602     * Gets the configured <code>Locale</code> implementation.
603     *
604     * @return The configured <code>Locale</code> implementation.
605     */
606    private Locale getLocale()
607    {
608        return (Locale) ContainerFactory.getContainer().
609            getDependency( this, "Locale" );
610 
611    }
612 
613// </editor-fold>//GEN-END:jdtausDependencies
614 
615    //------------------------------------------------------------Dependencies--
616    //--Properties--------------------------------------------------------------
617 
618// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausProperties
619    // This section is managed by jdtaus-container-mojo.
620 
621    /**
622     * Gets the value of property <code>defaultReloadIntervalMillis</code>.
623     *
624     * @return Default number of milliseconds to pass before providers are checked for modifications.
625     */
626    private java.lang.Long getDefaultReloadIntervalMillis()
627    {
628        return (java.lang.Long) ContainerFactory.getContainer().
629            getProperty( this, "defaultReloadIntervalMillis" );
630 
631    }
632 
633    /**
634     * Gets the value of property <code>defaultMonitoringThreshold</code>.
635     *
636     * @return Default number of bank codes for which progress monitoring gets enabled.
637     */
638    private java.lang.Long getDefaultMonitoringThreshold()
639    {
640        return (java.lang.Long) ContainerFactory.getContainer().
641            getProperty( this, "defaultMonitoringThreshold" );
642 
643    }
644 
645    /**
646     * Gets the value of property <code>dateOfExpirationText</code>.
647     *
648     * @return The date of expiration of the directory.
649     */
650    private java.lang.String getDateOfExpirationText()
651    {
652        return (java.lang.String) ContainerFactory.getContainer().
653            getProperty( this, "dateOfExpirationText" );
654 
655    }
656 
657    /**
658     * Gets the value of property <code>dateOfExpirationPattern</code>.
659     *
660     * @return Format pattern of the date of expiration property.
661     */
662    private java.lang.String getDateOfExpirationPattern()
663    {
664        return (java.lang.String) ContainerFactory.getContainer().
665            getProperty( this, "dateOfExpirationPattern" );
666 
667    }
668 
669// </editor-fold>//GEN-END:jdtausProperties
670 
671    //--------------------------------------------------------------Properties--
672    //--Messages----------------------------------------------------------------
673 
674// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausMessages
675    // This section is managed by jdtaus-container-mojo.
676 
677    /**
678     * Gets the text of message <code>outdatedInfo</code>.
679     * <blockquote><pre>Bankleitzahl {0} ist veraltet.</pre></blockquote>
680     * <blockquote><pre>Bankleitzahl {0} is outdated.</pre></blockquote>
681     *
682     * @param locale The locale of the message instance to return.
683     * @param bankleitzahl format parameter.
684     *
685     * @return the text of message <code>outdatedInfo</code>.
686     */
687    private String getOutdatedInfoMessage( final Locale locale,
688            final java.lang.String bankleitzahl )
689    {
690        return ContainerFactory.getContainer().
691            getMessage( this, "outdatedInfo", locale,
692                new Object[]
693                {
694                    bankleitzahl
695                });
696 
697    }
698 
699    /**
700     * Gets the text of message <code>bankfileInfo</code>.
701     * <blockquote><pre>{1,choice,0#Keine Bankleitzahlendatei|1#Eine Bankleitzahlendatei|1<{1} Bankleitzahlendateien} gelesen. {0,choice,0#Keine Datensätze|1#Einen Datensatz|1<{0} Datensätze} verarbeitet.</pre></blockquote>
702     * <blockquote><pre>Read {1,choice,0#no bankfile|1#one bankfile|1<{1} bankfiles}. Processed {0,choice,0#no entities|1#one entity|1<{0} entities}.</pre></blockquote>
703     *
704     * @param locale The locale of the message instance to return.
705     * @param entityCount format parameter.
706     * @param bankfileCount format parameter.
707     *
708     * @return the text of message <code>bankfileInfo</code>.
709     */
710    private String getBankfileInfoMessage( final Locale locale,
711            final java.lang.Number entityCount,
712            final java.lang.Number bankfileCount )
713    {
714        return ContainerFactory.getContainer().
715            getMessage( this, "bankfileInfo", locale,
716                new Object[]
717                {
718                    entityCount,
719                    bankfileCount
720                });
721 
722    }
723 
724    /**
725     * Gets the text of message <code>reloadInfo</code>.
726     * <blockquote><pre>Änderungszeitstempel des Bankleitzahlen-Providers von ''{0,date} {0,time}'' zu ''{1,date} {1,time}''. Lädt neue Bankleitzahlen.</pre></blockquote>
727     * <blockquote><pre>Provider's last modification timestamp changed from ''{0,date} {0,time}'' to ''{1,date} {1,time}''. Loading new bankcodes.</pre></blockquote>
728     *
729     * @param locale The locale of the message instance to return.
730     * @param lastModification format parameter.
731     * @param lastProviderModification format parameter.
732     *
733     * @return the text of message <code>reloadInfo</code>.
734     */
735    private String getReloadInfoMessage( final Locale locale,
736            final java.util.Date lastModification,
737            final java.util.Date lastProviderModification )
738    {
739        return ContainerFactory.getContainer().
740            getMessage( this, "reloadInfo", locale,
741                new Object[]
742                {
743                    lastModification,
744                    lastProviderModification
745                });
746 
747    }
748 
749    /**
750     * Gets the text of message <code>noBankfilesFound</code>.
751     * <blockquote><pre>Keine Bankleitzahlendateien gefunden.</pre></blockquote>
752     * <blockquote><pre>No bankcode files found.</pre></blockquote>
753     *
754     * @param locale The locale of the message instance to return.
755     *
756     * @return the text of message <code>noBankfilesFound</code>.
757     */
758    private String getNoBankfilesFoundMessage( final Locale locale )
759    {
760        return ContainerFactory.getContainer().
761            getMessage( this, "noBankfilesFound", locale, null );
762 
763    }
764 
765// </editor-fold>//GEN-END:jdtausMessages
766 
767    //----------------------------------------------------------------Messages--
768}

[all classes][org.jdtaus.banking.ri.blzdirectory]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov