/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.jdbc.metadata.impl; import org.teiid.designer.jdbc.data.Request; /** * ResultsContainer * * @since 8.0 */ public class RequestContainer { private final Request[] requests; private String[] requestNames; /** * Construct an instance of ResultsContainer. */ public RequestContainer( final Request[] requests ) { super(); this.requests = (requests != null ? requests : new Request[] {}); } public synchronized String[] getNamesOfResults() { if (requestNames == null) { final String[] names = new String[requests.length]; for (int i = 0; i < requests.length; ++i) { final Request request = requests[i]; names[i] = request.getName(); } requestNames = names; } return requestNames; } /** * Returns a {@link Request} with the supplied name. If the request has not yet been invoked, this method * {@link Request#invoke() invokes} the request. * * @param name the name of the request * @return the Request, or null if there is no Request with that name ( see {@link #getNamesOfResults()}). */ public Request getRequest( final String name ) { return getRequest(name, true); } /** * Returns a {@link Request} with the supplied name. If the request has not yet been invoked, this method * {@link Request#invoke() invokes} the request. * * @param name the name of the request * @return the Request, or null if there is no Request with that name ( see {@link #getNamesOfResults()}). */ public Request getRequest( final String name, final boolean includeMetadata ) { for (int i = 0; i < requests.length; ++i) { final Request request = requests[i]; if (request.getName().equals(name)) { // If the request doesn't have results or errors, then invoke the request if (!request.hasResults() && !request.hasProblems()) { request.setMetadataRequested(includeMetadata); request.invoke(); } return request; } } return null; } }