/** * OpenSpotLight - Open Source IT Governance Platform * * Copyright (c) 2009, CARAVELATECH CONSULTORIA E TECNOLOGIA EM INFORMATICA LTDA * 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 CARAVELATECH CONSULTORIA E * TECNOLOGIA EM INFORMATICA LTDA. * * 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 * *********************************************************************** * OpenSpotLight - Plataforma de Governança de TI de Código Aberto * * Direitos Autorais Reservados (c) 2009, CARAVELATECH CONSULTORIA E TECNOLOGIA * EM INFORMATICA LTDA ou como contribuidores terceiros indicados pela etiqueta * @author ou por expressa atribuição de direito autoral declarada e atribuída pelo autor. * Todas as contribuições de terceiros estão distribuídas sob licença da * CARAVELATECH CONSULTORIA E TECNOLOGIA EM INFORMATICA LTDA. * * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os * termos da Licença Pública Geral Menor do GNU conforme publicada pela Free Software * Foundation. * * Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA * GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA * FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor do GNU para mais detalhes. * * Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto com este * programa; se não, escreva para: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.openspotlight.graph.query; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.openspotlight.graph.Node; import org.openspotlight.graph.exception.MetaNodeTypeNotFoundException; import org.openspotlight.graph.metadata.MetaNodeType; import org.openspotlight.graph.metadata.Metadata; import org.openspotlight.graph.query.info.SelectInfo; import org.openspotlight.graph.query.info.SelectStatementInfo; import org.openspotlight.storage.domain.StorageNode; /** * The Class SLQuerySupport. * * @author Vitor Hugo Chagas */ public class QuerySupport { /** * Gets the hierarchy type names. * * @param metadata the metadata * @param typeName the type name * @param subTypes the sub types * @return the hierarchy type names */ static List<String> getHierarchyTypeNames(final Metadata metadata, final String typeName, final boolean subTypes) throws MetaNodeTypeNotFoundException { final List<String> types = new ArrayList<String>(); types.add(typeName); if (subTypes) { final MetaNodeType type = metadata.getMetaNodeType(typeName); throw new UnsupportedOperationException(); //FIXME // for (final MetaNodeType currentType : type.getSubMetaNodeTypes()) { // types.add(currentType.getTypeName()); // } } return types; } /** * Gets the node i ds. * * @param nodes the nodes * @return the node i ds */ static String[] getNodeIDs(final Collection<Node> nodes) { if (nodes == null) { return null; } int count = 0; final String[] ids = new String[nodes.size()]; for (final Node node: nodes) { ids[count++] = node.getId(); } return ids; } /** * Gets the select info. * * @param select the select * @return the select info */ static SelectInfo getSelectInfo(final Select select) { final SelectInfoGetter getter = (SelectInfoGetter) select; return getter.getSelectInfo(); } /** * Gets the select statement info. * * @param select the select * @return the select statement info */ static SelectStatementInfo getSelectStatementInfo(final Select select) { final SelectStatementInfoGetter getter = (SelectStatementInfoGetter) select; return getter.getSelectStatementInfo(); } /** * Map nodes by type. * * @param selectNodeWrappers the select node wrappers * @return the map< string, list * < p node wrapper> * > * @throws SLPersistentTreeSessionException the SL persistent tree session exception */ static Map<String, List<StorageNode>> mapNodesByType(final Collection<StorageNode> selectNodeWrappers) { final Map<String, List<StorageNode>> nodeWrapperListMap = new HashMap<String, List<StorageNode>>(); for (final StorageNode pNodeWrapper: selectNodeWrappers) { final String typeName = pNodeWrapper.getType(); List<StorageNode> typeNodes = nodeWrapperListMap.get(typeName); if (typeNodes == null) { typeNodes = new ArrayList<StorageNode>(); nodeWrapperListMap.put(typeName, typeNodes); } typeNodes.add(pNodeWrapper); } return nodeWrapperListMap; } }