/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink * 02/08/2012-2.4 Guy Pelletier * - 350487: JPA 2.1 Specification defined support for Stored Procedure Calls * 06/20/2012-2.5 Guy Pelletier * - 350487: JPA 2.1 Specification defined support for Stored Procedure Calls ******************************************************************************/ package org.eclipse.persistence.queries; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Iterator; import org.eclipse.persistence.internal.localization.ExceptionLocalization; /** * <p><b>Purpose</b>: * Concrete class to represent the SQLResultSetMapping structure as defined by * the EJB 3.0 Persistence specification. This class is used by the * ResultSetMappingQuery and is a component of the EclipsepLink Project * * @see org.eclipse.persistence.sessions.Project * @author Gordon Yorke * @since TopLink Java Essentials */ public class SQLResultSetMapping implements Serializable{ /** Stores the name of this SQLResultSetMapping. This name is unique within * The project. */ protected String name; /** Stores the list of SQLResult in the order they were * added to the Mapping */ protected List<SQLResult> results; /** * Defaulting constructor. Will set the name to the result class name * and add an EntityResult for the result class. */ public SQLResultSetMapping(Class resultClass) { this.name = resultClass.getName(); this.addResult(new EntityResult(resultClass)); } public SQLResultSetMapping(String name){ this.name = name; if (this.name == null){ throw new IllegalArgumentException(ExceptionLocalization.buildMessage("null_value_in_sqlresultsetmapping")); } } /** * INTERNAL: * Convert all the class-name-based settings in this SQLResultSetMapping to actual class-based * settings. This method is used when converting a project that has been built * with class names to a project with classes. * @param classLoader */ public void convertClassNamesToClasses(ClassLoader classLoader){ Iterator<SQLResult> iterator = getResults().iterator(); while (iterator.hasNext()){ iterator.next().convertClassNamesToClasses(classLoader); } }; public String getName(){ return this.name; } public void addResult(SQLResult result){ if (result == null){ return; } getResults().add(result); result.setSQLResultMapping(this); } /** * Accessor for the internally stored list of ColumnResult. Calling this * method will result in a collection being created to store the ColumnResult */ public List<SQLResult> getResults(){ if (this.results == null){ this.results = new ArrayList(); } return this.results; } }