blob: 83d88f7dc5c1aee8536fb3594ef71a3c59f09d2e [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// 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.
*/
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;
}
}