/*
* Copyright (c) 2008-2012 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.client.model;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.constraint.AlternateIdConstraint;
import com.emc.storageos.db.client.impl.TypeMap;
import java.net.URI;
import java.util.List;
/**
* @class DisposedObject
* Many elements of the system run discovery task trying to identify external resources automatically.
* User might want to exclude some of this resources and place them outside the Array Management System.
* We need to
* There is a requirements for the system to remove
*/
@Cf("DecommissionedResource")
public class DecommissionedResource extends DataObject {
protected String _user;
protected String _type;
protected String _nativeGuid;
protected URI _decommissionedId;
@Name("user")
public String getUser() {
return _user;
}
public void setUser(String user) {
_user = user;
setChanged("user");
}
@Name("type")
public String getType() {
return _type;
}
public void setType(String type) {
_type = type;
setChanged("type");
}
@Name("nativeGuid")
@AlternateId("AltIdIndex")
public String getNativeGuid() {
return _nativeGuid;
}
public void setNativeGuid(String nativeGuid) {
_nativeGuid = nativeGuid;
setChanged("nativeGuid");
}
@Name("decommissionedId")
@AlternateId("AltIdIndex")
public URI getDecommissionedId() {
return _decommissionedId;
}
public void setDecommissionedId(URI disposedId) {
_decommissionedId = disposedId;
setChanged("decommissionedId");
}
public static boolean checkDecommissioned(DbClient dbClient, URI id) {
List<URI> oldResources = dbClient.queryByConstraint(AlternateIdConstraint.Factory.getDecommissionedResourceIDConstraint(id
.toString()));
if (oldResources != null)
{
List<DecommissionedResource> objects = dbClient.queryObject(DecommissionedResource.class, oldResources);
for (DecommissionedResource decomObj : objects) {
if (!decomObj.getInactive()) {
return true;
}
}
}
return false;
}
public static boolean checkDecommissioned(DbClient dbClient, String nativeGuid, Class<? extends DataObject> type) {
List<URI> oldResources = dbClient.queryByConstraint(AlternateIdConstraint.Factory
.getDecommissionedResourceNativeGuidConstraint(nativeGuid));
if (oldResources != null)
{
List<DecommissionedResource> objects = dbClient.queryObject(DecommissionedResource.class, oldResources);
for (DecommissionedResource decomObj : objects) {
if (decomObj.getType().equalsIgnoreCase(TypeMap.getCFName(type)) &&
!decomObj.getInactive()) {
return true;
}
}
}
return false;
}
public static int removeDecommissionedFlag(DbClient dbClient, String nativeGuid, Class<? extends DataObject> type) {
List<URI> oldResources = dbClient.queryByConstraint(AlternateIdConstraint.Factory
.getDecommissionedResourceNativeGuidConstraint(nativeGuid));
int cleared = 0;
if (oldResources != null)
{
List<DecommissionedResource> objects = dbClient.queryObject(DecommissionedResource.class, oldResources);
for (DecommissionedResource decomObj : objects) {
if (decomObj.getType().equalsIgnoreCase(TypeMap.getCFName(type)) &&
!decomObj.getInactive()) {
decomObj.setInactive(true);
cleared++;
}
}
dbClient.persistObject(objects);
}
return cleared;
}
}