/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.engine.profile;
Models an individual fetch within a profile.
Author: Steve Ebersole
/**
* Models an individual fetch within a profile.
*
* @author Steve Ebersole
*/
public class Fetch {
private final Association association;
private final Style style;
Constructs a Fetch
Params: - association – The association to be fetched
- style – How to fetch it
/**
* Constructs a Fetch
*
* @param association The association to be fetched
* @param style How to fetch it
*/
public Fetch(Association association, Style style) {
this.association = association;
this.style = style;
}
public Association getAssociation() {
return association;
}
public Style getStyle() {
return style;
}
The type or style of fetch. For the moment we limit this to
join and select, though technically subselect would be valid
here as as well; however, to support subselect here would
require major changes to the subselect loading code (which is
needed for other things as well anyway).
/**
* The type or style of fetch. For the moment we limit this to
* join and select, though technically subselect would be valid
* here as as well; however, to support subselect here would
* require major changes to the subselect loading code (which is
* needed for other things as well anyway).
*/
public enum Style {
Fetch via a join
/**
* Fetch via a join
*/
JOIN( "join" ),
Fetch via a subsequent select
/**
* Fetch via a subsequent select
*/
SELECT( "select" );
private final String name;
private Style(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
Parses a style given an externalized string representation
Params: - name – The externalized representation
Returns: The style; JOIN
is returned if not recognized
/**
* Parses a style given an externalized string representation
*
* @param name The externalized representation
*
* @return The style; {@link #JOIN} is returned if not recognized
*/
public static Style parse(String name) {
if ( SELECT.name.equals( name ) ) {
return SELECT;
}
else {
// the default...
return JOIN;
}
}
}
@Override
public String toString() {
return "Fetch[" + style + "{" + association.getRole() + "}]";
}
}