org.eclipse.persistence.queries.FieldResult Maven / Gradle / Ivy
Show all versions of eclipselink Show documentation
/*
* Copyright (c) 1998, 2019 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
package org.eclipse.persistence.queries;
import java.io.Serializable;
import org.eclipse.persistence.internal.helper.DatabaseField;
import org.eclipse.persistence.internal.localization.ExceptionLocalization;
import org.eclipse.persistence.sessions.DatabaseRecord;
/**
* Purpose:
* Concrete class to represent the FieldResult structure as defined by
* the EJB 3.0 Persistence specification. This class is a subcomponent of the
* EntityResult.
*
* @see EntityResult
* @author Gordon Yorke
* @since TopLink Java Essentials
*/
public class FieldResult implements Serializable{
/** Stores the name of the bean attribute */
protected String attributeName;
/** Stores passed in field name split on the '.' character */
protected String[] multipleFieldIdentifiers;
/** FieldResult now can contain multiple FieldResults in a collection if an attribute has multiple fields */
java.util.Vector fieldResults;
/** Stores the Columns name from the result set that contains the attribute value */
protected DatabaseField column;
public FieldResult(String attributeName, String columnName){
if (attributeName == null || columnName == null ){
throw new IllegalArgumentException(ExceptionLocalization.buildMessage("null_values_for_field_result"));
}
this.column = new DatabaseField(columnName);
multipleFieldIdentifiers = attributeName.split("\\.",0);
this.attributeName = multipleFieldIdentifiers[0];
}
public FieldResult(String attributeName, DatabaseField column){
if (attributeName == null || column == null || column.getName() == null){
throw new IllegalArgumentException(ExceptionLocalization.buildMessage("null_values_for_field_result"));
}
this.column = column;
multipleFieldIdentifiers = attributeName.split("\\.",0);
this.attributeName = multipleFieldIdentifiers[0];
}
public String getAttributeName(){
return this.attributeName;
}
public DatabaseField getColumn(){
return this.column;
}
/**
* INTERNAL:
* This method is a convenience method for extracting values from Results
*/
public Object getValueFromRecord(DatabaseRecord record){
return record.get(this.column);
}
/**
* INTERNAL:
*/
public java.util.Vector getFieldResults(){
return fieldResults;
}
/**
* INTERNAL:
*/
public String[] getMultipleFieldIdentifiers(){
return multipleFieldIdentifiers;
}
/**
* INTERNAL:
* This method is used to support mapping multiple fields, fields are
* concatenated/added to one fieldResult.
*/
public void add(FieldResult newFieldResult){
if( fieldResults ==null){
fieldResults = new java.util.Vector<>();
fieldResults.add(this);
}
fieldResults.add(newFieldResult);
}
}