ApiInfoController.java

  1. package org.genesys.server.api.v2.impl;

  2. import io.swagger.annotations.Api;
  3. import org.genesys.server.api.ApiBaseController;
  4. import org.genesys.server.exception.SearchException;
  5. import org.genesys.server.model.PublishState;
  6. import org.genesys.server.model.filters.DatasetFilter;
  7. import org.genesys.server.model.filters.DescriptorFilter;
  8. import org.genesys.server.model.filters.DescriptorListFilter;
  9. import org.genesys.server.model.filters.PartnerFilter;
  10. import org.genesys.server.service.AccessionService;
  11. import org.genesys.server.service.DatasetService;
  12. import org.genesys.server.service.DescriptorListService;
  13. import org.genesys.server.service.DescriptorService;
  14. import org.genesys.server.service.InstituteService;
  15. import org.genesys.server.service.PartnerService;
  16. import org.genesys.server.service.SubsetService;
  17. import org.genesys.server.service.filter.AccessionFilter;
  18. import org.genesys.server.service.filter.SubsetFilter;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.security.access.prepost.PreAuthorize;
  22. import org.springframework.web.bind.annotation.RequestMapping;
  23. import org.springframework.web.bind.annotation.RequestMethod;
  24. import org.springframework.web.bind.annotation.RestController;

  25. /**
  26.  * Info API v2
  27.  */
  28. @RestController("infoApi2")
  29. @PreAuthorize("isAuthenticated()")
  30. @RequestMapping(ApiInfoController.CONTROLLER_URL)
  31. @Api(tags = { "api-info" })
  32. public class ApiInfoController {

  33.     public static final String CONTROLLER_URL = ApiBaseController.APIv2_BASE + "/info";

  34.     @Value("${build.version}")
  35.     private String version;

  36.     @Value("${build.artifactId}")
  37.     private String artifactId;

  38.     @Value("${build.revision}")
  39.     private String revision;

  40.     @Value("${base.url}")
  41.     private String baseUrl;

  42.     @Value("${cdn.servers}")
  43.     private String[] cdnServers;

  44.     @Value("${captcha.siteKey}")
  45.     private String captchaSiteKey;

  46.     @Value("${google.analytics.account}")
  47.     private String googleAnalyticsId;

  48.     @Value("${itpgrfa.glis.basepath}")
  49.     private String glisUrl;

  50.     @Value("${frontend.url}")
  51.     private String frontendUrl;

  52.     @Autowired
  53.     private AccessionService accessionService;
  54.     @Autowired
  55.     private DatasetService datasetService;
  56.     @Autowired
  57.     private SubsetService subsetService;
  58.     @Autowired
  59.     private InstituteService instituteService;
  60.     @Autowired
  61.     private DescriptorService descriptorService;
  62.     @Autowired
  63.     private DescriptorListService descriptorListService;
  64.     @Autowired
  65.     private PartnerService partnerService;

  66.     /**
  67.      * Api info.
  68.      *
  69.      * @return the api info
  70.      */
  71.     @RequestMapping(value = "/version", method = RequestMethod.GET)
  72.     public ApiInfo apiInfo() throws SearchException {
  73.        ApiInfo apiInfo = new ApiInfo();
  74.         apiInfo.version = this.version;
  75.         apiInfo.artifactId = this.artifactId;
  76.         apiInfo.revision = this.revision;
  77.         apiInfo.cdnServers = this.cdnServers;
  78.         apiInfo.baseUrl = this.baseUrl;
  79.         apiInfo.publicWebsiteUrl = this.frontendUrl;
  80.         apiInfo.accessionCount = accessionService.countAccessions(new AccessionFilter().historic(false));
  81.         apiInfo.datasetCount = datasetService.countDatasets(new DatasetFilter().state(PublishState.PUBLISHED).current(true));
  82.         apiInfo.subsetCount = subsetService.countSubsets(new SubsetFilter().state(PublishState.PUBLISHED).current(true));
  83.         apiInfo.instituteCount = instituteService.countActive();
  84.         apiInfo.descriptorCount = descriptorService.countDescriptors(new DescriptorFilter().state(PublishState.PUBLISHED));
  85.         apiInfo.descriptorListCount = descriptorListService.countDescriptorLists(new DescriptorListFilter().state(PublishState.PUBLISHED));
  86.         apiInfo.partnerCount = partnerService.countPartners(new PartnerFilter());
  87.         apiInfo.captchaSiteKey = this.captchaSiteKey;
  88.         apiInfo.googleAnalyticsId = this.googleAnalyticsId;
  89.         apiInfo.glisUrl = this.glisUrl;

  90.         return apiInfo;
  91.     }

  92.     /**
  93.      * The Class ApiInfo.
  94.      */
  95.     public static class ApiInfo {
  96.         public String artifactId;
  97.         public String version;
  98.         public String revision;
  99.         public String baseUrl;
  100.         public String publicWebsiteUrl;

  101.         public String[] cdnServers;
  102.         public long instituteCount;
  103.         public long accessionCount;
  104.         public long datasetCount;
  105.         public long subsetCount;
  106.         public long descriptorListCount;
  107.         public long descriptorCount;
  108.         public long partnerCount;
  109.         public String captchaSiteKey;
  110.         public String googleAnalyticsId;
  111.         public String glisUrl;
  112.     }

  113. }