/*
* Copyright (c) 2008-2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.api.service.impl.resource;
import static com.emc.storageos.api.mapper.BlockMapper.map;
import java.net.URI;
import java.util.Iterator;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.api.mapper.functions.MapUnmanagedExportMask;
import com.emc.storageos.api.service.impl.response.BulkList;
import com.emc.storageos.db.client.model.DataObject;
import com.emc.storageos.db.client.model.UnManagedDiscoveredObjects.UnManagedExportMask;
import com.emc.storageos.model.BulkIdParam;
import com.emc.storageos.model.ResourceTypeEnum;
import com.emc.storageos.model.block.UnManagedExportMaskBulkRep;
import com.emc.storageos.model.block.UnManagedExportMaskRestRep;
import com.emc.storageos.security.authorization.CheckPermission;
import com.emc.storageos.security.authorization.DefaultPermissions;
import com.emc.storageos.security.authorization.Role;
@Path("/vdc/unmanaged/export-masks")
@DefaultPermissions(readRoles = { Role.SYSTEM_ADMIN, Role.SYSTEM_MONITOR },
writeRoles = { Role.SYSTEM_ADMIN, Role.RESTRICTED_SYSTEM_ADMIN })
public class UnManagedExportMaskService extends TaggedResource {
private static final Logger _logger = LoggerFactory
.getLogger(UnManagedExportMaskService.class);
@Override
protected DataObject queryResource(URI id) {
ArgValidator.checkUri(id);
UnManagedExportMask unManagedExportMask = _dbClient.queryObject(UnManagedExportMask.class, id);
ArgValidator.checkEntityNotNull(unManagedExportMask, id, isIdEmbeddedInURL(id));
return unManagedExportMask;
}
@Override
protected URI getTenantOwner(URI id) {
return null;
}
@Override
protected ResourceTypeEnum getResourceType() {
return ResourceTypeEnum.UNMANAGED_EXPORT_MASKS;
}
@SuppressWarnings("unchecked")
@Override
public Class<UnManagedExportMask> getResourceClass() {
return UnManagedExportMask.class;
}
/**
* Show the details of an UnManagedExportMask.
*
* @param id the URN of a ViPR UnManagedExportMask
* @return UnManagedExportMaskRestRep
*/
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/{id}")
@CheckPermission(roles = { Role.SYSTEM_ADMIN, Role.SYSTEM_MONITOR })
public UnManagedExportMaskRestRep getUnManagedExportMaskInfo(@PathParam("id") URI id) {
UnManagedExportMask uem = _dbClient.queryObject(UnManagedExportMask.class, id);
ArgValidator.checkEntityNotNull(uem, id, isIdEmbeddedInURL(id));
return map(uem);
}
@POST
@Path("/bulk")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Override
public UnManagedExportMaskBulkRep getBulkResources(BulkIdParam param) {
return (UnManagedExportMaskBulkRep) super.getBulkResources(param);
}
@Override
public UnManagedExportMaskBulkRep queryBulkResourceReps(List<URI> ids) {
Iterator<UnManagedExportMask> _dbIterator = _dbClient.queryIterativeObjects(
UnManagedExportMask.class, ids);
return new UnManagedExportMaskBulkRep(BulkList.wrapping(_dbIterator, MapUnmanagedExportMask.getInstance()));
}
@Override
public UnManagedExportMaskBulkRep queryFilteredBulkResourceReps(List<URI> ids) {
verifySystemAdmin();
return queryBulkResourceReps(ids);
}
}