/* * * RHQ Sync Tool * Copyright (C) 2012-2013 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License, * version 2.1, 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 General Public License and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ package org.jboss.rhq.sync.tool.query; import java.util.List; import org.apache.log4j.Logger; import org.rhq.core.domain.criteria.MeasurementDefinitionCriteria; import org.rhq.core.domain.criteria.MeasurementScheduleCriteria; import org.rhq.core.domain.measurement.DataType; import org.rhq.core.domain.measurement.MeasurementDefinition; import org.rhq.core.domain.measurement.MeasurementSchedule; import org.rhq.core.domain.resource.Resource; import org.rhq.enterprise.server.measurement.MeasurementDefinitionManagerRemote; import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerRemote; /** * Created by IntelliJ IDEA. * User: imckinle * Date: 6/24/11 * Time: 10:53 AM * To change this template use File | Settings | File Templates. */ public class MetricResourceQueryImpl extends BaseResourceQuery implements MetricResourceQuery { private MeasurementDefinitionManagerRemote measurementDefinitionManagerRemote; private MeasurementScheduleManagerRemote measurementScheduleManagerRemote; private static Logger logger = Logger .getLogger(MetricResourceQueryImpl.class); public MetricResourceQueryImpl() { measurementDefinitionManagerRemote = baseRemote.getMeasurementDefinitionManagerRemote(); measurementScheduleManagerRemote = baseRemote.getMeasurementScheduleManagerRemote(); } @Override public List<MeasurementDefinition> findAllJbossMetric(String platform) { MeasurementDefinitionCriteria measure = new MeasurementDefinitionCriteria(); // criteria.addF // measure. // measure.addFilterDataType(DataType.MEASUREMENT); measure.addFilterResourceTypeName(ResourceQueryImpl.ResourceType.JBOSSAS_RESOURCE_TYPE.resourceName); // List<MeasurementDefinition> mylist = measurementDefinitionManagerRemote.findMeasurementDefinitionsByCriteria(this.getSubject(),measure); //return mylist; return null; } @Override public List<MeasurementSchedule> findAllSchedulesForResource(int resourceId) { MeasurementScheduleCriteria criteria = new MeasurementScheduleCriteria(); //criteria.addFilterResourceId(resource.getSId()); criteria.setPaging(0, 0); criteria.addFilterResourceId(resourceId); return measurementScheduleManagerRemote.findSchedulesByCriteria(baseRemote.getSubject(), criteria); } @Override public MeasurementSchedule findMeasurementSchedule(String name, String displayName, String dataType, int resourceid) { MeasurementScheduleCriteria criteria = new MeasurementScheduleCriteria(); //criteria.addFilterResourceId(resource.getSId()); criteria.setPaging(0, 0); criteria.addFilterResourceId(resourceid); Resource resource = getResource(resourceid); MeasurementDefinition measurementDefinition = getMeasurementDef(name, displayName, dataType, resource.getResourceType().getName()); if (measurementDefinition == null) { logger.error("no measurement definition found"); return null; } criteria.addFilterDefinitionIds(getMeasurementDef(name, displayName, dataType, resource.getResourceType().getName()).getId()); List<MeasurementSchedule> measurementSchedules = measurementScheduleManagerRemote.findSchedulesByCriteria(baseRemote.getSubject(), criteria); if (measurementSchedules.size() > 1) throw new RuntimeException("more than one measurementschedule found"); return measurementSchedules.get(0); } @Override public void updateMeasurementSchedule(MeasurementSchedule measurementSchedule) { measurementScheduleManagerRemote.updateSchedule(baseRemote.getSubject(), measurementSchedule); } private MeasurementDefinition getMeasurementDef(String name, String displayName, String type, String resourceTypeName) { logger.debug("get mesasurement definition for [" + name + "," + displayName + "," + type + "," + resourceTypeName + "]"); MeasurementDefinitionCriteria measure = new MeasurementDefinitionCriteria(); measure.addFilterDisplayName(displayName); measure.addFilterName(name); measure.setStrict(true); measure.addFilterResourceTypeName(resourceTypeName); measure.addFilterDataType(DataType.valueOf(type)); List<MeasurementDefinition> mylist = measurementDefinitionManagerRemote.findMeasurementDefinitionsByCriteria(baseRemote.getSubject(), measure); if (mylist.size() > 1) throw new RuntimeException("found more than one MeasurementDefinition [" + name + "] "); if (mylist.size() == 0) { logger.error("no schedule definition found [" + name + "," + displayName + "," + type + "," + resourceTypeName + "]"); return null; } else return mylist.get(0); } }