/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.catalog;
import java.net.URI;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.emc.storageos.db.client.model.uimodels.ApprovalRequest;
import com.emc.storageos.db.client.model.uimodels.ApprovalStatus;
import com.emc.sa.model.dao.ModelClient;
import com.emc.storageos.security.authentication.StorageOSUser;
@Component
public class ApprovalManagerImpl implements ApprovalManager {
private static final Logger log = Logger.getLogger(ApprovalManagerImpl.class);
@Autowired
private ModelClient client;
public ApprovalRequest getApprovalById(URI id) {
if (id == null) {
return null;
}
ApprovalRequest approval = client.approvalRequests().findById(id);
return approval;
}
public List<ApprovalRequest> getApprovals(URI tenantId) {
return client.approvalRequests().findAll(tenantId.toString());
}
public List<ApprovalRequest> findApprovalsByStatus(URI tenantId, ApprovalStatus approvalStatus) {
return client.approvalRequests().findByApprovalStatus(tenantId.toString(), approvalStatus);
}
public List<ApprovalRequest> findApprovalsByOrderId(URI orderId) {
return client.approvalRequests().findByOrderId(orderId);
}
public ApprovalRequest findFirstApprovalsByOrderId(URI orderId) {
List<ApprovalRequest> apporvalRequests = client.approvalRequests().findByOrderId(orderId);
if (apporvalRequests != null && !apporvalRequests.isEmpty()) {
return apporvalRequests.get(0);
}
return null;
}
public void createApproval(ApprovalRequest approval) {
client.save(approval);
}
public void updateApproval(ApprovalRequest approval, StorageOSUser user) {
approval.setDateActioned(new Date());
if (approval.approved() || approval.rejected()) {
approval.setApprovedBy(user.getUserName());
}
client.save(approval);
}
public void deleteApproval(ApprovalRequest approval) {
client.delete(approval);
}
}