001// license-header java merge-point 002// 003// Attention: Generated code! Do not modify by hand! 004// Generated by: hibernate/SpringHibernateDaoBase.vsl in <project>/mda/src/main/cartridge/custom/... 005// 006package fr.ifremer.adagio.core.dao.referential.grouping; 007 008/* 009 * #%L 010 * SIH-Adagio :: Core 011 * $Id:$ 012 * $HeadURL:$ 013 * %% 014 * Copyright (C) 2012 - 2014 Ifremer 015 * %% 016 * This program is free software: you can redistribute it and/or modify 017 * it under the terms of the GNU Affero General Public License as published by 018 * the Free Software Foundation, either version 3 of the License, or 019 * (at your option) any later version. 020 * 021 * This program is distributed in the hope that it will be useful, 022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 024 * GNU General Public License for more details. 025 * 026 * You should have received a copy of the GNU Affero General Public License 027 * along with this program. If not, see <http://www.gnu.org/licenses/>. 028 * #L% 029 */ 030 031import fr.ifremer.adagio.core.dao.PrincipalStore; 032import fr.ifremer.adagio.core.dao.PropertySearch; 033import fr.ifremer.adagio.core.dao.Search; 034import fr.ifremer.adagio.core.dao.technical.hibernate.HibernateDaoSupport; 035import java.security.Principal; 036import java.util.Collection; 037import java.util.LinkedHashSet; 038import java.util.List; 039import java.util.Set; 040import javax.annotation.Resource; 041import org.andromda.spring.PaginationResult; 042import org.apache.commons.collections.CollectionUtils; 043import org.apache.commons.collections.Transformer; 044import org.hibernate.Criteria; 045import org.hibernate.HibernateException; 046import org.hibernate.Query; 047import org.hibernate.ScrollableResults; 048 049/** 050 * <p> 051 * Base Spring DAO Class: is able to create, update, remove, load, and find 052 * objects of type <code>GroupingItem</code>. 053 * </p> 054 * 055 * @see GroupingItem 056 */ 057public abstract class GroupingItemDaoBase 058 extends HibernateDaoSupport 059 implements GroupingItemDao 060{ 061 /** 062 * {@inheritDoc} 063 */ 064 @Override 065 public Object get(final int transform, final Integer id) 066 { 067 if (id == null) 068 { 069 throw new IllegalArgumentException( 070 "GroupingItem.get - 'id' can not be null"); 071 } 072 final GroupingItem entity = get(GroupingItemImpl.class, id); 073 return transformEntity(transform, entity); 074 } 075 /** 076 * {@inheritDoc} 077 */ 078 @Override 079 public GroupingItem get(Integer id) 080 { 081 return (GroupingItem)this.get(TRANSFORM_NONE, id); 082 } 083 084 /** 085 * {@inheritDoc} 086 */ 087 @Override 088 public Object load(final int transform, final Integer id) 089 { 090 if (id == null) 091 { 092 throw new IllegalArgumentException( 093 "GroupingItem.load - 'id' can not be null"); 094 } 095 final GroupingItem entity = get(GroupingItemImpl.class, id); 096 return transformEntity(transform, entity); 097 } 098 099 /** 100 * {@inheritDoc} 101 */ 102 @Override 103 public GroupingItem load(Integer id) 104 { 105 return (GroupingItem)this.load(TRANSFORM_NONE, id); 106 } 107 108 /** 109 * {@inheritDoc} 110 */ 111 @Override 112 @SuppressWarnings({"unchecked"}) 113 public Collection<GroupingItem> loadAll() 114 { 115 return (Collection<GroupingItem>) this.loadAll(GroupingItemDao.TRANSFORM_NONE); 116 } 117 118 /** 119 * {@inheritDoc} 120 */ 121 @Override 122 public Collection<?> loadAll(final int transform) 123 { 124 return this.loadAll(transform, -1, -1); 125 } 126 127 /** 128 * {@inheritDoc} 129 */ 130 @Override 131 public Collection<?> loadAll(final int pageNumber, final int pageSize) 132 { 133 return this.loadAll(GroupingItemDao.TRANSFORM_NONE, pageNumber, pageSize); 134 } 135 136 /** 137 * {@inheritDoc} 138 */ 139 @Override 140 public Collection<?> loadAll(final int transform, final int pageNumber, final int pageSize) 141 { 142 try 143 { 144 final Criteria criteria = this.getSession().createCriteria(GroupingItemImpl.class); 145 if (pageNumber > 0 && pageSize > 0) 146 { 147 criteria.setFirstResult(this.calculateFirstResult(pageNumber, pageSize)); 148 criteria.setMaxResults(pageSize); 149 } 150 final Collection<?> results = criteria.list(); 151 this.transformEntities(transform, results); 152 return results; 153 } 154 catch (HibernateException ex) 155 { 156 throw ex; 157 } 158 } 159 160 /** 161 * firstResult = (pageNumber - 1) * pageSize 162 * @param pageNumber 163 * @param pageSize 164 * @return firstResult 165 */ 166 protected int calculateFirstResult(int pageNumber, int pageSize) 167 { 168 int firstResult = 0; 169 if (pageNumber > 0) 170 { 171 firstResult = (pageNumber - 1) * pageSize; 172 } 173 return firstResult; 174 } 175 176 /** 177 * {@inheritDoc} 178 */ 179 @Override 180 public GroupingItem create(GroupingItem groupingItem) 181 { 182 return (GroupingItem)this.create(GroupingItemDao.TRANSFORM_NONE, groupingItem); 183 } 184 185 /** 186 * {@inheritDoc} 187 */ 188 @Override 189 public Object create(final int transform, final GroupingItem groupingItem) 190 { 191 if (groupingItem == null) 192 { 193 throw new IllegalArgumentException( 194 "GroupingItem.create - 'groupingItem' can not be null"); 195 } 196 this.getSessionFactory().getCurrentSession().save(groupingItem); 197 return this.transformEntity(transform, groupingItem); 198 } 199 200 /** 201 * {@inheritDoc} 202 */ 203 @Override 204 @SuppressWarnings({"unchecked"}) 205 public Collection<GroupingItem> create(final Collection<GroupingItem> entities) 206 { 207 return (Collection<GroupingItem>) create(GroupingItemDao.TRANSFORM_NONE, entities); 208 } 209 210 /** 211 * {@inheritDoc} 212 */ 213 @Override 214 public Collection<?> create(final int transform, final Collection<GroupingItem> entities) 215 { 216 if (entities == null) 217 { 218 throw new IllegalArgumentException( 219 "GroupingItem.create - 'entities' can not be null"); 220 } 221 for (GroupingItem entity : entities) 222 { 223 create(transform, entity); 224 } 225 return entities; 226 } 227 228 /** 229 * {@inheritDoc} 230 */ 231 @Override 232 public GroupingItem create( 233 Integer objectId, 234 String objectCode, 235 String comments) 236 { 237 return (GroupingItem)this.create(GroupingItemDao.TRANSFORM_NONE, objectId, objectCode, comments); 238 } 239 240 /** 241 * {@inheritDoc} 242 */ 243 @Override 244 public Object create( 245 final int transform, 246 Integer objectId, 247 String objectCode, 248 String comments) 249 { 250 GroupingItem entity = new GroupingItemImpl(); 251 entity.setObjectId(objectId); 252 entity.setObjectCode(objectCode); 253 entity.setComments(comments); 254 return this.create(transform, entity); 255 } 256 257 /** 258 * {@inheritDoc} 259 */ 260 @Override 261 public GroupingItem create( 262 Grouping grouping) 263 { 264 return (GroupingItem)this.create(GroupingItemDao.TRANSFORM_NONE, grouping); 265 } 266 267 /** 268 * {@inheritDoc} 269 */ 270 @Override 271 public Object create( 272 final int transform, 273 Grouping grouping) 274 { 275 GroupingItem entity = new GroupingItemImpl(); 276 entity.setGrouping(grouping); 277 return this.create(transform, entity); 278 } 279 280 /** 281 * {@inheritDoc} 282 */ 283 @Override 284 public void update(GroupingItem groupingItem) 285 { 286 if (groupingItem == null) 287 { 288 throw new IllegalArgumentException( 289 "GroupingItem.update - 'groupingItem' can not be null"); 290 } 291 this.getSessionFactory().getCurrentSession().update(groupingItem); 292 } 293 294 /** 295 * {@inheritDoc} 296 */ 297 @Override 298 public void update(final Collection<GroupingItem> entities) 299 { 300 if (entities == null) 301 { 302 throw new IllegalArgumentException( 303 "GroupingItem.update - 'entities' can not be null"); 304 } 305 for (GroupingItem entity : entities) 306 { 307 update(entity); 308 } 309 } 310 311 /** 312 * {@inheritDoc} 313 */ 314 @Override 315 public void remove(GroupingItem groupingItem) 316 { 317 if (groupingItem == null) 318 { 319 throw new IllegalArgumentException( 320 "GroupingItem.remove - 'groupingItem' can not be null"); 321 } 322 this.getSessionFactory().getCurrentSession().delete(groupingItem); 323 } 324 325 /** 326 * {@inheritDoc} 327 */ 328 @Override 329 public void remove(Integer id) 330 { 331 if (id == null) 332 { 333 throw new IllegalArgumentException( 334 "GroupingItem.remove - 'id' can not be null"); 335 } 336 GroupingItem entity = this.get(id); 337 if (entity != null) 338 { 339 this.remove(entity); 340 } 341 } 342 343 /** 344 * {@inheritDoc} 345 */ 346 @Override 347 public void remove(Collection<GroupingItem> entities) 348 { 349 if (entities == null) 350 { 351 throw new IllegalArgumentException( 352 "GroupingItem.remove - 'entities' can not be null"); 353 } 354 deleteAll(entities); 355 } 356 /** 357 * Allows transformation of entities into value objects 358 * (or something else for that matter), when the <code>transform</code> 359 * flag is set to one of the constants defined in <code>GroupingItemDao</code>, please note 360 * that the {@link #TRANSFORM_NONE} constant denotes no transformation, so the entity itself 361 * will be returned. 362 * 363 * If the integer argument value is unknown {@link #TRANSFORM_NONE} is assumed. 364 * 365 * @param transform one of the constants declared in {@link GroupingItemDao} 366 * @param entity an entity that was found 367 * @return the transformed entity (i.e. new value object, etc) 368 * @see GroupingItemDao#transformEntity(int, GroupingItem) 369 */ 370 public Object transformEntity(final int transform, final GroupingItem entity) 371 { 372 Object target = null; 373 if (entity != null) 374 { 375 switch (transform) 376 { 377 case GroupingItemDao.TRANSFORM_NONE : // fall-through 378 default: 379 target = entity; 380 } 381 } 382 return target; 383 } 384 385 /** 386 * {@inheritDoc} 387 */ 388 @Override 389 public void transformEntities(final int transform, final Collection<?> entities) 390 { 391 switch (transform) 392 { 393 case GroupingItemDao.TRANSFORM_NONE : // fall-through 394 default: 395 // do nothing; 396 } 397 } 398 399 /** 400 * @see GroupingItemDao#toEntities(Collection) 401 */ 402 public void toEntities(final Collection<?> results) 403 { 404 if (results != null) 405 { 406 CollectionUtils.transform(results, this.ENTITYTRANSFORMER); 407 } 408 } 409 410 /** 411 * This anonymous transformer is designed to transform report query results 412 * (which result in an array of entities) to {@link GroupingItem} 413 * using the Jakarta Commons-Collections Transformation API. 414 */ 415 private Transformer ENTITYTRANSFORMER = 416 new Transformer() 417 { 418 public Object transform(Object input) 419 { 420 Object result = null; 421 if (input instanceof Object[]) 422 { 423 result = toEntity((Object[])input); 424 } 425 else if (input instanceof GroupingItem) 426 { 427 result = input; 428 } 429 return result; 430 } 431 }; 432 433 /** 434 * @param row 435 * @return GroupingItem 436 */ 437 protected GroupingItem toEntity(Object[] row) 438 { 439 GroupingItem target = null; 440 if (row != null) 441 { 442 final int numberOfObjects = row.length; 443 for (int ctr = 0; ctr < numberOfObjects; ctr++) 444 { 445 final Object object = row[ctr]; 446 if (object instanceof GroupingItem) 447 { 448 target = (GroupingItem)object; 449 break; 450 } 451 } 452 } 453 return target; 454 } 455 456 /** 457 * Gets the current <code>principal</code> if one has been set, 458 * otherwise returns <code>null</code>. 459 * 460 * @return the current principal 461 */ 462 protected Principal getPrincipal() 463 { 464 return PrincipalStore.get(); 465 } 466 467 /** 468 * {@inheritDoc} 469 */ 470 @Override 471 @SuppressWarnings({ "unchecked" }) 472 public PaginationResult search(final int transform, final int pageNumber, final int pageSize, final Search search) 473 { 474 try 475 { 476 search.setPageNumber(pageNumber); 477 search.setPageSize(pageSize); 478 final PropertySearch propertySearch = new PropertySearch( 479 this.getSession(), GroupingItemImpl.class, search); 480 final List results = propertySearch.executeAsList(); 481 this.transformEntities(transform, results); 482 return new PaginationResult(results.toArray(new Object[results.size()]), propertySearch.getTotalCount()); 483 } 484 catch (HibernateException ex) 485 { 486 throw ex; /*super.convertHibernateAccessException(ex);*/ 487 } 488 } 489 490 /** 491 * {@inheritDoc} 492 */ 493 @Override 494 public PaginationResult search(final int pageNumber, final int pageSize, final Search search) 495 { 496 return this.search(GroupingItemDao.TRANSFORM_NONE, pageNumber, pageSize, search); 497 } 498 499 /** 500 * {@inheritDoc} 501 */ 502 @Override 503 public Set<?> search(final int transform, final Search search) 504 { 505 try 506 { 507 final PropertySearch propertySearch = new PropertySearch( 508 this.getSession(), GroupingItemImpl.class, search); 509 final Set<?> results = propertySearch.executeAsSet(); 510 this.transformEntities(transform, results); 511 return results; 512 } 513 catch (HibernateException ex) 514 { 515 throw ex; /*super.convertHibernateAccessException(ex);*/ 516 } 517 } 518 519 /** 520 * {@inheritDoc} 521 */ 522 @Override 523 @SuppressWarnings("unchecked") 524 public Set<GroupingItem> search(final Search search) 525 { 526 return (Set<GroupingItem>) this.search(GroupingItemDao.TRANSFORM_NONE, search); 527 } 528 529 /** 530 * Executes and returns the given Hibernate queryObject as a {@link PaginationResult} instance. 531 * @param queryObject 532 * @param transform 533 * @param pageNumber 534 * @param pageSize 535 * @return PaginationResult 536 */ 537 @SuppressWarnings({ "unchecked" }) 538 protected PaginationResult getPaginationResult( 539 final Query queryObject, 540 final int transform, int pageNumber, int pageSize) 541 { 542 try 543 { 544 final ScrollableResults scrollableResults = queryObject.scroll(); 545 scrollableResults.last(); 546 int totalCount = scrollableResults.getRowNumber(); 547 totalCount = totalCount >= 0 ? totalCount + 1 : 0; 548 if (pageNumber > 0 && pageSize > 0) 549 { 550 queryObject.setFirstResult(this.calculateFirstResult(pageNumber, pageSize)); 551 queryObject.setMaxResults(pageSize); 552 } 553 // Unchecked transformation because Set object is reused, cannot be strongly typed. 554 Set results = new LinkedHashSet(queryObject.list()); 555 transformEntities(transform, results); 556 return new PaginationResult(results.toArray(new Object[results.size()]), totalCount); 557 } 558 catch (HibernateException ex) 559 { 560 throw ex; /*super.convertHibernateAccessException(ex);*/ 561 } 562 } 563 564 // spring-hibernate-dao-base merge-point 565}