From b60eef3e822b3f176e449b150594ae7a76bc306f Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Sat, 28 Sep 2013 07:52:50 -0700 Subject: [PATCH] Added comments and finished off the work --- .../cloud/agent/manager/AgentManagerImpl.java | 7 +- .../dc/dao/StorageNetworkIpRangeDaoImpl.java | 13 +- .../cloud/event/dao/UsageEventDaoImpl.java | 2 +- .../src/com/cloud/host/dao/HostDaoImpl.java | 255 ++++++++++-------- .../com/cloud/user/AccountDetailsDaoImpl.java | 7 +- .../db/TemplatePrimaryDataStoreDaoImpl.java | 18 +- .../cloud/utils/db/GenericQueryBuilder.java | 74 +---- .../cloud/utils/db/GenericSearchBuilder.java | 226 +++++----------- .../db/src/com/cloud/utils/db/GroupBy.java | 2 +- .../db/src/com/cloud/utils/db/SearchBase.java | 213 ++++++++++++++- .../com/cloud/utils/db/SearchCriteria.java | 83 ++---- .../BareMetalPingServiceImpl.java | 7 +- .../BaremetalDhcpManagerImpl.java | 18 +- .../BaremetalKickStartServiceImpl.java | 6 +- .../networkservice/BaremetalPxeElement.java | 12 +- .../BaremetalPxeManagerImpl.java | 8 +- .../com/cloud/ucs/manager/UcsManagerImpl.java | 20 +- .../xen/discoverer/XcpServerDiscoverer.java | 52 ++-- .../query/dao/DiskOfferingJoinDaoImpl.java | 25 +- .../consoleproxy/ConsoleProxyManagerImpl.java | 5 +- .../network/StorageNetworkManagerImpl.java | 12 +- .../com/cloud/storage/OCFS2ManagerImpl.java | 10 +- 22 files changed, 555 insertions(+), 520 deletions(-) diff --git a/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java index 9c187535794..51f6d72109e 100755 --- a/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -97,9 +97,8 @@ import com.cloud.utils.component.ManagerBase; import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.db.DB; import com.cloud.utils.db.EntityManager; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.HypervisorVersionChangedException; @@ -1448,7 +1447,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl try { List behindAgents = findAgentsBehindOnPing(); for (Long agentId : behindAgents) { - GenericQueryBuilder sc = GenericQueryBuilder.create(HostVO.class); + QueryBuilder sc = QueryBuilder.create(HostVO.class); sc.and(sc.entity().getId(), Op.EQ, agentId); HostVO h = sc.find(); if (h != null) { @@ -1470,7 +1469,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl } } - GenericQueryBuilder sc = GenericQueryBuilder.create(HostVO.class); + QueryBuilder sc = QueryBuilder.create(HostVO.class); sc.and(sc.entity().getResourceState(), Op.IN, ResourceState.PrepareForMaintenance, ResourceState.ErrorInMaintenance); List hosts = sc.list(); diff --git a/engine/schema/src/com/cloud/dc/dao/StorageNetworkIpRangeDaoImpl.java b/engine/schema/src/com/cloud/dc/dao/StorageNetworkIpRangeDaoImpl.java index f57acce1080..e1605d56334 100755 --- a/engine/schema/src/com/cloud/dc/dao/StorageNetworkIpRangeDaoImpl.java +++ b/engine/schema/src/com/cloud/dc/dao/StorageNetworkIpRangeDaoImpl.java @@ -17,22 +17,17 @@ package com.cloud.dc.dao; import java.util.List; -import java.util.Map; import javax.ejb.Local; -import javax.naming.ConfigurationException; import org.springframework.stereotype.Component; import com.cloud.dc.StorageNetworkIpRangeVO; import com.cloud.utils.db.DB; -import com.cloud.utils.db.Filter; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.GenericSearchBuilder; -import com.cloud.utils.db.SearchBuilder; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.SearchCriteria.Func; import com.cloud.utils.db.SearchCriteria.Op; @@ -50,21 +45,21 @@ public class StorageNetworkIpRangeDaoImpl extends GenericDaoBase listByPodId(long podId) { - GenericQueryBuilder sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class); + QueryBuilder sc = QueryBuilder.create(StorageNetworkIpRangeVO.class); sc.and(sc.entity().getPodId(), Op.EQ, podId); return sc.list(); } @Override public List listByRangeId(long rangeId) { - GenericQueryBuilder sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class); + QueryBuilder sc = QueryBuilder.create(StorageNetworkIpRangeVO.class); sc.and(sc.entity().getId(), Op.EQ, rangeId); return sc.list(); } @Override public List listByDataCenterId(long dcId) { - GenericQueryBuilder sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class); + QueryBuilder sc = QueryBuilder.create(StorageNetworkIpRangeVO.class); sc.and(sc.entity().getDataCenterId(), Op.EQ, dcId); return sc.list(); } diff --git a/engine/schema/src/com/cloud/event/dao/UsageEventDaoImpl.java b/engine/schema/src/com/cloud/event/dao/UsageEventDaoImpl.java index cda02efe6bf..4f05bbe8fcd 100644 --- a/engine/schema/src/com/cloud/event/dao/UsageEventDaoImpl.java +++ b/engine/schema/src/com/cloud/event/dao/UsageEventDaoImpl.java @@ -66,7 +66,7 @@ public class UsageEventDaoImpl extends GenericDaoBase implem IpeventsSearch.and("networktype", IpeventsSearch.entity().getResourceType(), SearchCriteria.Op.EQ); IpeventsSearch.and().op("assignEvent", IpeventsSearch.entity().getType(), SearchCriteria.Op.EQ); IpeventsSearch.or("releaseEvent", IpeventsSearch.entity().getType(), SearchCriteria.Op.EQ); - IpeventsSearch.closeParen(); + IpeventsSearch.cp(); IpeventsSearch.done(); } diff --git a/engine/schema/src/com/cloud/host/dao/HostDaoImpl.java b/engine/schema/src/com/cloud/host/dao/HostDaoImpl.java index d0d3a5c394b..47168102a56 100755 --- a/engine/schema/src/com/cloud/host/dao/HostDaoImpl.java +++ b/engine/schema/src/com/cloud/host/dao/HostDaoImpl.java @@ -64,7 +64,7 @@ import com.cloud.utils.db.UpdateBuilder; import com.cloud.utils.exception.CloudRuntimeException; @Component -@Local(value = { HostDao.class }) +@Local(value = {HostDao.class}) @DB(txn = false) @TableGenerator(name = "host_req_sq", table = "op_host", pkColumnName = "id", valueColumnName = "sequence", allocationSize = 1) public class HostDaoImpl extends GenericDaoBase implements HostDao { //FIXME: , ExternalIdDao { @@ -123,13 +123,17 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao protected Attribute _msIdAttr; protected Attribute _pingTimeAttr; - @Inject protected HostDetailsDao _detailsDao; - @Inject protected HostTagsDao _hostTagsDao; - @Inject protected HostTransferMapDao _hostTransferDao; - @Inject protected ClusterDao _clusterDao; + @Inject + protected HostDetailsDao _detailsDao; + @Inject + protected HostTagsDao _hostTagsDao; + @Inject + protected HostTransferMapDao _hostTransferDao; + @Inject + protected ClusterDao _clusterDao; public HostDaoImpl() { - super(); + super(); } @PostConstruct @@ -271,18 +275,19 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao * SearchCriteria.Op.LTEQ); UnmanagedDirectConnectSearch.cp(); UnmanagedDirectConnectSearch.cp(); */ try { - HostTransferSearch = _hostTransferDao.createSearchBuilder(); + HostTransferSearch = _hostTransferDao.createSearchBuilder(); } catch (Throwable e) { - s_logger.debug("error", e); + s_logger.debug("error", e); } HostTransferSearch.and("id", HostTransferSearch.entity().getId(), SearchCriteria.Op.NULL); - UnmanagedDirectConnectSearch.join("hostTransferSearch", HostTransferSearch, HostTransferSearch.entity().getId(), UnmanagedDirectConnectSearch.entity().getId(), JoinType.LEFTOUTER); + UnmanagedDirectConnectSearch.join("hostTransferSearch", HostTransferSearch, HostTransferSearch.entity().getId(), UnmanagedDirectConnectSearch.entity().getId(), + JoinType.LEFTOUTER); ClusterManagedSearch = _clusterDao.createSearchBuilder(); ClusterManagedSearch.and("managed", ClusterManagedSearch.entity().getManagedState(), SearchCriteria.Op.EQ); - UnmanagedDirectConnectSearch.join("ClusterManagedSearch", ClusterManagedSearch, ClusterManagedSearch.entity().getId(), UnmanagedDirectConnectSearch.entity().getClusterId(), JoinType.INNER); + UnmanagedDirectConnectSearch.join("ClusterManagedSearch", ClusterManagedSearch, ClusterManagedSearch.entity().getId(), + UnmanagedDirectConnectSearch.entity().getClusterId(), JoinType.INNER); UnmanagedDirectConnectSearch.done(); - DirectConnectSearch = createSearchBuilder(); DirectConnectSearch.and("resource", DirectConnectSearch.entity().getResource(), SearchCriteria.Op.NNULL); DirectConnectSearch.and("id", DirectConnectSearch.entity().getId(), SearchCriteria.Op.EQ); @@ -386,7 +391,7 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao public long countBy(long clusterId, ResourceState... states) { SearchCriteria sc = MaintenanceCountSearch.create(); - sc.setParameters("resourceState", (Object[]) states); + sc.setParameters("resourceState", (Object[])states); sc.setParameters("cluster", clusterId); List hosts = listBy(sc); @@ -482,7 +487,8 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao return ownCluster; } - @Override @DB + @Override + @DB public List findAndUpdateDirectAgentToLoad(long lastPingSecondsAfter, Long limit, long managementServerId) { Transaction txn = Transaction.currentTxn(); @@ -580,24 +586,26 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao return assignedHosts; } - @Override @DB + @Override + @DB public List findAndUpdateApplianceToLoad(long lastPingSecondsAfter, long managementServerId) { - Transaction txn = Transaction.currentTxn(); + Transaction txn = Transaction.currentTxn(); - txn.start(); - SearchCriteria sc = UnmanagedApplianceSearch.create(); - sc.setParameters("lastPinged", lastPingSecondsAfter); - sc.setParameters("types", Type.ExternalDhcp, Type.ExternalFirewall, Type.ExternalLoadBalancer, Type.BaremetalDhcp, Type.BaremetalPxe, Type.TrafficMonitor, Type.L2Networking); - List hosts = lockRows(sc, null, true); + txn.start(); + SearchCriteria sc = UnmanagedApplianceSearch.create(); + sc.setParameters("lastPinged", lastPingSecondsAfter); + sc.setParameters("types", Type.ExternalDhcp, Type.ExternalFirewall, Type.ExternalLoadBalancer, Type.BaremetalDhcp, Type.BaremetalPxe, Type.TrafficMonitor, + Type.L2Networking); + List hosts = lockRows(sc, null, true); - for (HostVO host : hosts) { - host.setManagementServerId(managementServerId); - update(host.getId(), host); - } + for (HostVO host : hosts) { + host.setManagementServerId(managementServerId); + update(host.getId(), host); + } - txn.commit(); + txn.commit(); - return hosts; + return hosts; } @Override @@ -657,7 +665,6 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao return listBy(sc); } - @Override public List listAllUpAndEnabledNonHAHosts(Type type, Long clusterId, Long podId, long dcId, String haTag) { SearchBuilder hostTagSearch = null; @@ -726,7 +733,7 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao List result = new ArrayList(); ResultSet rs = null; try { - String sql = "select h.id from host h left join cluster c on h.cluster_id=c.id where h.mgmt_server_id is not null and h.last_ping < ? and h.status in ('Up', 'Updating', 'Disconnected', 'Connecting') and h.type not in ('ExternalFirewall', 'ExternalLoadBalancer', 'TrafficMonitor', 'SecondaryStorage', 'LocalSecondaryStorage', 'L2Networking') and (h.cluster_id is null or c.managed_state = 'Managed') ;" ; + String sql = "select h.id from host h left join cluster c on h.cluster_id=c.id where h.mgmt_server_id is not null and h.last_ping < ? and h.status in ('Up', 'Updating', 'Disconnected', 'Connecting') and h.type not in ('ExternalFirewall', 'ExternalLoadBalancer', 'TrafficMonitor', 'SecondaryStorage', 'LocalSecondaryStorage', 'L2Networking') and (h.cluster_id is null or c.managed_state = 'Managed') ;"; pstmt = txn.prepareStatement(sql); pstmt.setLong(1, timeout); rs = pstmt.executeQuery(); @@ -818,9 +825,9 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao @DB public List getRunningHostCounts(Date cutTime) { String sql = "select * from (" + "select h.data_center_id, h.type, count(*) as count from host as h INNER JOIN mshost as m ON h.mgmt_server_id=m.msid " - + "where h.status='Up' and h.type='SecondaryStorage' and m.last_update > ? " + "group by h.data_center_id, h.type " + "UNION ALL " - + "select h.data_center_id, h.type, count(*) as count from host as h INNER JOIN mshost as m ON h.mgmt_server_id=m.msid " - + "where h.status='Up' and h.type='Routing' and m.last_update > ? " + "group by h.data_center_id, h.type) as t " + "ORDER by t.data_center_id, t.type"; + + "where h.status='Up' and h.type='SecondaryStorage' and m.last_update > ? " + "group by h.data_center_id, h.type " + "UNION ALL " + + "select h.data_center_id, h.type, count(*) as count from host as h INNER JOIN mshost as m ON h.mgmt_server_id=m.msid " + + "where h.status='Up' and h.type='Routing' and m.last_update > ? " + "group by h.data_center_id, h.type) as t " + "ORDER by t.data_center_id, t.type"; ArrayList l = new ArrayList(); @@ -870,90 +877,100 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao return customSearch(sc, null).get(0); } + @Override + public boolean updateState(Status oldStatus, Event event, Status newStatus, Host vo, Object data) { + HostVO host = findById(vo.getId()); + if (host == null) { + if (event == Event.Remove && newStatus == Status.Removed) { + host = findByIdIncludingRemoved(vo.getId()); + } + } - @Override - public boolean updateState(Status oldStatus, Event event, Status newStatus, Host vo, Object data) { - HostVO host = findById(vo.getId()); - if(host == null){ - if(event == Event.Remove && newStatus == Status.Removed){ - host = findByIdIncludingRemoved(vo.getId()); - } - } - - if(host == null){ + if (host == null) { return false; - } - long oldPingTime = host.getLastPinged(); + } + long oldPingTime = host.getLastPinged(); - SearchBuilder sb = createSearchBuilder(); - sb.and("status", sb.entity().getStatus(), SearchCriteria.Op.EQ); - sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); - sb.and("update", sb.entity().getUpdated(), SearchCriteria.Op.EQ); - if (newStatus.checkManagementServer()) { - sb.and("ping", sb.entity().getLastPinged(), SearchCriteria.Op.EQ); - sb.and().op("nullmsid", sb.entity().getManagementServerId(), SearchCriteria.Op.NULL); - sb.or("msid", sb.entity().getManagementServerId(), SearchCriteria.Op.EQ); - sb.closeParen(); - } - sb.done(); + SearchBuilder sb = createSearchBuilder(); + sb.and("status", sb.entity().getStatus(), SearchCriteria.Op.EQ); + sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); + sb.and("update", sb.entity().getUpdated(), SearchCriteria.Op.EQ); + if (newStatus.checkManagementServer()) { + sb.and("ping", sb.entity().getLastPinged(), SearchCriteria.Op.EQ); + sb.and().op("nullmsid", sb.entity().getManagementServerId(), SearchCriteria.Op.NULL); + sb.or("msid", sb.entity().getManagementServerId(), SearchCriteria.Op.EQ); + sb.cp(); + } + sb.done(); - SearchCriteria sc = sb.create(); + SearchCriteria sc = sb.create(); - sc.setParameters("status", oldStatus); - sc.setParameters("id", host.getId()); - sc.setParameters("update", host.getUpdated()); - long oldUpdateCount = host.getUpdated(); - if (newStatus.checkManagementServer()) { - sc.setParameters("ping", oldPingTime); - sc.setParameters("msid", host.getManagementServerId()); - } + sc.setParameters("status", oldStatus); + sc.setParameters("id", host.getId()); + sc.setParameters("update", host.getUpdated()); + long oldUpdateCount = host.getUpdated(); + if (newStatus.checkManagementServer()) { + sc.setParameters("ping", oldPingTime); + sc.setParameters("msid", host.getManagementServerId()); + } - long newUpdateCount = host.incrUpdated(); - UpdateBuilder ub = getUpdateBuilder(host); - ub.set(host, _statusAttr, newStatus); - if (newStatus.updateManagementServer()) { - if (newStatus.lostConnection()) { - ub.set(host, _msIdAttr, null); - } else { - ub.set(host, _msIdAttr, host.getManagementServerId()); - } - if (event.equals(Event.Ping) || event.equals(Event.AgentConnected)) { - ub.set(host, _pingTimeAttr, System.currentTimeMillis() >> 10); - } - } - if (event.equals(Event.ManagementServerDown)) { - ub.set(host, _pingTimeAttr, ((System.currentTimeMillis() >> 10) - (10 * 60))); - } - int result = update(ub, sc, null); - assert result <= 1 : "How can this update " + result + " rows? "; + long newUpdateCount = host.incrUpdated(); + UpdateBuilder ub = getUpdateBuilder(host); + ub.set(host, _statusAttr, newStatus); + if (newStatus.updateManagementServer()) { + if (newStatus.lostConnection()) { + ub.set(host, _msIdAttr, null); + } else { + ub.set(host, _msIdAttr, host.getManagementServerId()); + } + if (event.equals(Event.Ping) || event.equals(Event.AgentConnected)) { + ub.set(host, _pingTimeAttr, System.currentTimeMillis() >> 10); + } + } + if (event.equals(Event.ManagementServerDown)) { + ub.set(host, _pingTimeAttr, ((System.currentTimeMillis() >> 10) - (10 * 60))); + } + int result = update(ub, sc, null); + assert result <= 1 : "How can this update " + result + " rows? "; - if (status_logger.isDebugEnabled() && result == 0) { - HostVO ho = findById(host.getId()); - assert ho != null : "How how how? : " + host.getId(); + if (status_logger.isDebugEnabled() && result == 0) { + HostVO ho = findById(host.getId()); + assert ho != null : "How how how? : " + host.getId(); - StringBuilder str = new StringBuilder("Unable to update host for event:").append(event.toString()); - str.append(". Name=").append(host.getName()); - str.append("; New=[status=").append(newStatus.toString()).append(":msid=") - .append(newStatus.lostConnection() ? "null" : host.getManagementServerId()).append(":lastpinged=").append(host.getLastPinged()).append("]"); - str.append("; Old=[status=").append(oldStatus.toString()).append(":msid=").append(host.getManagementServerId()).append(":lastpinged=") - .append(oldPingTime).append("]"); - str.append("; DB=[status=").append(vo.getStatus().toString()).append(":msid=").append(vo.getManagementServerId()).append(":lastpinged=") - .append(vo.getLastPinged()).append(":old update count=").append(oldUpdateCount).append("]"); - status_logger.debug(str.toString()); - } else { - StringBuilder msg = new StringBuilder("Agent status update: ["); - msg.append("id = " + host.getId()); - msg.append("; name = " + host.getName()); - msg.append("; old status = " + oldStatus); - msg.append("; event = " + event); - msg.append("; new status = " + newStatus); - msg.append("; old update count = " + oldUpdateCount); - msg.append("; new update count = " + newUpdateCount + "]"); - status_logger.debug(msg.toString()); - } + StringBuilder str = new StringBuilder("Unable to update host for event:").append(event.toString()); + str.append(". Name=").append(host.getName()); + str.append("; New=[status=") + .append(newStatus.toString()) + .append(":msid=") + .append(newStatus.lostConnection() ? "null" : host.getManagementServerId()) + .append(":lastpinged=") + .append(host.getLastPinged()) + .append("]"); + str.append("; Old=[status=").append(oldStatus.toString()).append(":msid=").append(host.getManagementServerId()).append(":lastpinged=").append(oldPingTime).append("]"); + str.append("; DB=[status=") + .append(vo.getStatus().toString()) + .append(":msid=") + .append(vo.getManagementServerId()) + .append(":lastpinged=") + .append(vo.getLastPinged()) + .append(":old update count=") + .append(oldUpdateCount) + .append("]"); + status_logger.debug(str.toString()); + } else { + StringBuilder msg = new StringBuilder("Agent status update: ["); + msg.append("id = " + host.getId()); + msg.append("; name = " + host.getName()); + msg.append("; old status = " + oldStatus); + msg.append("; event = " + event); + msg.append("; new status = " + newStatus); + msg.append("; old update count = " + oldUpdateCount); + msg.append("; new update count = " + newUpdateCount + "]"); + status_logger.debug(msg.toString()); + } - return result > 0; - } + return result > 0; + } @Override public boolean updateResourceState(ResourceState oldState, ResourceState.Event event, ResourceState newState, Host vo) { @@ -978,20 +995,20 @@ public class HostDaoImpl extends GenericDaoBase implements HostDao assert ho != null : "How how how? : " + host.getId(); StringBuilder str = new StringBuilder("Unable to update resource state: ["); - str.append("m = " + host.getId()); - str.append("; name = " + host.getName()); - str.append("; old state = " + oldState); - str.append("; event = " + event); - str.append("; new state = " + newState + "]"); - state_logger.debug(str.toString()); + str.append("m = " + host.getId()); + str.append("; name = " + host.getName()); + str.append("; old state = " + oldState); + str.append("; event = " + event); + str.append("; new state = " + newState + "]"); + state_logger.debug(str.toString()); } else { - StringBuilder msg = new StringBuilder("Resource state update: ["); - msg.append("id = " + host.getId()); - msg.append("; name = " + host.getName()); - msg.append("; old state = " + oldState); - msg.append("; event = " + event); - msg.append("; new state = " + newState + "]"); - state_logger.debug(msg.toString()); + StringBuilder msg = new StringBuilder("Resource state update: ["); + msg.append("id = " + host.getId()); + msg.append("; name = " + host.getName()); + msg.append("; old state = " + oldState); + msg.append("; event = " + event); + msg.append("; new state = " + newState + "]"); + state_logger.debug(msg.toString()); } return result > 0; diff --git a/engine/schema/src/com/cloud/user/AccountDetailsDaoImpl.java b/engine/schema/src/com/cloud/user/AccountDetailsDaoImpl.java index 81ae6368407..30bbe73a568 100755 --- a/engine/schema/src/com/cloud/user/AccountDetailsDaoImpl.java +++ b/engine/schema/src/com/cloud/user/AccountDetailsDaoImpl.java @@ -27,11 +27,10 @@ import org.apache.cloudstack.framework.config.ConfigKey.Scope; import org.apache.cloudstack.framework.config.ScopedConfigStorage; import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; @Local(value = {AccountDetailsDao.class}) @@ -46,7 +45,7 @@ public class AccountDetailsDaoImpl extends GenericDaoBase @Override public Map findDetails(long accountId) { - GenericQueryBuilder sc = GenericQueryBuilder.create(AccountDetailVO.class); + QueryBuilder sc = QueryBuilder.create(AccountDetailVO.class); sc.and(sc.entity().getAccountId(), Op.EQ, accountId); List results = sc.list(); Map details = new HashMap(results.size()); @@ -72,7 +71,7 @@ public class AccountDetailsDaoImpl extends GenericDaoBase @Override public AccountDetailVO findDetail(long accountId, String name) { - GenericQueryBuilder sc = GenericQueryBuilder.create(AccountDetailVO.class); + QueryBuilder sc = QueryBuilder.create(AccountDetailVO.class); sc.and(sc.entity().getAccountId(), Op.EQ, accountId); sc.and(sc.entity().getName(), Op.EQ, name); return sc.find(); diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java index 456471bb93c..50ab9e6c42b 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/volume/db/TemplatePrimaryDataStoreDaoImpl.java @@ -20,18 +20,18 @@ package org.apache.cloudstack.storage.volume.db; import java.util.Date; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; -import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine; +import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event; +import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.State; + import com.cloud.utils.db.GenericDaoBase; -import com.cloud.utils.db.SearchCriteria.Op; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; +import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.db.UpdateBuilder; @Component @@ -50,8 +50,7 @@ public class TemplatePrimaryDataStoreDaoImpl extends GenericDaoBase sc = GenericQueryBuilder - .create(TemplatePrimaryDataStoreVO.class); + QueryBuilder sc = QueryBuilder.create(TemplatePrimaryDataStoreVO.class); sc.and(sc.entity().getTemplateId(), Op.EQ, templateId); sc.and(sc.entity().getPoolId(), Op.EQ, poolId); return sc.find(); @@ -59,8 +58,7 @@ public class TemplatePrimaryDataStoreDaoImpl extends GenericDaoBase sc = GenericQueryBuilder - .create(TemplatePrimaryDataStoreVO.class); + QueryBuilder sc = QueryBuilder.create(TemplatePrimaryDataStoreVO.class); sc.and(sc.entity().getTemplateId(), Op.EQ, templateId); sc.and(sc.entity().getPoolId(), Op.EQ, poolId); sc.and(sc.entity().getState(), Op.EQ, ObjectInDataStoreStateMachine.State.Ready); diff --git a/framework/db/src/com/cloud/utils/db/GenericQueryBuilder.java b/framework/db/src/com/cloud/utils/db/GenericQueryBuilder.java index 570a10e1bca..885bebb2ab3 100755 --- a/framework/db/src/com/cloud/utils/db/GenericQueryBuilder.java +++ b/framework/db/src/com/cloud/utils/db/GenericQueryBuilder.java @@ -17,16 +17,13 @@ package com.cloud.utils.db; import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.UUID; -import com.cloud.utils.db.SearchCriteria.Func; import com.cloud.utils.db.SearchCriteria.Op; -public class GenericQueryBuilder extends SearchBase { +public class GenericQueryBuilder extends SearchBase, T, K> { final HashMap _params = new HashMap(); protected GenericQueryBuilder(Class entityType, Class resultType) { @@ -40,81 +37,31 @@ public class GenericQueryBuilder extends SearchBase { return new GenericQueryBuilder(entityType, resultType); } - static public GenericQueryBuilder create(Class entityType) { - return create(entityType, entityType); - } - - public GenericQueryBuilder or() { - constructCondition(null, " OR ", null, null); - return this; - } - - public void selectField(Object... useless) { - assert _entity != null : "SearchBuilder cannot be modified once it has been setup"; - assert _specifiedAttrs.size() > 0 : "You didn't specify any attributes"; - - if (_selects == null) { - _selects = new ArrayList(); - } - - for (Attribute attr : _specifiedAttrs) { - Field field = null; - try { - field = _resultType.getDeclaredField(attr.field.getName()); - field.setAccessible(true); - } catch (SecurityException e) { - } catch (NoSuchFieldException e) { - } - _selects.add(new Select(Func.NATIVE, attr, field, null)); - } - - _specifiedAttrs.clear(); - - return this; - } - - /** - * Specifies the field to select. - * - * @param fieldName The field name of the result object to put the value of the field selected. This can be null if you're selecting only one field and the result is not a complex object. - * @param func function to place. - * @param useless column to select. Call this with this.entity() method. - * @param params parameters to the function. - * @return a SearchBuilder to build more search parts. - */ - public GenericSearchBuilder select(String fieldName, Func func, Object useless, Object... params) { - if (_entity == null) { - throw new RuntimeException("SearchBuilder cannot be modified once it has been setup"); - } - if (_specifiedAttrs.size() > 1) { - throw new RuntimeException("You can't specify more than one field to search on"); - } - if (func.getCount() != -1 && (func.getCount() != (params.length + 1))) { - throw new RuntimeException("The number of parameters does not match the function param count for " + func); - } - - if (_selects == null) { - _selects = new ArrayList _selects; - protected GroupBy, T, K> _groupBy = null; + protected GroupBy _groupBy = null; protected SelectType _selectType; T _entity; @@ -52,6 +65,134 @@ public abstract class SearchBase { _specifiedAttrs = new ArrayList(); } + /** + * Specifies how the search query should be grouped + * + * @param fields fields of the entity object that should be grouped on. The order is important. + * @return GroupBy object to perform more operations on. + * @see GroupBy + */ + @SuppressWarnings("unchecked") + public GroupBy groupBy(Object... fields) { + assert _groupBy == null : "Can't do more than one group bys"; + _groupBy = new GroupBy((J)this); + return _groupBy; + } + + /** + * Specifies what to select in the search. + * + * @param fieldName The field name of the result object to put the value of the field selected. This can be null if you're selecting only one field and the result is not a complex object. + * @param func function to place. + * @param field column to select. Call this with this.entity() method. + * @param params parameters to the function. + * @return itself to build more search parts. + */ + @SuppressWarnings("unchecked") + public J select(String fieldName, Func func, Object field, Object... params) { + if (_entity == null) { + throw new RuntimeException("SearchBuilder cannot be modified once it has been setup"); + } + if (_specifiedAttrs.size() > 1) { + throw new RuntimeException("You can't specify more than one field to search on"); + } + if (func.getCount() != -1 && (func.getCount() != (params.length + 1))) { + throw new RuntimeException("The number of parameters does not match the function param count for " + func); + } + + if (_selects == null) { + _selects = new ArrayList(); + } + + for (Attribute attr : _specifiedAttrs) { + Field field = null; + try { + field = _resultType.getDeclaredField(attr.field.getName()); + field.setAccessible(true); + } catch (SecurityException e) { + } catch (NoSuchFieldException e) { + } + _selects.add(new Select(Func.NATIVE, attr, field, null)); + } + + _specifiedAttrs.clear(); + + return (J)this; + } + + /** + * joins this search with another search + * + * @param name name given to the other search. used for setJoinParameters. + * @param builder The other search + * @param joinField1 field of the first table used to perform the join + * @param joinField2 field of the second table used to perform the join + * @param joinType type of join + * @return itself + */ + @SuppressWarnings("unchecked") + public J join(String name, SearchBase builder, Object joinField1, Object joinField2, JoinBuilder.JoinType joinType) { + assert _entity != null : "SearchBuilder cannot be modified once it has been setup"; + assert _specifiedAttrs.size() == 1 : "You didn't select the attribute."; + assert builder._entity != null : "SearchBuilder cannot be modified once it has been setup"; + assert builder._specifiedAttrs.size() == 1 : "You didn't select the attribute."; + assert builder != this : "You can't add yourself, can you? Really think about it!"; + + JoinBuilder> t = new JoinBuilder>(builder, _specifiedAttrs.get(0), builder._specifiedAttrs.get(0), joinType); + if (_joins == null) { + _joins = new HashMap>>(); + } + _joins.put(name, t); + + builder._specifiedAttrs.clear(); + _specifiedAttrs.clear(); + return (J)this; + } + public SelectType getSelectType() { return _selectType; } @@ -62,6 +203,10 @@ public abstract class SearchBase { _specifiedAttrs.add(attr); } + /** + * @return entity object. This allows the caller to use the entity return + * to specify the field to be selected in many of the search parameters. + */ public T entity() { return _entity; } @@ -100,11 +245,69 @@ public abstract class SearchBase { return new SearchCriteria(this); } + /** + * Adds an OR condition to the search. Normally you should use this to + * perform an 'OR' with a big conditional in parenthesis. For example, + * + * search.or().op(entity.getId(), Op.Eq, "abc").cp() + * + * The above fragment produces something similar to + * + * "OR (id = $abc) where abc is the token to be replaced by a value later. + * + * @return this + */ + @SuppressWarnings("unchecked") + public J or() { + constructCondition(null, " OR ", null, null); + return (J)this; + } + + /** + * Adds an AND condition to the search. Normally you should use this to + * perform an 'AND' with a big conditional in parenthesis. For example, + * + * search.and().op(entity.getId(), Op.Eq, "abc").cp() + * + * The above fragment produces something similar to + * + * "AND (id = $abc) where abc is the token to be replaced by a value later. + * + * @return this + */ + @SuppressWarnings("unchecked") + public J and() { + constructCondition(null, " AND ", null, null); + return (J)this; + } + + /** + * Closes a parenthesis that's started by op() + * @return this + */ + @SuppressWarnings("unchecked") + public J cp() { + Condition condition = new Condition(null, " ) ", null, Op.RP); + _conditions.add(condition); + return (J)this; + } + + /** + * Writes an open parenthesis into the search + * @return this + */ + @SuppressWarnings("unchecked") + public J op() { + Condition condition = new Condition(null, " ( ", null, Op.RP); + _conditions.add(condition); + return (J)this; + } + /** * Marks the SearchBuilder as completed in building the search conditions. */ @Override - public synchronized void finalize() { + protected synchronized void finalize() { if (_entity != null) { Factory factory = (Factory)_entity; factory.setCallback(0, null); @@ -112,7 +315,7 @@ public abstract class SearchBase { } if (_joins != null) { - for (JoinBuilder> join : _joins.values()) { + for (JoinBuilder> join : _joins.values()) { join.getT().finalize(); } } diff --git a/framework/db/src/com/cloud/utils/db/SearchCriteria.java b/framework/db/src/com/cloud/utils/db/SearchCriteria.java index a1f6408744c..3b20686fe3f 100755 --- a/framework/db/src/com/cloud/utils/db/SearchCriteria.java +++ b/framework/db/src/com/cloud/utils/db/SearchCriteria.java @@ -56,6 +56,7 @@ public class SearchCriteria { private final String op; int params; + Op(String op, int params) { this.op = op; this.params = params; @@ -113,27 +114,12 @@ public class SearchCriteria { private int _counter; private HashMap>> _joins; private final ArrayList selects, SelectType selectType, Class resultType, - HashMap params) { - this._attrs = attrs; - this._conditions = conditions; - this._selects = selects; - this._selectType = selectType; - this._resultType = resultType; - this._params = params; - this._additionals = new ArrayList(); - this._counter = 0; - this._joins = null; - this._groupBy = null; - this._groupByValues = null; - } - - protected SearchCriteria(SearchBase sb) { + protected SearchCriteria(SearchBase sb) { this._attrs = sb._attrs; this._conditions = sb._conditions; this._additionals = new ArrayList(); @@ -141,9 +127,9 @@ public class SearchCriteria { this._joins = null; if (sb._joins != null) { _joins = new HashMap>>(sb._joins.size()); - for (Map.Entry>> entry : sb._joins.entrySet()) { - JoinBuilder> value = entry.getValue(); - _joins.put(entry.getKey(), new JoinBuilder>(value.getT().create(),value.getFirstAttribute(), value.getSecondAttribute(), value.getType())); + for (Map.Entry>> entry : sb._joins.entrySet()) { + JoinBuilder> value = entry.getValue(); + _joins.put(entry.getKey(), new JoinBuilder>(value.getT().create(), value.getFirstAttribute(), value.getSecondAttribute(), value.getType())); } } _selects = sb._selects; @@ -157,6 +143,10 @@ public class SearchCriteria { _selectType = sb._selectType; } + protected void setParameters(HashMap parameters) { + _params = parameters; + } + public SelectType getSelectType() { return _selectType; } @@ -202,22 +192,22 @@ public class SearchCriteria { } protected JoinBuilder> findJoin(Map>> jbmap, String joinName) { - JoinBuilder> jb = jbmap.get(joinName); - if (jb != null) { - return jb; - } - - for (JoinBuilder> j2 : jbmap.values()) { - SearchCriteria sc = j2.getT(); - if(sc._joins != null) - jb = findJoin(sc._joins, joinName); - if (jb != null) { - return jb; - } - } - - assert (false) : "Unable to find a join by the name " + joinName; - return null; + JoinBuilder> jb = jbmap.get(joinName); + if (jb != null) { + return jb; + } + + for (JoinBuilder> j2 : jbmap.values()) { + SearchCriteria sc = j2.getT(); + if (sc._joins != null) + jb = findJoin(sc._joins, joinName); + if (jb != null) { + return jb; + } + } + + assert (false) : "Unable to find a join by the name " + joinName; + return null; } public void setJoinParameters(String joinName, String conditionName, Object... params) { @@ -227,18 +217,6 @@ public class SearchCriteria { } - public void addJoinAnd(String joinName, String field, Op op, Object... values) { - JoinBuilder> join = _joins.get(joinName); - assert (join != null) : "Incorrect join name specified: " + joinName; - join.getT().addAnd(field, op, values); - } - - public void addJoinOr(String joinName, String field, Op op, Object... values) { - JoinBuilder> join = _joins.get(joinName); - assert (join != null) : "Incorrect join name specified: " + joinName; - join.getT().addOr(field, op, values); - } - public SearchCriteria getJoin(String joinName) { return _joins.get(joinName).getT(); } @@ -257,30 +235,27 @@ public class SearchCriteria { return _resultType; } + @Deprecated public void addAnd(String field, Op op, Object... values) { String name = Integer.toString(_counter++); addCondition(name, " AND ", field, op); setParameters(name, values); } + @Deprecated public void addAnd(Attribute attr, Op op, Object... values) { String name = Integer.toString(_counter++); addCondition(name, " AND ", attr, op); setParameters(name, values); } + @Deprecated public void addOr(String field, Op op, Object... values) { String name = Integer.toString(_counter++); addCondition(name, " OR ", field, op); setParameters(name, values); } - public void addOr(Attribute attr, Op op, Object... values) { - String name = Integer.toString(_counter++); - addCondition(name, " OR ", attr, op); - setParameters(name, values); - } - protected void addCondition(String conditionName, String cond, String fieldName, Op op) { Attribute attr = _attrs.get(fieldName); assert attr != null : "Unable to find field: " + fieldName; diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java index c8a178e6a41..314c9577279 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalPingServiceImpl.java @@ -23,7 +23,6 @@ package com.cloud.baremetal.networkservice; import java.net.URI; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -36,7 +35,6 @@ import org.apache.log4j.Logger; import org.apache.cloudstack.api.AddBaremetalPxeCmd; import org.apache.cloudstack.api.AddBaremetalPxePingServerCmd; import org.apache.cloudstack.api.ListBaremetalPxeServersCmd; -import org.apache.log4j.Logger; import com.cloud.agent.api.Answer; import com.cloud.agent.api.baremetal.IpmISetBootDevCommand; @@ -62,9 +60,8 @@ import com.cloud.resource.ResourceManager; import com.cloud.resource.ServerResource; import com.cloud.uservm.UserVm; import com.cloud.utils.db.DB; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.NicProfile; @@ -84,7 +81,7 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements @Override public boolean prepare(VirtualMachineProfile profile, NicProfile pxeNic, DeployDestination dest, ReservationContext context) { - GenericQueryBuilder sc = GenericQueryBuilder.create(BaremetalPxeVO.class); + QueryBuilder sc = QueryBuilder.create(BaremetalPxeVO.class); sc.and(sc.entity().getDeviceType(), Op.EQ, BaremetalPxeType.PING.toString()); sc.and(sc.entity().getPodId(), Op.EQ, dest.getPod().getId()); BaremetalPxeVO pxeVo = sc.find(); diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java index 930ca1bf609..9e1fd65a239 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpManagerImpl.java @@ -5,20 +5,20 @@ // 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. -// +// // Automatically generated by addcopyright.py at 01/29/2013 // Apache License, Version 2.0 (the "License"); you may not use this // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// +// // Automatically generated by addcopyright.py at 04/03/2012 package com.cloud.baremetal.networkservice; @@ -32,9 +32,10 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.log4j.Logger; + import org.apache.cloudstack.api.AddBaremetalDhcpCmd; import org.apache.cloudstack.api.ListBaremetalDhcpCmd; -import org.apache.log4j.Logger; import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; @@ -45,7 +46,6 @@ import com.cloud.baremetal.database.BaremetalDhcpDao; import com.cloud.baremetal.database.BaremetalDhcpVO; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenterVO; -import com.cloud.dc.HostPodVO; import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.HostPodDao; import com.cloud.deploy.DeployDestination; @@ -67,14 +67,12 @@ import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.NicProfile; import com.cloud.vm.ReservationContext; -import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.UserVmDao; @@ -311,7 +309,7 @@ public class BaremetalDhcpManagerImpl extends ManagerBase implements BaremetalDh return responses; } - GenericQueryBuilder sc = GenericQueryBuilder.create(BaremetalDhcpVO.class); + QueryBuilder sc = QueryBuilder.create(BaremetalDhcpVO.class); if (cmd.getDeviceType() != null) { sc.and(sc.entity().getDeviceType(), Op.EQ, cmd.getDeviceType()); } diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java index 661f39134c7..aa0ff1c0360 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java @@ -32,7 +32,6 @@ import org.apache.log4j.Logger; import org.apache.cloudstack.api.AddBaremetalKickStartPxeCmd; import org.apache.cloudstack.api.AddBaremetalPxeCmd; import org.apache.cloudstack.api.ListBaremetalPxeServersCmd; -import org.apache.log4j.Logger; import com.cloud.agent.api.Answer; import com.cloud.agent.api.baremetal.IpmISetBootDevCommand; @@ -57,9 +56,8 @@ import com.cloud.storage.VMTemplateVO; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.uservm.UserVm; import com.cloud.utils.db.DB; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.NicProfile; @@ -87,7 +85,7 @@ public class BaremetalKickStartServiceImpl extends BareMetalPxeServiceBase imple @Override public boolean prepare(VirtualMachineProfile profile, NicProfile nic, DeployDestination dest, ReservationContext context) { NetworkVO nwVO = _nwDao.findById(nic.getNetworkId()); - GenericQueryBuilder sc = GenericQueryBuilder.create(BaremetalPxeVO.class); + QueryBuilder sc = QueryBuilder.create(BaremetalPxeVO.class); sc.and(sc.entity().getDeviceType(), Op.EQ, BaremetalPxeType.KICK_START.toString()); sc.and(sc.entity().getPhysicalNetworkId(), Op.EQ, nwVO.getPhysicalNetworkId()); BaremetalPxeVO pxeVo = sc.find(); diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java index f869fe65461..244ce8c823c 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeElement.java @@ -5,16 +5,16 @@ // 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. -// +// // Automatically generated by addcopyright.py at 01/29/2013 package com.cloud.baremetal.networkservice; @@ -46,16 +46,14 @@ import com.cloud.network.element.NetworkElement; import com.cloud.offering.NetworkOffering; import com.cloud.utils.component.AdapterBase; import com.cloud.utils.db.DB; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; import com.cloud.vm.ReservationContext; import com.cloud.vm.VMInstanceVO; -import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Type; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.dao.NicDao; @@ -91,7 +89,7 @@ public class BaremetalPxeElement extends AdapterBase implements NetworkElement { private boolean canHandle(DeployDestination dest, TrafficType trafficType, GuestType networkType) { Pod pod = dest.getPod(); if (pod != null && dest.getDataCenter().getNetworkType() == NetworkType.Basic && trafficType == TrafficType.Guest) { - GenericQueryBuilder sc = GenericQueryBuilder.create(BaremetalPxeVO.class); + QueryBuilder sc = QueryBuilder.create(BaremetalPxeVO.class); sc.and(sc.entity().getPodId(), Op.EQ, pod.getId()); return sc.find() != null; } diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java index ae3898bc315..ef6ec312d13 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPxeManagerImpl.java @@ -36,9 +36,8 @@ import org.apache.log4j.Logger; import org.apache.cloudstack.api.AddBaremetalKickStartPxeCmd; import org.apache.cloudstack.api.AddBaremetalPxeCmd; import org.apache.cloudstack.api.AddBaremetalPxePingServerCmd; -import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.api.ListBaremetalPxeServersCmd; -import org.apache.log4j.Logger; +import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; @@ -62,9 +61,8 @@ import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.uservm.UserVm; import com.cloud.utils.StringUtils; import com.cloud.utils.component.ManagerBase; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.NicProfile; import com.cloud.vm.NicVO; @@ -220,7 +218,7 @@ public class BaremetalPxeManagerImpl extends ManagerBase implements BaremetalPxe } PhysicalNetworkVO phy = phys.get(0); - GenericQueryBuilder sc = GenericQueryBuilder.create(BaremetalPxeVO.class); + QueryBuilder sc = QueryBuilder.create(BaremetalPxeVO.class); //TODO: handle both kickstart and PING //sc.addAnd(sc.getEntity().getPodId(), Op.EQ, vm.getPodIdToDeployIn()); sc.and(sc.entity().getPhysicalNetworkId(), Op.EQ, phy.getId()); diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java index dec4a79a425..8da9da086af 100755 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java @@ -30,8 +30,11 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import org.apache.log4j.Logger; + import org.apache.cloudstack.api.AddUcsManagerCmd; import org.apache.cloudstack.api.AssociateUcsProfileToBladeCmd; +import org.apache.cloudstack.api.DeleteUcsManagerCmd; import org.apache.cloudstack.api.ListUcsBladeCmd; import org.apache.cloudstack.api.ListUcsManagerCmd; import org.apache.cloudstack.api.ListUcsProfileCmd; @@ -40,8 +43,6 @@ import org.apache.cloudstack.api.response.UcsBladeResponse; import org.apache.cloudstack.api.response.UcsManagerResponse; import org.apache.cloudstack.api.response.UcsProfileResponse; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; -import org.apache.log4j.Logger; -import org.apache.cloudstack.api.DeleteUcsManagerCmd; import com.cloud.configuration.Config; import com.cloud.dc.ClusterDetailsDao; @@ -60,9 +61,8 @@ import com.cloud.ucs.structure.UcsCookie; import com.cloud.ucs.structure.UcsProfile; import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.db.DB; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.xmlobject.XmlObject; @@ -132,7 +132,7 @@ public class UcsManagerImpl implements UcsManager { } private void syncBlades(UcsManagerVO mgr) { - GenericQueryBuilder q = GenericQueryBuilder.create(UcsBladeVO.class); + QueryBuilder q = QueryBuilder.create(UcsBladeVO.class); q.and(q.entity().getUcsManagerId(), Op.EQ, mgr.getId()); List pblades = q.list(); if (pblades.isEmpty()) { @@ -210,7 +210,7 @@ public class UcsManagerImpl implements UcsManager { @Override @DB public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) { - GenericQueryBuilder q = GenericQueryBuilder.create(UcsManagerVO.class); + QueryBuilder q = QueryBuilder.create(UcsManagerVO.class); q.and(q.entity().getUrl(), Op.EQ, cmd.getUrl()); UcsManagerVO mgrvo = q.find(); if (mgrvo != null) { @@ -342,7 +342,7 @@ public class UcsManagerImpl implements UcsManager { @Override public UcsBladeResponse associateProfileToBlade(AssociateUcsProfileToBladeCmd cmd) { - GenericQueryBuilder q = GenericQueryBuilder.create(UcsBladeVO.class); + QueryBuilder q = QueryBuilder.create(UcsBladeVO.class); q.and(q.entity().getUcsManagerId(), Op.EQ, cmd.getUcsManagerId()); q.and(q.entity().getId(), Op.EQ, cmd.getBladeId()); UcsBladeVO bvo = q.find(); @@ -424,7 +424,7 @@ public class UcsManagerImpl implements UcsManager { return response; } - GenericQueryBuilder serv = GenericQueryBuilder.create(UcsManagerVO.class); + QueryBuilder serv = QueryBuilder.create(UcsManagerVO.class); serv.and(serv.entity().getZoneId(), Op.EQ, cmd.getZoneId()); List vos = serv.list(); @@ -454,7 +454,7 @@ public class UcsManagerImpl implements UcsManager { @Override public ListResponse listUcsBlades(ListUcsBladeCmd cmd) { - GenericQueryBuilder serv = GenericQueryBuilder.create(UcsBladeVO.class); + QueryBuilder serv = QueryBuilder.create(UcsBladeVO.class); serv.and(serv.entity().getUcsManagerId(), Op.EQ, cmd.getUcsManagerId()); List vos = serv.list(); @@ -509,7 +509,7 @@ public class UcsManagerImpl implements UcsManager { @Override public void deleteUcsManager(Long id) { - GenericQueryBuilder serv = GenericQueryBuilder.create(UcsBladeVO.class); + QueryBuilder serv = QueryBuilder.create(UcsBladeVO.class); serv.and(serv.entity().getUcsManagerId(), Op.EQ, id); List vos = serv.list(); for (UcsBladeVO vo : vos) { diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java index bb357cabd64..bb058e3d175 100755 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java @@ -16,6 +16,31 @@ // under the License. package com.cloud.hypervisor.xen.discoverer; +import java.net.InetAddress; +import java.net.URI; +import java.net.UnknownHostException; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Queue; +import java.util.Set; + +import javax.ejb.Local; +import javax.inject.Inject; +import javax.naming.ConfigurationException; +import javax.persistence.EntityExistsException; + +import org.apache.log4j.Logger; +import org.apache.xmlrpc.XmlRpcException; + +import com.xensource.xenapi.Connection; +import com.xensource.xenapi.Host; +import com.xensource.xenapi.Pool; +import com.xensource.xenapi.Session; +import com.xensource.xenapi.Types.SessionAuthenticationFailed; +import com.xensource.xenapi.Types.XenAPIException; + import com.cloud.agent.AgentManager; import com.cloud.agent.Listener; import com.cloud.agent.api.AgentControlAnswer; @@ -69,33 +94,10 @@ import com.cloud.storage.VMTemplateVO; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.user.Account; import com.cloud.utils.NumbersUtil; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.HypervisorVersionChangedException; -import com.xensource.xenapi.Connection; -import com.xensource.xenapi.Host; -import com.xensource.xenapi.Pool; -import com.xensource.xenapi.Session; -import com.xensource.xenapi.Types.SessionAuthenticationFailed; -import com.xensource.xenapi.Types.XenAPIException; -import org.apache.log4j.Logger; -import org.apache.xmlrpc.XmlRpcException; - -import javax.ejb.Local; -import javax.inject.Inject; -import javax.naming.ConfigurationException; -import javax.persistence.EntityExistsException; -import java.net.InetAddress; -import java.net.URI; -import java.net.UnknownHostException; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Queue; -import java.util.Set; @Local(value=Discoverer.class) public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, Listener, ResourceStateAdapter { @@ -126,7 +128,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L try { _clusterDao.update(cluster.getId(), cluster); } catch (EntityExistsException e) { - GenericQueryBuilder sc = GenericQueryBuilder.create(ClusterVO.class); + QueryBuilder sc = QueryBuilder.create(ClusterVO.class); sc.and(sc.entity().getGuid(), Op.EQ, guid); List clusters = sc.list(); ClusterVO clu = clusters.get(0); diff --git a/server/src/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java index 385ca3625dc..e29bb2bc04a 100644 --- a/server/src/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java @@ -21,20 +21,17 @@ import java.util.List; import javax.ejb.Local; import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; + +import org.apache.cloudstack.api.response.DiskOfferingResponse; import com.cloud.api.query.vo.DiskOfferingJoinVO; -import org.apache.cloudstack.api.response.DiskOfferingResponse; import com.cloud.offering.DiskOffering; import com.cloud.offering.ServiceOffering; -import com.cloud.storage.DiskOfferingVO; -import com.cloud.storage.DiskOfferingVO.Type; import com.cloud.utils.db.Attribute; -import com.cloud.utils.db.Filter; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; -import com.cloud.utils.db.SearchCriteria.Op; -import org.springframework.stereotype.Component; @Component @Local(value={DiskOfferingJoinDao.class}) @@ -42,7 +39,7 @@ public class DiskOfferingJoinDaoImpl extends GenericDaoBase dofIdSearch; + private final SearchBuilder dofIdSearch; private final Attribute _typeAttr; protected DiskOfferingJoinDaoImpl() { @@ -53,7 +50,7 @@ public class DiskOfferingJoinDaoImpl extends GenericDaoBase searchIncludingRemoved(SearchCriteria sc, final Filter filter, final Boolean lock, final boolean cache) { - sc.addAnd(_typeAttr, Op.EQ, Type.Disk); - return super.searchIncludingRemoved(sc, filter, lock, cache); - } - - @Override - public List customSearchIncludingRemoved(SearchCriteria sc, final Filter filter) { - sc.addAnd(_typeAttr, Op.EQ, Type.Disk); - return super.customSearchIncludingRemoved(sc, filter); - } } diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index b6b9bb5114c..d51eb41c24f 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -117,9 +117,8 @@ import com.cloud.utils.Pair; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.GlobalLock; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.events.SubscriptionMgr; import com.cloud.utils.exception.CloudRuntimeException; @@ -1693,7 +1692,7 @@ VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter { } protected HostVO findConsoleProxyHostByName(String name) { - GenericQueryBuilder sc = GenericQueryBuilder.create(HostVO.class); + QueryBuilder sc = QueryBuilder.create(HostVO.class); sc.and(sc.entity().getType(), Op.EQ, Host.Type.ConsoleProxy); sc.and(sc.entity().getName(), Op.EQ, name); return sc.find(); diff --git a/server/src/com/cloud/network/StorageNetworkManagerImpl.java b/server/src/com/cloud/network/StorageNetworkManagerImpl.java index 2c6414e1097..c0cb2894fc0 100755 --- a/server/src/com/cloud/network/StorageNetworkManagerImpl.java +++ b/server/src/com/cloud/network/StorageNetworkManagerImpl.java @@ -20,18 +20,17 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; -import java.util.Map; import javax.ejb.Local; import javax.inject.Inject; -import javax.naming.ConfigurationException; + +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; import org.apache.cloudstack.api.command.admin.network.CreateStorageNetworkIpRangeCmd; import org.apache.cloudstack.api.command.admin.network.DeleteStorageNetworkIpRangeCmd; import org.apache.cloudstack.api.command.admin.network.ListStorageNetworkIpRangeCmd; import org.apache.cloudstack.api.command.admin.network.UpdateStorageNetworkIpRangeCmd; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; import com.cloud.dc.HostPodVO; import com.cloud.dc.StorageNetworkIpAddressVO; @@ -46,9 +45,8 @@ import com.cloud.network.dao.NetworkDao; import com.cloud.network.dao.NetworkVO; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; @@ -339,7 +337,7 @@ public class StorageNetworkManagerImpl extends ManagerBase implements StorageNet @Override public boolean isStorageIpRangeAvailable(long zoneId) { - GenericQueryBuilder sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class); + QueryBuilder sc = QueryBuilder.create(StorageNetworkIpRangeVO.class); sc.and(sc.entity().getDataCenterId(), Op.EQ, zoneId); List entries = sc.list(); return entries.size() > 0; diff --git a/server/src/com/cloud/storage/OCFS2ManagerImpl.java b/server/src/com/cloud/storage/OCFS2ManagerImpl.java index e38ca5bae2f..505a18dc2ad 100755 --- a/server/src/com/cloud/storage/OCFS2ManagerImpl.java +++ b/server/src/com/cloud/storage/OCFS2ManagerImpl.java @@ -25,11 +25,12 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; -import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; -import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; +import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; +import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; + import com.cloud.agent.AgentManager; import com.cloud.agent.api.Answer; import com.cloud.agent.api.PrepareOCFS2NodesCommand; @@ -47,9 +48,8 @@ import com.cloud.storage.Storage.StoragePoolType; import com.cloud.storage.dao.StoragePoolHostDao; import com.cloud.utils.Ternary; import com.cloud.utils.component.ManagerBase; +import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.utils.db.GenericQueryBuilder; -import com.cloud.utils.db.GenericQueryBuilder; import com.cloud.utils.exception.CloudRuntimeException; @Component @@ -141,7 +141,7 @@ public class OCFS2ManagerImpl extends ManagerBase implements OCFS2Manager, Resou throw new CloudRuntimeException("Cannot find cluster for ID " + clusterId); } - GenericQueryBuilder sc = GenericQueryBuilder.create(HostVO.class); + QueryBuilder sc = QueryBuilder.create(HostVO.class); sc.and(sc.entity().getClusterId(), Op.EQ, clusterId); sc.and(sc.entity().getPodId(), Op.EQ, cluster.getPodId()); sc.and(sc.entity().getDataCenterId(), Op.EQ, cluster.getDataCenterId());