SystemStatusController.java
/*
* Copyright 2020 Global Crop Diversity Trust
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gringlobal.api.v1.impl;
import org.apache.commons.lang3.StringUtils;
import org.genesys.blocks.oauth.persistence.OAuthClientRepository;
import org.genesys.blocks.security.SecurityContextUtil;
import org.gringlobal.api.v1.ApiBaseController;
import org.gringlobal.persistence.AccessionRepository;
import org.gringlobal.persistence.GeographyRepository;
import org.gringlobal.persistence.InventoryRepository;
import org.gringlobal.persistence.SysUserRepository;
import org.gringlobal.persistence.TaxonomySpeciesRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.v3.oas.annotations.tags.Tag;
@RestController("statusApi1")
@RequestMapping(SystemStatusController.API_URL)
@PreAuthorize("isAuthenticated()")
@Tag(name = "Status")
public class SystemStatusController {
/** The Constant API_URL. */
public static final String API_URL = ApiBaseController.APIv1_BASE + "/status";
@Value("${captcha.enabled}")
private Boolean captchaEnabled;
@Value("${mail.host}")
private String mailHost;
@Autowired
private OAuthClientRepository oauthClientRepository;
@Autowired
private SysUserRepository sysUserRepository;
@Autowired
private GeographyRepository geographyRepository;
@Autowired
private TaxonomySpeciesRepository taxonomySpeciesRepository;
@Autowired
private AccessionRepository accessionRepository;
@Autowired
private InventoryRepository inventoryRepository;
@GetMapping
public SystemStatus getSystemStatus() {
SystemStatus status = new SystemStatus();
status.userCount = sysUserRepository.count();
status.speciesCount = taxonomySpeciesRepository.count();
status.accessionCount = accessionRepository.count();
status.geographyCount = geographyRepository.count();
status.inventoryCount = inventoryRepository.count();
if (captchaEnabled) {
var oAuthClient = oauthClientRepository.findByClientId(SecurityContextUtil.getOAuthClientId());
if (oAuthClient != null) {
status.captchaSiteKey = oAuthClient.getPublicRecaptchaKey();
}
}
status.smtpEnabled = StringUtils.isNotBlank(mailHost);
return status;
}
public static class SystemStatus {
public long userCount;
public long speciesCount;
public long accessionCount;
public long geographyCount;
public long inventoryCount;
public String captchaSiteKey;
public boolean smtpEnabled;
}
}