/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.smis.srdf; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.Volume; import com.emc.storageos.volumecontroller.impl.providerfinders.FindProviderFactory; import com.emc.storageos.volumecontroller.impl.smis.SmisCommandHelper; import com.emc.storageos.volumecontroller.impl.smis.srdf.collectors.CollectorFactory; /** * Created by bibbyi1 on 4/9/2015. */ public abstract class AbstractSRDFOperationContextFactory { protected DbClient dbClient; protected SmisCommandHelper helper; protected SRDFUtils utils; private FindProviderFactory findProviderFactory; private CollectorFactory collectorFactory; public enum SRDFOperation { SUSPEND, SUSPEND_CONS_EXEMPT, SPLIT, ESTABLISH, FAIL_OVER, RESTORE, SWAP, FAIL_BACK, DELETE_PAIR, DELETE_GROUP_PAIRS, FAIL_MECHANISM, RESET_TO_ADAPTIVE, RESET_TO_SYNC, RESET_TO_ASYNC } public void setDbClient(DbClient dbClient) { this.dbClient = dbClient; } public void setHelper(SmisCommandHelper helper) { this.helper = helper; } public void setUtils(SRDFUtils utils) { this.utils = utils; } public FindProviderFactory findProviderFactory() { if (findProviderFactory == null) { findProviderFactory = new FindProviderFactory(dbClient, helper); } return findProviderFactory; } public CollectorFactory collectorFactory() { if (collectorFactory == null) { collectorFactory = new CollectorFactory(dbClient, utils); } return collectorFactory; } public abstract SRDFOperationContext build(SRDFOperation operation, Volume target); }