Commit f8b32747 authored by Matija Obreza's avatar Matija Obreza

Updated `countZzzz` by model filter methods

parent 66c2a304
...@@ -17,6 +17,7 @@ package org.genesys.catalog.model.filters; ...@@ -17,6 +17,7 @@ package org.genesys.catalog.model.filters;
import static org.genesys.catalog.model.dataset.QDataset.dataset; import static org.genesys.catalog.model.dataset.QDataset.dataset;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -124,4 +125,14 @@ public class DatasetFilter extends UuidModelFilter<DatasetFilter, Dataset> { ...@@ -124,4 +125,14 @@ public class DatasetFilter extends UuidModelFilter<DatasetFilter, Dataset> {
return and; return and;
} }
public DatasetFilter state(PublishState... state) {
if (this.state == null) {
this.state = new HashSet<>();
}
for (PublishState s : state) {
this.state.add(s);
}
return this;
}
} }
...@@ -17,6 +17,7 @@ package org.genesys.catalog.model.filters; ...@@ -17,6 +17,7 @@ package org.genesys.catalog.model.filters;
import static org.genesys.catalog.model.traits.QDescriptor.descriptor; import static org.genesys.catalog.model.traits.QDescriptor.descriptor;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
...@@ -171,4 +172,14 @@ public class DescriptorFilter extends UuidModelFilter<DescriptorFilter, Descript ...@@ -171,4 +172,14 @@ public class DescriptorFilter extends UuidModelFilter<DescriptorFilter, Descript
return and; return and;
} }
public DescriptorFilter state(PublishState... state) {
if (this.state == null) {
this.state = new HashSet<>();
}
for (PublishState s : state) {
this.state.add(s);
}
return this;
}
} }
...@@ -245,11 +245,12 @@ public interface DatasetService { ...@@ -245,11 +245,12 @@ public interface DatasetService {
Dataset updateDatasetFile(Dataset dataset, RepositoryFile metadata) throws NoSuchRepositoryFileException; Dataset updateDatasetFile(Dataset dataset, RepositoryFile metadata) throws NoSuchRepositoryFileException;
/** /**
* Count the number of published datasets * Count the number of published datasets.
* *
* @param filter the filter
* @return the number of published datasets * @return the number of published datasets
*/ */
long countPublished(); long countDatasets(DatasetFilter filter);
/** /**
* Load data about last published datasets. * Load data about last published datasets.
......
...@@ -174,9 +174,10 @@ public interface DescriptorService { ...@@ -174,9 +174,10 @@ public interface DescriptorService {
void exportDescriptors(DescriptorFilter filter, OutputStream outputStream) throws IOException; void exportDescriptors(DescriptorFilter filter, OutputStream outputStream) throws IOException;
/** /**
* Cont published descriptors * Count published descriptors.
* *
* @param filter the filter
* @return the number of published descriptors * @return the number of published descriptors
*/ */
long countPublished(); long countDescriptors(DescriptorFilter filter);
} }
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
*/ */
package org.genesys.catalog.service.impl; package org.genesys.catalog.service.impl;
import static org.genesys.catalog.model.dataset.QDataset.*; import static org.genesys.catalog.model.dataset.QDataset.dataset;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Paths; import java.nio.file.Paths;
...@@ -267,8 +267,16 @@ public class DatasetServiceImpl implements DatasetService { ...@@ -267,8 +267,16 @@ public class DatasetServiceImpl implements DatasetService {
@Override @Override
public Page<Dataset> listDatasets(final DatasetFilter filter, final Pageable page) { public Page<Dataset> listDatasets(final DatasetFilter filter, final Pageable page) {
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title");
Page res = datasetRepository.findAll(new BooleanBuilder().and(filter.buildQuery()).and(QDataset.dataset.state.in(PublishState.PUBLISHED)), markdownSortPageRequest); Page<Dataset> res = datasetRepository.findAll(new BooleanBuilder().and(filter.buildQuery()).and(QDataset.dataset.state.in(PublishState.PUBLISHED)), markdownSortPageRequest);
return new PageImpl<Dataset>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
}
/**
* {@inheritDoc}
*/
@Override
public long countDatasets(DatasetFilter filter) {
return datasetRepository.count(filter.buildQuery());
} }
/** /**
...@@ -278,13 +286,13 @@ public class DatasetServiceImpl implements DatasetService { ...@@ -278,13 +286,13 @@ public class DatasetServiceImpl implements DatasetService {
public Page<Dataset> listDatasetsForCurrentUser(final DatasetFilter filter, final Pageable page) { public Page<Dataset> listDatasetsForCurrentUser(final DatasetFilter filter, final Pageable page) {
if (securityUtils.hasRole(UserRole.ADMINISTRATOR)) { if (securityUtils.hasRole(UserRole.ADMINISTRATOR)) {
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title");
Page res = datasetRepository.findAll(filter.buildQuery(), markdownSortPageRequest); Page<Dataset> res = datasetRepository.findAll(filter.buildQuery(), markdownSortPageRequest);
return new PageImpl<Dataset>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} else { } else {
final HashSet<Long> partners = new HashSet<>(securityUtils.listObjectIdentityIdsForCurrentUser(Partner.class, BasePermission.WRITE)); final HashSet<Long> partners = new HashSet<>(securityUtils.listObjectIdentityIdsForCurrentUser(Partner.class, BasePermission.WRITE));
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title");
Page res = datasetRepository.findAll(dataset.owner.id.in(partners).and(filter.buildQuery()), markdownSortPageRequest); Page<Dataset> res = datasetRepository.findAll(dataset.owner.id.in(partners).and(filter.buildQuery()), markdownSortPageRequest);
return new PageImpl<Dataset>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} }
} }
...@@ -528,14 +536,6 @@ public class DatasetServiceImpl implements DatasetService { ...@@ -528,14 +536,6 @@ public class DatasetServiceImpl implements DatasetService {
return lazyLoad(datasetRepository.save(loaded)); return lazyLoad(datasetRepository.save(loaded));
} }
/**
* {@inheritDoc}
*/
@Override
public long countPublished() {
return datasetRepository.count(dataset.state.in(PublishState.PUBLISHED));
}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
......
...@@ -26,7 +26,6 @@ import java.util.UUID; ...@@ -26,7 +26,6 @@ import java.util.UUID;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import com.querydsl.core.types.Predicate;
import org.genesys.catalog.exceptions.InvalidApiUsageException; import org.genesys.catalog.exceptions.InvalidApiUsageException;
import org.genesys.catalog.exceptions.NotFoundElement; import org.genesys.catalog.exceptions.NotFoundElement;
import org.genesys.catalog.model.Partner; import org.genesys.catalog.model.Partner;
...@@ -62,6 +61,7 @@ import org.springframework.stereotype.Service; ...@@ -62,6 +61,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.querydsl.core.BooleanBuilder; import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Predicate;
/** /**
* The Class DescriptorServiceImpl. * The Class DescriptorServiceImpl.
...@@ -226,13 +226,13 @@ public class DescriptorServiceImpl implements DescriptorService { ...@@ -226,13 +226,13 @@ public class DescriptorServiceImpl implements DescriptorService {
public Page<Descriptor> listDescriptorsForCurrentUser(final DescriptorFilter filter, final Pageable page) { public Page<Descriptor> listDescriptorsForCurrentUser(final DescriptorFilter filter, final Pageable page) {
if (securityUtils.hasRole(UserRole.ADMINISTRATOR)) { if (securityUtils.hasRole(UserRole.ADMINISTRATOR)) {
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title");
Page res = descriptorRepository.findAll(filter.buildQuery(), markdownSortPageRequest); Page<Descriptor> res = descriptorRepository.findAll(filter.buildQuery(), markdownSortPageRequest);
return new PageImpl<Descriptor>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} else { } else {
final HashSet<Long> partners = new HashSet<>(securityUtils.listObjectIdentityIdsForCurrentUser(Partner.class, BasePermission.WRITE)); final HashSet<Long> partners = new HashSet<>(securityUtils.listObjectIdentityIdsForCurrentUser(Partner.class, BasePermission.WRITE));
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title");
Page res = descriptorRepository.findAll(descriptor.owner.id.in(partners).and(filter.buildQuery()), markdownSortPageRequest); Page<Descriptor> res = descriptorRepository.findAll(descriptor.owner.id.in(partners).and(filter.buildQuery()), markdownSortPageRequest);
return new PageImpl<Descriptor>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} }
} }
...@@ -242,8 +242,8 @@ public class DescriptorServiceImpl implements DescriptorService { ...@@ -242,8 +242,8 @@ public class DescriptorServiceImpl implements DescriptorService {
@Override @Override
public Page<Descriptor> listDescriptors(final DescriptorFilter descriptorFilter, final Pageable page) { public Page<Descriptor> listDescriptors(final DescriptorFilter descriptorFilter, final Pageable page) {
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "title");
Page res = descriptorRepository.findAll(new BooleanBuilder().and(descriptorFilter.buildQuery()).and(QDescriptor.descriptor.state.in(PublishState.PUBLISHED)), markdownSortPageRequest); Page<Descriptor> res = descriptorRepository.findAll(new BooleanBuilder().and(descriptorFilter.buildQuery()).and(QDescriptor.descriptor.state.in(PublishState.PUBLISHED)), markdownSortPageRequest);
return new PageImpl<Descriptor>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} }
/** /**
...@@ -458,8 +458,8 @@ public class DescriptorServiceImpl implements DescriptorService { ...@@ -458,8 +458,8 @@ public class DescriptorServiceImpl implements DescriptorService {
} }
@Override @Override
public long countPublished() { public long countDescriptors(DescriptorFilter filter) {
return descriptorRepository.count(descriptor.state.eq(PublishState.PUBLISHED)); return descriptorRepository.count(filter.buildQuery());
} }
} }
...@@ -26,7 +26,6 @@ import org.genesys.catalog.persistence.PartnerRepository; ...@@ -26,7 +26,6 @@ import org.genesys.catalog.persistence.PartnerRepository;
import org.genesys.catalog.service.PartnerService; import org.genesys.catalog.service.PartnerService;
import org.genesys2.server.model.UserRole; import org.genesys2.server.model.UserRole;
import org.genesys2.server.security.SecurityUtils; import org.genesys2.server.security.SecurityUtils;
import org.genesys2.server.service.ElasticsearchService;
import org.genesys2.util.JPAUtils; import org.genesys2.util.JPAUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -59,9 +58,6 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean { ...@@ -59,9 +58,6 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean {
@Autowired @Autowired
private SecurityUtils securityUtils; private SecurityUtils securityUtils;
@Autowired
private ElasticsearchService elasticsearchService;
@Value("${partner.primary.uuid}") @Value("${partner.primary.uuid}")
private UUID primaryPartnerUuid; private UUID primaryPartnerUuid;
...@@ -147,13 +143,13 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean { ...@@ -147,13 +143,13 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean {
public Page<Partner> listPartnersForCurrentUser(final PartnerFilter filter, final Pageable page) { public Page<Partner> listPartnersForCurrentUser(final PartnerFilter filter, final Pageable page) {
if (securityUtils.hasRole(UserRole.ADMINISTRATOR)) { if (securityUtils.hasRole(UserRole.ADMINISTRATOR)) {
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "name"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "name");
Page res = partnerRepository.findAll(filter.buildQuery(), markdownSortPageRequest); Page<Partner> res = partnerRepository.findAll(filter.buildQuery(), markdownSortPageRequest);
return new PageImpl<Partner>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} else { } else {
final HashSet<Long> ids = new HashSet<>(securityUtils.listObjectIdentityIdsForCurrentUser(Partner.class, BasePermission.WRITE)); final HashSet<Long> ids = new HashSet<>(securityUtils.listObjectIdentityIdsForCurrentUser(Partner.class, BasePermission.WRITE));
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "name"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "name");
Page res = partnerRepository.findAll(partner.id.in(ids).and(filter.buildQuery()), markdownSortPageRequest); Page<Partner> res = partnerRepository.findAll(partner.id.in(ids).and(filter.buildQuery()), markdownSortPageRequest);
return new PageImpl<Partner>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} }
} }
...@@ -163,8 +159,8 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean { ...@@ -163,8 +159,8 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean {
@Override @Override
public Page<Partner> listPartners(final PartnerFilter partnerFilter, final Pageable page) { public Page<Partner> listPartners(final PartnerFilter partnerFilter, final Pageable page) {
Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "name"); Pageable markdownSortPageRequest = JPAUtils.toMarkdownSort(page, "name");
Page res = partnerRepository.findAll(partnerFilter.buildQuery(), markdownSortPageRequest); Page<Partner> res = partnerRepository.findAll(partnerFilter.buildQuery(), markdownSortPageRequest);
return new PageImpl<Partner>(res.getContent(), page, res.getTotalElements()); return new PageImpl<>(res.getContent(), page, res.getTotalElements());
} }
/** /**
...@@ -226,14 +222,7 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean { ...@@ -226,14 +222,7 @@ public class PartnerServiceImpl implements PartnerService, InitializingBean {
@Override @Override
public long countPartners(PartnerFilter filter) { public long countPartners(PartnerFilter filter) {
long total = elasticsearchService.count(Partner.class, filter); return partnerRepository.count(filter.buildQuery());
if (total < 10000) {
// If total is below 10K, use actual count
total = partnerRepository.count(filter.buildQuery());
}
return total;
} }
/** /**
......
package org.genesys2.server.api.v1; package org.genesys2.server.api.v1;
import io.swagger.annotations.Api; import org.genesys.catalog.model.filters.DatasetFilter;
import org.genesys.catalog.model.filters.DescriptorFilter;
import org.genesys.catalog.model.filters.PartnerFilter; import org.genesys.catalog.model.filters.PartnerFilter;
import org.genesys.catalog.service.DatasetService; import org.genesys.catalog.service.DatasetService;
import org.genesys.catalog.service.DescriptorService; import org.genesys.catalog.service.DescriptorService;
import org.genesys.catalog.service.PartnerService; import org.genesys.catalog.service.PartnerService;
import org.genesys2.server.api.ApiBaseController; import org.genesys2.server.api.ApiBaseController;
import org.genesys2.server.model.PublishState;
import org.genesys2.server.service.AccessionService; import org.genesys2.server.service.AccessionService;
import org.genesys2.server.service.InstituteService; import org.genesys2.server.service.InstituteService;
import org.genesys2.server.service.SubsetService; import org.genesys2.server.service.SubsetService;
import org.genesys2.server.service.filter.AccessionFilter; import org.genesys2.server.service.filter.AccessionFilter;
import org.slf4j.Logger; import org.genesys2.server.service.filter.SubsetFilter;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
...@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.net.UnknownHostException; import io.swagger.annotations.Api;
/** /**
* Accession API v1 * Accession API v1
...@@ -31,8 +31,6 @@ import java.net.UnknownHostException; ...@@ -31,8 +31,6 @@ import java.net.UnknownHostException;
@Api(tags = { "api-info" }) @Api(tags = { "api-info" })
public class ApiInfoController { public class ApiInfoController {
private static final Logger LOG = LoggerFactory.getLogger(ApiInfoController.class);
public static final String CONTROLLER_URL = ApiBaseController.APIv1_BASE + "/info"; public static final String CONTROLLER_URL = ApiBaseController.APIv1_BASE + "/info";
@Value("${build.version}") @Value("${build.version}")
...@@ -44,6 +42,9 @@ public class ApiInfoController { ...@@ -44,6 +42,9 @@ public class ApiInfoController {
@Value("${build.revision}") @Value("${build.revision}")
private String revision; private String revision;
@Value("${base.url}")
private String baseUrl;
@Value("${cdn.servers}") @Value("${cdn.servers}")
private String[] cdnServers; private String[] cdnServers;
...@@ -67,25 +68,17 @@ public class ApiInfoController { ...@@ -67,25 +68,17 @@ public class ApiInfoController {
*/ */
@RequestMapping(value = "/version", method = RequestMethod.GET) @RequestMapping(value = "/version", method = RequestMethod.GET)
public ApiInfo apiInfo() { public ApiInfo apiInfo() {
String hN; ApiInfo apiInfo = new ApiInfo();
try {
hN = java.net.InetAddress.getLocalHost().getHostName();
} catch (final UnknownHostException e) {
LOG.error("Error getting Host Name");
hN = "";
}
ApiInfo apiInfo = new ApiInfo();
apiInfo.version = this.version; apiInfo.version = this.version;
apiInfo.artifactId = this.artifactId; apiInfo.artifactId = this.artifactId;
apiInfo.revision = this.revision; apiInfo.revision = this.revision;
apiInfo.cdnServers = this.cdnServers; apiInfo.cdnServers = this.cdnServers;
apiInfo.hostName = hN; apiInfo.baseUrl = this.baseUrl;
apiInfo.accessionCount = accessionService.countAccessions(new AccessionFilter()); apiInfo.accessionCount = accessionService.countAccessions(new AccessionFilter().historic(false));
apiInfo.datasetCount = datasetService.countPublished(); apiInfo.datasetCount = datasetService.countDatasets(new DatasetFilter().state(PublishState.PUBLISHED));
apiInfo.subsetCount = subsetService.countPublished(); apiInfo.subsetCount = subsetService.countSubsets(new SubsetFilter().state(PublishState.PUBLISHED));
apiInfo.instituteCount = instituteService.countActive(); apiInfo.instituteCount = instituteService.countActive();
apiInfo.descriptorCount = descriptorService.countPublished(); apiInfo.descriptorCount = descriptorService.countDescriptors(new DescriptorFilter().state(PublishState.PUBLISHED));
apiInfo.partnerCount = partnerService.countPartners(new PartnerFilter()); apiInfo.partnerCount = partnerService.countPartners(new PartnerFilter());
return apiInfo; return apiInfo;
...@@ -98,7 +91,7 @@ public class ApiInfoController { ...@@ -98,7 +91,7 @@ public class ApiInfoController {
public String artifactId; public String artifactId;
public String version; public String version;
public String revision; public String revision;
public String hostName; public String baseUrl;
public String[] cdnServers; public String[] cdnServers;
public long accessionCount; public long accessionCount;
......
...@@ -43,11 +43,12 @@ public interface SubsetService { ...@@ -43,11 +43,12 @@ public interface SubsetService {
Page<Subset> list(SubsetFilter filter, Pageable page); Page<Subset> list(SubsetFilter filter, Pageable page);
/** /**
* Cont published subsets * Count published subsets.
* *
* @param filter the filter
* @return the number of published subsets * @return the number of published subsets
*/ */
long countPublished(); long countSubsets(SubsetFilter filter);
/** /**
* List current user's subsets matching the filter. * List current user's subsets matching the filter.
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
*/ */
package org.genesys2.server.service.filter; package org.genesys2.server.service.filter;
import static org.genesys2.server.model.genesys.QAccession.*; import static org.genesys2.server.model.genesys.QAccession.accession;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
...@@ -169,4 +169,9 @@ public class AccessionFilter extends UuidModelFilter<AccessionFilter, Accession> ...@@ -169,4 +169,9 @@ public class AccessionFilter extends UuidModelFilter<AccessionFilter, Accession>
} }
} }
public AccessionFilter historic(Boolean historic) {
this.historic = historic;
return this;
}
} }
...@@ -17,6 +17,7 @@ package org.genesys2.server.service.filter; ...@@ -17,6 +17,7 @@ package org.genesys2.server.service.filter;
import static org.genesys2.server.model.impl.QSubset.subset; import static org.genesys2.server.model.impl.QSubset.subset;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.genesys.blocks.model.filters.StringFilter; import org.genesys.blocks.model.filters.StringFilter;
...@@ -93,4 +94,14 @@ public class SubsetFilter extends UuidModelFilter<SubsetFilter, Subset> { ...@@ -93,4 +94,14 @@ public class SubsetFilter extends UuidModelFilter<SubsetFilter, Subset> {
} }
return and; return and;
} }
public SubsetFilter state(PublishState ... state) {
if (this.state == null) {
this.state = new HashSet<>();
}
for (PublishState s : state) {
this.state.add(s);
}
return this;
}
} }
...@@ -16,10 +16,12 @@ ...@@ -16,10 +16,12 @@
package org.genesys2.server.service.impl; package org.genesys2.server.service.impl;
import org.genesys2.server.model.PublishState;
import org.genesys2.server.model.genesys.PDCIStatistics; import org.genesys2.server.model.genesys.PDCIStatistics;
import org.genesys2.server.model.genesys.PhenoStatistics; import org.genesys2.server.model.genesys.PhenoStatistics;
import org.genesys2.server.model.impl.FaoInstitute; import org.genesys2.server.model.impl.FaoInstitute;
import org.genesys2.server.model.impl.Organization; import org.genesys2.server.model.impl.Organization;