001 // SECTION-START[License Header] 002 // <editor-fold defaultstate="collapsed" desc=" Generated License "> 003 /* 004 * Copyright (c) 2010 The JOMC Project 005 * Copyright (c) 2005 Christian Schulte <schulte2005@users.sourceforge.net> 006 * All rights reserved. 007 * 008 * Redistribution and use in source and binary forms, with or without 009 * modification, are permitted provided that the following conditions 010 * are met: 011 * 012 * o Redistributions of source code must retain the above copyright 013 * notice, this list of conditions and the following disclaimer. 014 * 015 * o Redistributions in binary form must reproduce the above copyright 016 * notice, this list of conditions and the following disclaimer in 017 * the documentation and/or other materials provided with the 018 * distribution. 019 * 020 * THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS" 021 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 022 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 023 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR 024 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 025 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 026 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 027 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 028 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 029 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 030 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 031 * 032 * $Id: DefaultSequenceDirectory.java 2247 2010-06-29 08:01:42Z schulte2005 $ 033 * 034 */ 035 // </editor-fold> 036 // SECTION-END 037 package org.jomc.sequences.ri; 038 039 import java.math.BigInteger; 040 import java.util.Calendar; 041 import java.util.HashSet; 042 import java.util.List; 043 import java.util.Set; 044 import javax.persistence.NoResultException; 045 import javax.persistence.Query; 046 import org.jomc.sequences.CapacityLimitException; 047 import org.jomc.sequences.ConcurrentModificationException; 048 import org.jomc.sequences.SequenceExistsException; 049 import org.jomc.sequences.SequenceVetoException; 050 import org.jomc.sequences.Sequence; 051 import org.jomc.sequences.SequenceChangeEvent; 052 import org.jomc.sequences.SequenceChangeListener; 053 import org.jomc.sequences.SequenceDirectory; 054 import org.jomc.sequences.SequenceLimitException; 055 import org.jomc.sequences.SequenceNotFoundException; 056 import org.jomc.sequences.SequenceOperations; 057 import org.jomc.sequences.SequencesSystemException; 058 import org.jomc.sequences.VetoableSequenceChangeListener; 059 import org.jomc.sequences.model.SequenceType; 060 import org.jomc.sequences.model.SequencesType; 061 062 // SECTION-START[Documentation] 063 // <editor-fold defaultstate="collapsed" desc=" Generated Documentation "> 064 /** 065 * SequenceDirectory reference implementation. 066 * <p><b>Specifications</b><ul> 067 * <li>{@code 'org.jomc.sequences.SequenceDirectory'} {@code (org.jomc.sequences.SequenceDirectory)} {@code 1.0} {@code Singleton}</li> 068 * <li>{@code 'org.jomc.sequences.SequenceOperations'} {@code (org.jomc.sequences.SequenceOperations)} {@code 1.0} {@code Singleton}</li> 069 * </ul></p> 070 * <p><b>Properties</b><ul> 071 * <li>"{@link #getDefaultSequenceDirectoryCapacityLimit defaultSequenceDirectoryCapacityLimit}" 072 * <blockquote>Property of type {@code java.math.BigInteger}. 073 * <p>Default capacity limit when creating new sequence directory entities and no default value is provided otherwise.</p> 074 * </blockquote></li> 075 * <li>"{@link #getSequenceDirectoryName sequenceDirectoryName}" 076 * <blockquote>Property of type {@code java.lang.String}. 077 * <p>Name uniquely identifying the directory in a set of directories.</p> 078 * </blockquote></li> 079 * <li>"{@link #getSequenceDirectoryNameQueryParameterName sequenceDirectoryNameQueryParameterName}" 080 * <blockquote>Property of type {@code java.lang.String}. 081 * <p>Name of a JPA query parameter denoting the name of a sequence directory entity.</p> 082 * </blockquote></li> 083 * <li>"{@link #getSequenceNameQueryParameterName sequenceNameQueryParameterName}" 084 * <blockquote>Property of type {@code java.lang.String}. 085 * <p>Name of a JPA query parameter denoting the name of a sequence entity.</p> 086 * </blockquote></li> 087 * </ul></p> 088 * <p><b>Dependencies</b><ul> 089 * <li>"{@link #getEntityManager EntityManager}"<blockquote> 090 * Dependency on {@code 'javax.persistence.EntityManager'} {@code (javax.persistence.EntityManager)}.</blockquote></li> 091 * <li>"{@link #getLocale Locale}"<blockquote> 092 * Dependency on {@code 'java.util.Locale'} {@code (java.util.Locale)} at specification level 1.1 bound to an instance.</blockquote></li> 093 * <li>"{@link #getLogger Logger}"<blockquote> 094 * Dependency on {@code 'org.jomc.logging.Logger'} {@code (org.jomc.logging.Logger)} at specification level 1.0 bound to an instance.</blockquote></li> 095 * <li>"{@link #getSelectAllSequencesQuery SelectAllSequencesQuery}"<blockquote> 096 * Dependency on {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)}.</blockquote></li> 097 * <li>"{@link #getSelectSequenceCountQuery SelectSequenceCountQuery}"<blockquote> 098 * Dependency on {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)}.</blockquote></li> 099 * <li>"{@link #getSelectSequenceDirectoryQuery SelectSequenceDirectoryQuery}"<blockquote> 100 * Dependency on {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)}.</blockquote></li> 101 * <li>"{@link #getSelectSequenceQuery SelectSequenceQuery}"<blockquote> 102 * Dependency on {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)}.</blockquote></li> 103 * <li>"{@link #getSelectSequencesQuery SelectSequencesQuery}"<blockquote> 104 * Dependency on {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)}.</blockquote></li> 105 * <li>"{@link #getSequenceChangeListener SequenceChangeListener}"<blockquote> 106 * Dependency on {@code 'org.jomc.sequences.SequenceChangeListener'} {@code (org.jomc.sequences.SequenceChangeListener)} at specification level 1.0 bound to an instance.</blockquote></li> 107 * <li>"{@link #getSequenceMapper SequenceMapper}"<blockquote> 108 * Dependency on {@code 'org.jomc.sequences.ri.SequenceMapper'} {@code (org.jomc.sequences.ri.SequenceMapper)} at specification level 1.0 bound to an instance.</blockquote></li> 109 * <li>"{@link #getVetoableSequenceChangeListener VetoableSequenceChangeListener}"<blockquote> 110 * Dependency on {@code 'org.jomc.sequences.VetoableSequenceChangeListener'} {@code (org.jomc.sequences.VetoableSequenceChangeListener)} at specification level 1.0 bound to an instance.</blockquote></li> 111 * </ul></p> 112 * <p><b>Messages</b><ul> 113 * <li>"{@link #getIllegalArgumentMessage illegalArgumentMessage}"<table> 114 * <tr><td valign="top">English:</td><td valign="top"><pre>Illegal value ''{1}'' for argument ''{0}''.</pre></td></tr> 115 * <tr><td valign="top">Deutsch:</td><td valign="top"><pre>Ungültiger Wert ''{1}'' für Parameter ''{0}''.</pre></td></tr> 116 * </table> 117 * <li>"{@link #getSuccessfullyCreatedSequenceDirectoryMessage successfullyCreatedSequenceDirectoryMessage}"<table> 118 * <tr><td valign="top">English:</td><td valign="top"><pre>Sequence directory ''{0}'' created.</pre></td></tr> 119 * <tr><td valign="top">Deutsch:</td><td valign="top"><pre>Sequenzverzeichnis ''{0}'' erstellt.</pre></td></tr> 120 * </table> 121 * </ul></p> 122 * 123 * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a> 1.0 124 * @version $Id: DefaultSequenceDirectory.java 2247 2010-06-29 08:01:42Z schulte2005 $ 125 */ 126 // </editor-fold> 127 // SECTION-END 128 // SECTION-START[Annotations] 129 // <editor-fold defaultstate="collapsed" desc=" Generated Annotations "> 130 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 131 // </editor-fold> 132 // SECTION-END 133 public class DefaultSequenceDirectory 134 implements SequenceDirectory, SequenceOperations 135 { 136 // SECTION-START[SequenceDirectory] 137 138 public BigInteger getSequenceCount() 139 { 140 final Query query = this.getSelectSequenceCountQuery(); 141 query.setParameter( this.getSequenceDirectoryNameQueryParameterName(), 142 this.getSequencesType( this.getSequenceDirectoryName() ).getName() ); 143 144 return BigInteger.valueOf( ( (Long) query.getSingleResult() ).longValue() ); 145 } 146 147 public BigInteger getCapacityLimit() 148 { 149 return this.getSequencesType( this.getSequenceDirectoryName() ).getCapacityLimit(); 150 } 151 152 public Sequence getSequence( final String name ) 153 { 154 if ( name == null ) 155 { 156 throw new SequencesSystemException( this.getIllegalArgumentMessage( this.getLocale(), "name", null ) ); 157 } 158 159 final SequenceType sequenceType = this.getSequenceType( name ); 160 if ( sequenceType != null ) 161 { 162 return this.getSequenceMapper().map( sequenceType, new Sequence() ); 163 } 164 165 return null; 166 } 167 168 public Sequence addSequence( final Sequence sequence ) 169 { 170 if ( sequence == null ) 171 { 172 throw new SequencesSystemException( this.getIllegalArgumentMessage( this.getLocale(), "sequence", null ) ); 173 } 174 175 final BigInteger capacityLimit = this.getCapacityLimit(); 176 if ( this.getSequenceCount().compareTo( capacityLimit ) >= 0 ) 177 { 178 throw new CapacityLimitException( capacityLimit ); 179 } 180 181 this.fireVetoableSequenceChange( null, sequence ); 182 183 SequenceType sequenceType = this.getSequenceType( sequence.getName() ); 184 185 if ( sequenceType != null ) 186 { 187 throw new SequenceExistsException( this.getSequenceMapper().map( sequenceType, new Sequence() ) ); 188 } 189 190 sequenceType = this.getSequenceMapper().map( sequence, new SequenceType() ); 191 sequenceType.setJpaDate( Calendar.getInstance() ); 192 193 final SequencesType sequences = this.getSequencesType( this.getSequenceDirectoryName() ); 194 this.getEntityManager().persist( sequenceType ); 195 sequences.getSequence().add( sequenceType ); 196 this.getEntityManager().merge( sequences ); 197 198 final Sequence persistent = this.getSequenceMapper().map( sequenceType, new Sequence() ); 199 this.fireSequenceChange( null, persistent ); 200 return persistent; 201 } 202 203 public Sequence editSequence( final String name, final long revision, final Sequence sequence ) 204 { 205 if ( name == null ) 206 { 207 throw new SequencesSystemException( this.getIllegalArgumentMessage( this.getLocale(), "name", null ) ); 208 } 209 if ( sequence == null ) 210 { 211 throw new SequencesSystemException( this.getIllegalArgumentMessage( this.getLocale(), "sequence", null ) ); 212 } 213 214 SequenceType sequenceType = this.getSequenceType( name ); 215 216 if ( sequenceType == null ) 217 { 218 throw new SequenceNotFoundException( name ); 219 } 220 if ( sequenceType.getRevision() != revision ) 221 { 222 throw new ConcurrentModificationException( 223 this.getSequenceMapper().map( sequenceType, new Sequence() ) ); 224 225 } 226 227 final Sequence oldValue = this.getSequenceMapper().map( sequenceType, new Sequence() ); 228 this.fireVetoableSequenceChange( oldValue, sequence ); 229 230 sequenceType = this.getSequenceMapper().map( sequence, sequenceType ); 231 sequenceType.setRevision( sequenceType.getRevision() + 1L ); 232 sequenceType.setJpaDate( Calendar.getInstance() ); 233 this.getEntityManager().merge( sequenceType ); 234 235 final Sequence edited = this.getSequenceMapper().map( sequenceType, new Sequence() ); 236 this.fireSequenceChange( oldValue, edited ); 237 return edited; 238 } 239 240 public Sequence deleteSequence( final String name, final long revision ) 241 { 242 if ( name == null ) 243 { 244 throw new SequencesSystemException( this.getIllegalArgumentMessage( this.getLocale(), "name", null ) ); 245 } 246 247 final SequenceType sequenceType = this.getSequenceType( name ); 248 249 if ( sequenceType == null ) 250 { 251 throw new SequenceNotFoundException( name ); 252 } 253 if ( sequenceType.getRevision() != revision ) 254 { 255 throw new ConcurrentModificationException( 256 this.getSequenceMapper().map( sequenceType, new Sequence() ) ); 257 258 } 259 260 final Sequence deleted = this.getSequenceMapper().map( sequenceType, new Sequence() ); 261 this.fireVetoableSequenceChange( deleted, null ); 262 263 final SequencesType sequences = this.getSequencesType( this.getSequenceDirectoryName() ); 264 sequences.getSequence().remove( sequenceType ); 265 this.getEntityManager().remove( sequenceType ); 266 267 if ( sequences.getSequence().isEmpty() ) 268 { 269 this.getEntityManager().remove( sequences ); 270 } 271 else 272 { 273 this.getEntityManager().merge( sequences ); 274 } 275 276 final Sequence s = this.getSequenceMapper().map( sequenceType, new Sequence() ); 277 this.fireSequenceChange( s, null ); 278 return deleted; 279 } 280 281 public Set<Sequence> searchSequences( final String name ) 282 { 283 final Query query = name == null ? this.getSelectAllSequencesQuery() : this.getSelectSequencesQuery(); 284 query.setParameter( this.getSequenceDirectoryNameQueryParameterName(), 285 this.getSequencesType( this.getSequenceDirectoryName() ).getName() ); 286 287 if ( name != null ) 288 { 289 query.setParameter( this.getSequenceNameQueryParameterName(), name ); 290 } 291 292 final List<SequenceType> resultList = (List<SequenceType>) query.getResultList(); 293 final Set<Sequence> sequences = new HashSet<Sequence>( resultList.size() ); 294 295 for ( SequenceType s : resultList ) 296 { 297 sequences.add( this.getSequenceMapper().map( s, new Sequence() ) ); 298 } 299 300 return sequences; 301 } 302 303 // SECTION-END 304 // SECTION-START[SequenceOperations] 305 public long getNextSequenceValue( final String sequenceName ) 306 { 307 if ( sequenceName == null ) 308 { 309 throw new SequencesSystemException( this.getIllegalArgumentMessage( 310 this.getLocale(), "sequenceName", null ) ); 311 312 } 313 314 final SequenceType sequenceType = this.getSequenceType( sequenceName ); 315 316 if ( sequenceType == null ) 317 { 318 throw new SequenceNotFoundException( sequenceName ); 319 } 320 321 final Sequence oldValue = this.getSequenceMapper().map( sequenceType, new Sequence() ); 322 final Long nextValue = sequenceType.getValue() + sequenceType.getIncrement(); 323 324 if ( nextValue < sequenceType.getValue() || nextValue > sequenceType.getMaximum() ) 325 { 326 throw new SequenceLimitException( sequenceType.getValue() ); 327 } 328 329 sequenceType.setValue( nextValue ); 330 sequenceType.setRevision( sequenceType.getRevision() + 1L ); 331 sequenceType.setJpaDate( Calendar.getInstance() ); 332 333 this.getEntityManager().merge( sequenceType ); 334 335 final Sequence s = this.getSequenceMapper().map( sequenceType, new Sequence() ); 336 this.fireSequenceChange( oldValue, s ); 337 return s.getValue(); 338 } 339 340 public long[] getNextSequenceValues( final String sequenceName, final int numValues ) 341 { 342 if ( sequenceName == null ) 343 { 344 throw new SequencesSystemException( this.getIllegalArgumentMessage( 345 this.getLocale(), "sequenceName", null ) ); 346 347 } 348 if ( numValues < 0 ) 349 { 350 throw new SequencesSystemException( this.getIllegalArgumentMessage( 351 this.getLocale(), "numValues", Integer.toString( numValues ) ) ); 352 353 } 354 355 final SequenceType sequenceType = this.getSequenceType( sequenceName ); 356 357 if ( sequenceType == null ) 358 { 359 throw new SequenceNotFoundException( sequenceName ); 360 } 361 362 final long[] values = new long[ numValues ]; 363 final Sequence oldValue = this.getSequenceMapper().map( sequenceType, new Sequence() ); 364 365 for ( int i = values.length - 1; i >= 0; i-- ) 366 { 367 final long nextValue = sequenceType.getValue() + sequenceType.getIncrement(); 368 369 if ( nextValue < sequenceType.getValue() || nextValue > sequenceType.getMaximum() ) 370 { 371 throw new SequenceLimitException( sequenceType.getValue() ); 372 } 373 374 sequenceType.setValue( nextValue ); 375 values[i] = nextValue; 376 } 377 378 sequenceType.setRevision( sequenceType.getRevision() + 1L ); 379 sequenceType.setJpaDate( Calendar.getInstance() ); 380 381 this.getEntityManager().merge( sequenceType ); 382 383 final Sequence s = this.getSequenceMapper().map( sequenceType, new Sequence() ); 384 this.fireSequenceChange( oldValue, s ); 385 return values; 386 } 387 388 // SECTION-END 389 // SECTION-START[DefaultSequenceDirectory] 390 /** 391 * Gets a sequence entity for a given name. 392 * 393 * @param name The name of the sequence entity to return. 394 * 395 * @return The sequence entity with name {@code name}, or {@code null} if no sequence entity matching {@code name} 396 * is found. 397 */ 398 protected SequenceType getSequenceType( final String name ) 399 { 400 try 401 { 402 final Query query = this.getSelectSequenceQuery(); 403 query.setParameter( this.getSequenceDirectoryNameQueryParameterName(), 404 this.getSequencesType( this.getSequenceDirectoryName() ).getName() ); 405 406 query.setParameter( this.getSequenceNameQueryParameterName(), name ); 407 408 return (SequenceType) query.getSingleResult(); 409 } 410 catch ( final NoResultException e ) 411 { 412 if ( this.getLogger().isDebugEnabled() ) 413 { 414 this.getLogger().debug( e.getMessage() ); 415 } 416 417 return null; 418 } 419 } 420 421 /** 422 * Gets a sequence directory entity for a given name. 423 * 424 * @param name The name of the sequence directory entity to return. 425 * 426 * @return The sequence directory entity matching {@code name}; if no such sequence directory entity is found, a 427 * new entity is created. 428 */ 429 protected SequencesType getSequencesType( final String name ) 430 { 431 final Query query = this.getSelectSequenceDirectoryQuery(); 432 query.setParameter( this.getSequenceDirectoryNameQueryParameterName(), name ); 433 434 SequencesType sequencesType = null; 435 436 try 437 { 438 sequencesType = (SequencesType) query.getSingleResult(); 439 } 440 catch ( final NoResultException e ) 441 { 442 if ( this.getLogger().isDebugEnabled() ) 443 { 444 this.getLogger().debug( e.getMessage() ); 445 } 446 447 sequencesType = new SequencesType(); 448 sequencesType.setName( name ); 449 450 BigInteger defaultCapacityLimit = sequencesType.getCapacityLimit(); 451 if ( defaultCapacityLimit == null ) 452 { 453 defaultCapacityLimit = this.getDefaultSequenceDirectoryCapacityLimit(); 454 } 455 456 sequencesType.setCapacityLimit( defaultCapacityLimit ); 457 sequencesType.setJpaDate( Calendar.getInstance() ); 458 459 this.getEntityManager().persist( sequencesType ); 460 461 if ( this.getLogger().isInfoEnabled() ) 462 { 463 this.getLogger().info( this.getSuccessfullyCreatedSequenceDirectoryMessage( this.getLocale(), name ) ); 464 } 465 } 466 467 return sequencesType; 468 } 469 470 /** 471 * Notifies all available {@code SequenceChangeListener}s about a changed sequence. 472 * 473 * @param oldValue The entity having been changed or {@code null} if {@code newValue} got added to the directory. 474 * @param newValue The value {@code oldValue} got changed to or {@code null} if {@code oldValue} got removed from 475 * the directory. 476 */ 477 protected void fireSequenceChange( final Sequence oldValue, final Sequence newValue ) 478 { 479 SequenceChangeEvent sequenceChange = null; 480 for ( SequenceChangeListener l : this.getSequenceChangeListener() ) 481 { 482 if ( sequenceChange == null ) 483 { 484 sequenceChange = new SequenceChangeEvent( this, oldValue, newValue ); 485 } 486 487 l.sequenceChange( sequenceChange ); 488 } 489 } 490 491 /** 492 * Notifies all available {@code SequenceChangeListener}s about a sequence about to change. 493 * 494 * @param oldValue The entity about to change or {@code null} if {@code newValue} is about to be added to the 495 * directory. 496 * @param newValue The value {@code oldValue} will change to or {@code null} if {@code oldValue} will be removed 497 * from the directory. 498 * 499 * @throws SequenceVetoException if any available {@code SequenceChangeListener} chooses to veto the sequence 500 * change. 501 */ 502 protected void fireVetoableSequenceChange( final Sequence oldValue, final Sequence newValue ) 503 { 504 SequenceChangeEvent sequenceChange = null; 505 boolean vetoed = false; 506 507 for ( VetoableSequenceChangeListener l : this.getVetoableSequenceChangeListener() ) 508 { 509 if ( sequenceChange == null ) 510 { 511 sequenceChange = new SequenceChangeEvent( this, oldValue, newValue ); 512 } 513 514 try 515 { 516 l.vetoableSequenceChange( sequenceChange ); 517 } 518 catch ( final SequenceVetoException e ) 519 { 520 this.getLogger().error( e.getMessage() ); 521 vetoed = true; 522 } 523 } 524 525 if ( vetoed ) 526 { 527 throw new SequenceVetoException( sequenceChange ); 528 } 529 } 530 531 // SECTION-END 532 // SECTION-START[Constructors] 533 // <editor-fold defaultstate="collapsed" desc=" Generated Constructors "> 534 535 /** Creates a new {@code DefaultSequenceDirectory} instance. */ 536 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 537 public DefaultSequenceDirectory() 538 { 539 // SECTION-START[Default Constructor] 540 super(); 541 // SECTION-END 542 } 543 // </editor-fold> 544 // SECTION-END 545 // SECTION-START[Dependencies] 546 // <editor-fold defaultstate="collapsed" desc=" Generated Dependencies "> 547 548 /** 549 * Gets the {@code EntityManager} dependency. 550 * <p>This method returns the {@code 'JOMC SDK JPA'} object of the {@code 'javax.persistence.EntityManager'} {@code (javax.persistence.EntityManager)} specification.</p> 551 * <p>That specification does not apply to any scope. A new object is returned whenever requested.</p> 552 * @return The {@code EntityManager} dependency. 553 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 554 */ 555 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 556 private javax.persistence.EntityManager getEntityManager() 557 { 558 final javax.persistence.EntityManager _d = (javax.persistence.EntityManager) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "EntityManager" ); 559 assert _d != null : "'EntityManager' dependency not found."; 560 return _d; 561 } 562 563 /** 564 * Gets the {@code Locale} dependency. 565 * <p>This method returns the {@code 'default'} object of the {@code 'java.util.Locale'} {@code (java.util.Locale)} specification at specification level 1.1.</p> 566 * <p>That specification does not apply to any scope. A new object is returned whenever requested and bound to this instance.</p> 567 * @return The {@code Locale} dependency. 568 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 569 */ 570 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 571 private java.util.Locale getLocale() 572 { 573 final java.util.Locale _d = (java.util.Locale) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "Locale" ); 574 assert _d != null : "'Locale' dependency not found."; 575 return _d; 576 } 577 578 /** 579 * Gets the {@code Logger} dependency. 580 * <p>This method returns any available object of the {@code 'org.jomc.logging.Logger'} {@code (org.jomc.logging.Logger)} specification at specification level 1.0.</p> 581 * <p>That specification does not apply to any scope. A new object is returned whenever requested and bound to this instance.</p> 582 * <p><b>Properties</b><dl> 583 * <dt>"{@code name}"</dt> 584 * <dd>Property of type {@code java.lang.String}. 585 * </dd> 586 * </dl> 587 * @return The {@code Logger} dependency. 588 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 589 */ 590 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 591 private org.jomc.logging.Logger getLogger() 592 { 593 final org.jomc.logging.Logger _d = (org.jomc.logging.Logger) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "Logger" ); 594 assert _d != null : "'Logger' dependency not found."; 595 return _d; 596 } 597 598 /** 599 * Gets the {@code SelectAllSequencesQuery} dependency. 600 * <p>This method returns the {@code 'JOMC Sequences Model - Select All Sequences Query'} object of the {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)} specification.</p> 601 * <p>That specification does not apply to any scope. A new object is returned whenever requested.</p> 602 * @return The {@code SelectAllSequencesQuery} dependency. 603 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 604 */ 605 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 606 private javax.persistence.Query getSelectAllSequencesQuery() 607 { 608 final javax.persistence.Query _d = (javax.persistence.Query) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "SelectAllSequencesQuery" ); 609 assert _d != null : "'SelectAllSequencesQuery' dependency not found."; 610 return _d; 611 } 612 613 /** 614 * Gets the {@code SelectSequenceCountQuery} dependency. 615 * <p>This method returns the {@code 'JOMC Sequences Model - Select Sequence Count Query'} object of the {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)} specification.</p> 616 * <p>That specification does not apply to any scope. A new object is returned whenever requested.</p> 617 * @return The {@code SelectSequenceCountQuery} dependency. 618 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 619 */ 620 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 621 private javax.persistence.Query getSelectSequenceCountQuery() 622 { 623 final javax.persistence.Query _d = (javax.persistence.Query) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "SelectSequenceCountQuery" ); 624 assert _d != null : "'SelectSequenceCountQuery' dependency not found."; 625 return _d; 626 } 627 628 /** 629 * Gets the {@code SelectSequenceDirectoryQuery} dependency. 630 * <p>This method returns the {@code 'JOMC Sequences Model - Select Sequence Directory Query'} object of the {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)} specification.</p> 631 * <p>That specification does not apply to any scope. A new object is returned whenever requested.</p> 632 * @return The {@code SelectSequenceDirectoryQuery} dependency. 633 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 634 */ 635 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 636 private javax.persistence.Query getSelectSequenceDirectoryQuery() 637 { 638 final javax.persistence.Query _d = (javax.persistence.Query) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "SelectSequenceDirectoryQuery" ); 639 assert _d != null : "'SelectSequenceDirectoryQuery' dependency not found."; 640 return _d; 641 } 642 643 /** 644 * Gets the {@code SelectSequenceQuery} dependency. 645 * <p>This method returns the {@code 'JOMC Sequences Model - Select Sequence Query'} object of the {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)} specification.</p> 646 * <p>That specification does not apply to any scope. A new object is returned whenever requested.</p> 647 * @return The {@code SelectSequenceQuery} dependency. 648 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 649 */ 650 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 651 private javax.persistence.Query getSelectSequenceQuery() 652 { 653 final javax.persistence.Query _d = (javax.persistence.Query) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "SelectSequenceQuery" ); 654 assert _d != null : "'SelectSequenceQuery' dependency not found."; 655 return _d; 656 } 657 658 /** 659 * Gets the {@code SelectSequencesQuery} dependency. 660 * <p>This method returns the {@code 'JOMC Sequences Model - Select Sequences Query'} object of the {@code 'javax.persistence.Query'} {@code (javax.persistence.Query)} specification.</p> 661 * <p>That specification does not apply to any scope. A new object is returned whenever requested.</p> 662 * @return The {@code SelectSequencesQuery} dependency. 663 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 664 */ 665 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 666 private javax.persistence.Query getSelectSequencesQuery() 667 { 668 final javax.persistence.Query _d = (javax.persistence.Query) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "SelectSequencesQuery" ); 669 assert _d != null : "'SelectSequencesQuery' dependency not found."; 670 return _d; 671 } 672 673 /** 674 * Gets the {@code SequenceChangeListener} dependency. 675 * <p>This method returns any available object of the {@code 'org.jomc.sequences.SequenceChangeListener'} {@code (org.jomc.sequences.SequenceChangeListener)} specification at specification level 1.0.</p> 676 * <p>That specification does not apply to any scope. A new object is returned whenever requested and bound to this instance.</p> 677 * @return The {@code SequenceChangeListener} dependency. 678 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 679 */ 680 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 681 private org.jomc.sequences.SequenceChangeListener[] getSequenceChangeListener() 682 { 683 final org.jomc.sequences.SequenceChangeListener[] _d = (org.jomc.sequences.SequenceChangeListener[]) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "SequenceChangeListener" ); 684 assert _d != null : "'SequenceChangeListener' dependency not found."; 685 return _d; 686 } 687 688 /** 689 * Gets the {@code SequenceMapper} dependency. 690 * <p>This method returns the {@code 'JOMC Sequences RI'} object of the {@code 'org.jomc.sequences.ri.SequenceMapper'} {@code (org.jomc.sequences.ri.SequenceMapper)} specification at specification level 1.0.</p> 691 * <p>That specification does not apply to any scope. A new object is returned whenever requested and bound to this instance.</p> 692 * @return The {@code SequenceMapper} dependency. 693 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 694 */ 695 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 696 private org.jomc.sequences.ri.SequenceMapper getSequenceMapper() 697 { 698 final org.jomc.sequences.ri.SequenceMapper _d = (org.jomc.sequences.ri.SequenceMapper) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "SequenceMapper" ); 699 assert _d != null : "'SequenceMapper' dependency not found."; 700 return _d; 701 } 702 703 /** 704 * Gets the {@code VetoableSequenceChangeListener} dependency. 705 * <p>This method returns any available object of the {@code 'org.jomc.sequences.VetoableSequenceChangeListener'} {@code (org.jomc.sequences.VetoableSequenceChangeListener)} specification at specification level 1.0.</p> 706 * <p>That specification does not apply to any scope. A new object is returned whenever requested and bound to this instance.</p> 707 * @return The {@code VetoableSequenceChangeListener} dependency. 708 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 709 */ 710 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 711 private org.jomc.sequences.VetoableSequenceChangeListener[] getVetoableSequenceChangeListener() 712 { 713 final org.jomc.sequences.VetoableSequenceChangeListener[] _d = (org.jomc.sequences.VetoableSequenceChangeListener[]) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "VetoableSequenceChangeListener" ); 714 assert _d != null : "'VetoableSequenceChangeListener' dependency not found."; 715 return _d; 716 } 717 // </editor-fold> 718 // SECTION-END 719 // SECTION-START[Properties] 720 // <editor-fold defaultstate="collapsed" desc=" Generated Properties "> 721 722 /** 723 * Gets the value of the {@code defaultSequenceDirectoryCapacityLimit} property. 724 * @return Default capacity limit when creating new sequence directory entities and no default value is provided otherwise. 725 * @throws org.jomc.ObjectManagementException if getting the property instance fails. 726 */ 727 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 728 private java.math.BigInteger getDefaultSequenceDirectoryCapacityLimit() 729 { 730 final java.math.BigInteger _p = (java.math.BigInteger) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getProperty( this, "defaultSequenceDirectoryCapacityLimit" ); 731 assert _p != null : "'defaultSequenceDirectoryCapacityLimit' property not found."; 732 return _p; 733 } 734 735 /** 736 * Gets the value of the {@code sequenceDirectoryName} property. 737 * @return Name uniquely identifying the directory in a set of directories. 738 * @throws org.jomc.ObjectManagementException if getting the property instance fails. 739 */ 740 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 741 private java.lang.String getSequenceDirectoryName() 742 { 743 final java.lang.String _p = (java.lang.String) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getProperty( this, "sequenceDirectoryName" ); 744 assert _p != null : "'sequenceDirectoryName' property not found."; 745 return _p; 746 } 747 748 /** 749 * Gets the value of the {@code sequenceDirectoryNameQueryParameterName} property. 750 * @return Name of a JPA query parameter denoting the name of a sequence directory entity. 751 * @throws org.jomc.ObjectManagementException if getting the property instance fails. 752 */ 753 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 754 private java.lang.String getSequenceDirectoryNameQueryParameterName() 755 { 756 final java.lang.String _p = (java.lang.String) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getProperty( this, "sequenceDirectoryNameQueryParameterName" ); 757 assert _p != null : "'sequenceDirectoryNameQueryParameterName' property not found."; 758 return _p; 759 } 760 761 /** 762 * Gets the value of the {@code sequenceNameQueryParameterName} property. 763 * @return Name of a JPA query parameter denoting the name of a sequence entity. 764 * @throws org.jomc.ObjectManagementException if getting the property instance fails. 765 */ 766 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 767 private java.lang.String getSequenceNameQueryParameterName() 768 { 769 final java.lang.String _p = (java.lang.String) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getProperty( this, "sequenceNameQueryParameterName" ); 770 assert _p != null : "'sequenceNameQueryParameterName' property not found."; 771 return _p; 772 } 773 // </editor-fold> 774 // SECTION-END 775 // SECTION-START[Messages] 776 // <editor-fold defaultstate="collapsed" desc=" Generated Messages "> 777 778 /** 779 * Gets the text of the {@code illegalArgumentMessage} message. 780 * <p><b>Templates</b><br/><table> 781 * <tr><td valign="top">English:</td><td valign="top"><pre>Illegal value ''{1}'' for argument ''{0}''.</pre></td></tr> 782 * <tr><td valign="top">Deutsch:</td><td valign="top"><pre>Ungültiger Wert ''{1}'' für Parameter ''{0}''.</pre></td></tr> 783 * </table></p> 784 * @param locale The locale of the message to return. 785 * @param argumentName Format argument. 786 * @param argumentValue Format argument. 787 * @return The text of the {@code illegalArgumentMessage} message. 788 * 789 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 790 */ 791 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 792 private String getIllegalArgumentMessage( final java.util.Locale locale, final java.lang.String argumentName, final java.lang.String argumentValue ) 793 { 794 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "illegalArgumentMessage", locale, argumentName, argumentValue ); 795 assert _m != null : "'illegalArgumentMessage' message not found."; 796 return _m; 797 } 798 799 /** 800 * Gets the text of the {@code successfullyCreatedSequenceDirectoryMessage} message. 801 * <p><b>Templates</b><br/><table> 802 * <tr><td valign="top">English:</td><td valign="top"><pre>Sequence directory ''{0}'' created.</pre></td></tr> 803 * <tr><td valign="top">Deutsch:</td><td valign="top"><pre>Sequenzverzeichnis ''{0}'' erstellt.</pre></td></tr> 804 * </table></p> 805 * @param locale The locale of the message to return. 806 * @param name Format argument. 807 * @return The text of the {@code successfullyCreatedSequenceDirectoryMessage} message. 808 * 809 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 810 */ 811 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) 812 private String getSuccessfullyCreatedSequenceDirectoryMessage( final java.util.Locale locale, final java.lang.String name ) 813 { 814 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "successfullyCreatedSequenceDirectoryMessage", locale, name ); 815 assert _m != null : "'successfullyCreatedSequenceDirectoryMessage' message not found."; 816 return _m; 817 } 818 // </editor-fold> 819 // SECTION-END 820 }