blob: 29471f9637a8ee311d36ee35c13a254de91336d7 [file] [log] [blame]
// 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 com.cloud.storage.dao;
import java.util.Date;
import org.springframework.stereotype.Component;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.storage.GuestOSHypervisorVO;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
@Component
public class GuestOSHypervisorDaoImpl extends GenericDaoBase<GuestOSHypervisorVO, Long> implements GuestOSHypervisorDao {
protected final SearchBuilder<GuestOSHypervisorVO> guestOsSearch;
protected final SearchBuilder<GuestOSHypervisorVO> mappingSearch;
protected final SearchBuilder<GuestOSHypervisorVO> userDefinedMappingSearch;
protected GuestOSHypervisorDaoImpl() {
guestOsSearch = createSearchBuilder();
guestOsSearch.and("guest_os_id", guestOsSearch.entity().getGuestOsId(), SearchCriteria.Op.EQ);
guestOsSearch.done();
mappingSearch = createSearchBuilder();
mappingSearch.and("guest_os_id", mappingSearch.entity().getGuestOsId(), SearchCriteria.Op.EQ);
mappingSearch.and("hypervisor_type", mappingSearch.entity().getHypervisorType(), SearchCriteria.Op.EQ);
mappingSearch.and("hypervisor_version", mappingSearch.entity().getHypervisorVersion(), SearchCriteria.Op.EQ);
mappingSearch.done();
userDefinedMappingSearch = createSearchBuilder();
userDefinedMappingSearch.and("guest_os_id", userDefinedMappingSearch.entity().getGuestOsId(), SearchCriteria.Op.EQ);
userDefinedMappingSearch.and("hypervisor_type", userDefinedMappingSearch.entity().getHypervisorType(), SearchCriteria.Op.EQ);
userDefinedMappingSearch.and("hypervisor_version", userDefinedMappingSearch.entity().getHypervisorVersion(), SearchCriteria.Op.EQ);
userDefinedMappingSearch.and("is_user_defined", userDefinedMappingSearch.entity().getIsUserDefined(), SearchCriteria.Op.EQ);
userDefinedMappingSearch.done();
}
@Override
public HypervisorType findHypervisorTypeByGuestOsId(long guestOsId) {
SearchCriteria<GuestOSHypervisorVO> sc = guestOsSearch.create();
sc.setParameters("guest_os_id", guestOsId);
GuestOSHypervisorVO goh = findOneBy(sc);
return HypervisorType.getType(goh.getHypervisorType());
}
@Override
public GuestOSHypervisorVO findByOsIdAndHypervisor(long guestOsId, String hypervisorType, String hypervisorVersion) {
SearchCriteria<GuestOSHypervisorVO> sc = mappingSearch.create();
String version = "default";
if (!(hypervisorVersion == null || hypervisorVersion.isEmpty())) {
version = hypervisorVersion;
}
sc.setParameters("guest_os_id", guestOsId);
sc.setParameters("hypervisor_type", hypervisorType);
sc.setParameters("hypervisor_version", version);
return findOneBy(sc);
}
@Override
public GuestOSHypervisorVO findByOsIdAndHypervisorAndUserDefined(long guestOsId, String hypervisorType, String hypervisorVersion, boolean isUserDefined) {
SearchCriteria<GuestOSHypervisorVO> sc = userDefinedMappingSearch.create();
String version = "default";
if (!(hypervisorVersion == null || hypervisorVersion.isEmpty())) {
version = hypervisorVersion;
}
sc.setParameters("guest_os_id", guestOsId);
sc.setParameters("hypervisor_type", hypervisorType);
sc.setParameters("hypervisor_version", version);
sc.setParameters("is_user_defined", isUserDefined);
return findOneBy(sc);
}
@Override
public boolean removeGuestOsMapping(Long id) {
GuestOSHypervisorVO guestOsHypervisor = findById(id);
createForUpdate(id);
guestOsHypervisor.setRemoved(new Date());
update(id, guestOsHypervisor);
return super.remove(id);
}
}