org.duracloud.mill.credentials.impl.DefaultCredentialsRepoImpl Maven / Gradle / Ivy
The newest version!
/*
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://duracloud.org/license/
*/
package org.duracloud.mill.credentials.impl;
import java.util.ArrayList;
import java.util.List;
import org.duracloud.account.db.model.AccountInfo;
import org.duracloud.account.db.model.AccountInfo.AccountStatus;
import org.duracloud.account.db.model.StorageProviderAccount;
import org.duracloud.account.db.repo.DuracloudAccountRepo;
import org.duracloud.mill.credentials.AccountCredentials;
import org.duracloud.mill.credentials.AccountCredentialsNotFoundException;
import org.duracloud.mill.credentials.CredentialsRepo;
import org.duracloud.mill.credentials.CredentialsRepoException;
import org.duracloud.mill.credentials.StorageProviderCredentials;
import org.duracloud.mill.credentials.StorageProviderCredentialsNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* A jpa-based implementation of the CredentialsRepo
.
*
* @author Daniel Bernstein
* Date: Oct 29, 2013
*/
@Component
public class DefaultCredentialsRepoImpl implements CredentialsRepo {
private DuracloudAccountRepo accountRepo;
/**
* @param client
* @param tablePrefix
*/
@Autowired
public DefaultCredentialsRepoImpl(DuracloudAccountRepo accountRepo) {
this.accountRepo = accountRepo;
}
@Override
public AccountCredentials getAccountCredentials(String account)
throws AccountCredentialsNotFoundException {
List creds = new ArrayList<>();
AccountInfo accountInfo = accountRepo.findBySubdomain(account);
if (accountInfo == null) {
throw new AccountCredentialsNotFoundException("no account found for subdomain " + account);
} else {
creds.add(createStorageProviderCredentials(accountInfo.getPrimaryStorageProviderAccount(), true));
for (StorageProviderAccount sp : accountInfo.getSecondaryStorageProviderAccounts()) {
creds.add(createStorageProviderCredentials(sp, false));
}
}
AccountCredentials accountCreds = new AccountCredentials(account, creds);
return accountCreds;
}
private StorageProviderCredentials createStorageProviderCredentials(StorageProviderAccount sp,
boolean primary) {
return createStorageProviderCredentials(sp.getId().toString(), sp, primary);
}
@Override
public List getActiveAccounts() throws CredentialsRepoException {
List accountInfos = accountRepo.findByStatus(AccountStatus.ACTIVE);
List subdomains = new ArrayList<>();
for (int i = accountInfos.size() - 1; i > -1; i--) {
subdomains.add(0, accountInfos.remove(i).getSubdomain());
}
return subdomains;
}
/*
* (non-Javadoc)
*
* @see
* org.duracloud.mill.credentials.CredentialRepo#getStorageProviderCredentials
* (java.lang.String, java.lang.String)
*/
@Override
public StorageProviderCredentials getStorageProviderCredentials(String subdomain, String storeId)
throws AccountCredentialsNotFoundException, StorageProviderCredentialsNotFoundException {
AccountInfo account = accountRepo.findBySubdomain(subdomain);
Long id = Long.valueOf(storeId);
if (account == null) {
throw new AccountCredentialsNotFoundException("no account found for subdomain " + subdomain);
} else {
StorageProviderAccount provider = account.getPrimaryStorageProviderAccount();
if (provider.getId().equals(id)) {
return createStorageProviderCredentials(storeId, provider, true);
} else {
for (StorageProviderAccount sp : account.getSecondaryStorageProviderAccounts()) {
if (sp.getId().equals(id)) {
return createStorageProviderCredentials(storeId, sp, false);
}
}
}
}
throw new StorageProviderCredentialsNotFoundException(
"No storage provider on subdomain " + subdomain
+ " with storeId " + storeId + " found.");
}
private StorageProviderCredentials createStorageProviderCredentials(String storeId,
StorageProviderAccount provider,
boolean primary) {
return new StorageProviderCredentials(storeId,
provider.getUsername(), provider.getPassword(),
provider.getProviderType(),
provider.getProperties(),
primary);
}
/* (non-Javadoc)
* @see org.duracloud.mill.credentials.CredentialsRepo#isAccountActive(java.lang.String)
*/
@Override
public boolean isAccountActive(String account) throws AccountCredentialsNotFoundException {
AccountInfo info = this.accountRepo.findBySubdomain(account);
if (info == null) {
throw new AccountCredentialsNotFoundException("no account found where accountId = " + account);
}
return info.getStatus().equals(AccountStatus.ACTIVE);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy