001/******************************************************************************* 002 * Copyright 2014 The MITRE Corporation 003 * and the MIT Kerberos and Internet Trust Consortium 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 ******************************************************************************/ 017package org.mitre.util.jpa; 018 019import java.util.List; 020 021import javax.persistence.EntityManager; 022 023/** 024 * @author mfranklin 025 * Date: 4/28/11 026 * Time: 2:13 PM 027 */ 028public class JpaUtil { 029 public static <T> T getSingleResult(List<T> list) { 030 switch(list.size()) { 031 case 0: 032 return null; 033 case 1: 034 return list.get(0); 035 default: 036 throw new IllegalStateException("Expected single result, got " + list.size()); 037 } 038 } 039 040 public static <T, I> T saveOrUpdate(I id, EntityManager entityManager, T entity) { 041 if (id == null) { 042 entityManager.persist(entity); 043 entityManager.flush(); 044 return entity; 045 } else { 046 T tmp = entityManager.merge(entity); 047 entityManager.flush(); 048 return tmp; 049 } 050 } 051}