/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ #include "apache/das/rdb/RelationshipWrapper.h" namespace apache { namespace das { namespace rdb { RelationshipWrapper::RelationshipWrapper(void) {} RelationshipWrapper::~RelationshipWrapper(void) { std::list*>::iterator it; for (it = relationshipLists.begin() ; it != relationshipLists.end() ; it++) { delete *it; } } std::list& RelationshipWrapper::getRelationshipsByTableName( const std::map& relationships, std::string tableName, bool pkTable) { std::list* relationshipList = new std::list(); std::map::const_iterator it; for (it = relationships.begin() ; it != relationships.end() ; it++) { if (pkTable) { if (it->second->getPKTableName() == tableName) { relationshipList->push_back(it->second); } } else { if (it->second->getFKTableName() == tableName) { relationshipList->push_back(it->second); } } } relationshipLists.push_back(relationshipList); return *relationshipList; } std::list& RelationshipWrapper::getRelationshipsByTableName(const std::list< Relationship*>& relationships, std::string tableName, bool pkTable) { std::list* relationshipList = new std::list(); std::list::const_iterator it; for (it = relationships.begin() ; it != relationships.end() ; it++) { if (pkTable) { if ((*it)->getPKTableName() == tableName) { relationshipList->push_back(*it); } } else { if ((*it)->getFKTableName() == tableName) { relationshipList->push_back(*it); } } } relationshipLists.push_back(relationshipList); return *relationshipList; } void RelationshipWrapper::free(std::list& relationshipList) { std::list*>::iterator it; for (it = relationshipLists.begin() ; it != relationshipLists.end() ; it++) { if (*it == &relationshipList) { delete *it; relationshipLists.erase(it); return; } } } }; }; };