/* * Copyright (c) 2012 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.plugins.discovery.smis; import java.io.Serializable; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.DataObject; import com.emc.storageos.exceptions.DeviceControllerException; import com.emc.storageos.svcs.errorhandling.model.ServiceCoded; import com.emc.storageos.volumecontroller.impl.ControllerServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Jobs for Metering. */ public class DataCollectionMeteringJob extends DataCollectionJob implements Serializable { private static final long serialVersionUID = 6949883905186395658L; private static final Logger logger = LoggerFactory .getLogger(DataCollectionMeteringJob.class); private final DataCollectionTaskCompleter _completer; public DataCollectionMeteringJob(MeteringTaskCompleter completer) { super(JobOrigin.USER_API); _completer = completer; } DataCollectionMeteringJob(DataCollectionTaskCompleter completer, JobOrigin origin) { super(origin); _completer = completer; } @Override public DataCollectionTaskCompleter getCompleter() { return _completer; } @Override public void ready(DbClient dbClient) throws DeviceControllerException { _completer.ready(dbClient); } @Override public void error(DbClient dbClient, ServiceCoded serviceCoded) throws DeviceControllerException { _completer.error(dbClient, serviceCoded); } @Override public void schedule(DbClient dbClient) { _completer.schedule(dbClient); } @Override final public void setTaskError(DbClient dbClient, ServiceCoded code) { _completer.statusError(dbClient, code); } @Override final public void setTaskReady(DbClient dbClient, String message) { _completer.statusReady(dbClient, message); } @Override final public void updateTask(DbClient dbClient, String message) { _completer.statusPending(dbClient, message); } public String getType() { return ControllerServiceImpl.METERING; } public String systemString() { String sys = null; try { sys = _completer.getId().toString(); } catch (Exception ex) { logger.error("Exception occurred while getting system id from completer", ex); } return sys; } public boolean isActiveJob(DbClient dbClient) { DataObject dbObject = dbClient.queryObject(_completer.getType(), _completer.getId()); return (dbObject != null && !dbObject.getInactive()) ? true : false; } }