| // 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. |
| package org.apache.cloudstack.region; |
| |
| import java.util.List; |
| |
| |
| import org.springframework.stereotype.Component; |
| |
| import com.cloud.utils.db.GenericDaoBase; |
| import com.cloud.utils.db.SearchBuilder; |
| import com.cloud.utils.db.SearchCriteria; |
| |
| @Component |
| public class PortableIpDaoImpl extends GenericDaoBase<PortableIpVO, Long> implements PortableIpDao { |
| |
| private final SearchBuilder<PortableIpVO> listByRegionIDSearch; |
| private final SearchBuilder<PortableIpVO> listByRangeIDSearch; |
| private final SearchBuilder<PortableIpVO> listByRangeIDAndStateSearch; |
| private final SearchBuilder<PortableIpVO> listByRegionIDAndStateSearch; |
| private final SearchBuilder<PortableIpVO> findByIpAddressSearch; |
| |
| public PortableIpDaoImpl() { |
| listByRegionIDSearch = createSearchBuilder(); |
| listByRegionIDSearch.and("regionId", listByRegionIDSearch.entity().getRegionId(), SearchCriteria.Op.EQ); |
| listByRegionIDSearch.done(); |
| |
| listByRangeIDSearch = createSearchBuilder(); |
| listByRangeIDSearch.and("rangeId", listByRangeIDSearch.entity().getRangeId(), SearchCriteria.Op.EQ); |
| listByRangeIDSearch.done(); |
| |
| listByRangeIDAndStateSearch = createSearchBuilder(); |
| listByRangeIDAndStateSearch.and("rangeId", listByRangeIDAndStateSearch.entity().getRangeId(), SearchCriteria.Op.EQ); |
| listByRangeIDAndStateSearch.and("state", listByRangeIDAndStateSearch.entity().getState(), SearchCriteria.Op.EQ); |
| listByRangeIDAndStateSearch.done(); |
| |
| listByRegionIDAndStateSearch = createSearchBuilder(); |
| listByRegionIDAndStateSearch.and("regionId", listByRegionIDAndStateSearch.entity().getRegionId(), SearchCriteria.Op.EQ); |
| listByRegionIDAndStateSearch.and("state", listByRegionIDAndStateSearch.entity().getState(), SearchCriteria.Op.EQ); |
| listByRegionIDAndStateSearch.done(); |
| |
| findByIpAddressSearch = createSearchBuilder(); |
| findByIpAddressSearch.and("address", findByIpAddressSearch.entity().getAddress(), SearchCriteria.Op.EQ); |
| findByIpAddressSearch.done(); |
| } |
| |
| @Override |
| public List<PortableIpVO> listByRegionId(int regionIdId) { |
| SearchCriteria<PortableIpVO> sc = listByRegionIDSearch.create(); |
| sc.setParameters("regionId", regionIdId); |
| return listBy(sc); |
| } |
| |
| @Override |
| public List<PortableIpVO> listByRangeId(long rangeId) { |
| SearchCriteria<PortableIpVO> sc = listByRangeIDSearch.create(); |
| sc.setParameters("rangeId", rangeId); |
| return listBy(sc); |
| } |
| |
| @Override |
| public List<PortableIpVO> listByRangeIdAndState(long rangeId, PortableIp.State state) { |
| SearchCriteria<PortableIpVO> sc = listByRangeIDAndStateSearch.create(); |
| sc.setParameters("rangeId", rangeId); |
| sc.setParameters("state", state); |
| return listBy(sc); |
| } |
| |
| @Override |
| public List<PortableIpVO> listByRegionIdAndState(int regionId, PortableIp.State state) { |
| SearchCriteria<PortableIpVO> sc = listByRegionIDAndStateSearch.create(); |
| sc.setParameters("regionId", regionId); |
| sc.setParameters("state", state); |
| return listBy(sc); |
| } |
| |
| @Override |
| public PortableIpVO findByIpAddress(String ipAddress) { |
| SearchCriteria<PortableIpVO> sc = findByIpAddressSearch.create(); |
| sc.setParameters("address", ipAddress); |
| return findOneBy(sc); |
| } |
| |
| @Override |
| public void unassignIpAddress(long ipAddressId) { |
| PortableIpVO address = createForUpdate(); |
| address.setAllocatedToAccountId(null); |
| address.setAllocatedInDomainId(null); |
| address.setAllocatedTime(null); |
| address.setState(PortableIp.State.Free); |
| address.setAssociatedWithNetworkId(null); |
| address.setAssociatedDataCenterId(null); |
| address.setAssociatedWithVpcId(null); |
| address.setPhysicalNetworkId(null); |
| update(ipAddressId, address); |
| } |
| } |