use of io.apiman.manager.api.beans.orgs.OrganizationBean in project apiman by apiman.
the class JpaStorage method findPlans.
/**
* {@inheritDoc}
*/
@Override
public SearchResultsBean<PlanSummaryBean> findPlans(String organizationId, SearchCriteriaBean criteria, PermissionConstraint permissionConstraint) throws StorageException {
Consumer<CriteriaBuilder<PlanBean>> constraintFunc = builder -> {
};
if (permissionConstraint.isConstrained()) {
constraintFunc = builder -> builder.whereOr().where("plan.organization.id").in(permissionConstraint.getPermittedOrgs()).where("plan.id").in().from(DiscoverabilityEntity.class, "d").select("d.planId").where("d.orgId").eq(organizationId).where("d.planId").isNotNull().where("d.discoverability").in(permissionConstraint.getAllowedDiscoverabilities()).end().endOr();
}
SearchResultsBean<PlanBean> result = find(criteria, List.of(new OrderByBean(true, PlanBean_.ID), new OrderByBean(true, "organization.id")), constraintFunc, PlanBean.class, "plan", true);
// TODO(msavy): replace with projection or mapping
SearchResultsBean<PlanSummaryBean> rval = new SearchResultsBean<>();
rval.setTotalSize(result.getTotalSize());
List<PlanBean> plans = result.getBeans();
rval.setBeans(new ArrayList<>(plans.size()));
for (PlanBean plan : plans) {
PlanSummaryBean summary = new PlanSummaryBean();
OrganizationBean organization = plan.getOrganization();
summary.setId(plan.getId());
summary.setName(plan.getName());
summary.setDescription(plan.getDescription());
summary.setOrganizationId(plan.getOrganization().getId());
summary.setOrganizationName(organization.getName());
rval.getBeans().add(summary);
}
return rval;
}
use of io.apiman.manager.api.beans.orgs.OrganizationBean in project apiman by apiman.
the class JpaStorage method getApiRegistry.
/**
* {@inheritDoc}
*/
@Override
public ApiRegistryBean getApiRegistry(String organizationId, String clientId, String version) throws StorageException {
ApiRegistryBean rval = new ApiRegistryBean();
try {
EntityManager entityManager = getActiveEntityManager();
String jpql = "SELECT c from ContractBean c " + " JOIN c.client clientv " + " JOIN clientv.client client " + " JOIN client.organization aorg" + " WHERE client.id = :clientId " + " AND aorg.id = :orgId " + " AND clientv.version = :version " + " ORDER BY c.id ASC";
TypedQuery<ContractBean> query = entityManager.createQuery(jpql, ContractBean.class).setParameter("orgId", organizationId).setParameter("clientId", clientId).setParameter("version", version);
List<ContractBean> contracts = query.getResultList();
for (ContractBean contractBean : contracts) {
ApiVersionBean svb = contractBean.getApi();
ApiBean api = svb.getApi();
PlanBean plan = contractBean.getPlan().getPlan();
OrganizationBean apiOrg = api.getOrganization();
ApiEntryBean entry = new ApiEntryBean();
entry.setApiId(api.getId());
entry.setApiName(api.getName());
entry.setApiOrgId(apiOrg.getId());
entry.setApiOrgName(apiOrg.getName());
entry.setApiVersion(svb.getVersion());
entry.setPlanId(plan.getId());
entry.setPlanName(plan.getName());
entry.setPlanVersion(contractBean.getPlan().getVersion());
Set<ApiGatewayBean> gateways = svb.getGateways();
if (gateways != null && !gateways.isEmpty()) {
ApiGatewayBean sgb = gateways.iterator().next();
entry.setGatewayId(sgb.getGatewayId());
}
rval.getApis().add(entry);
}
} catch (Throwable t) {
LOGGER.error(t.getMessage(), t);
throw new StorageException(t);
}
return rval;
}
use of io.apiman.manager.api.beans.orgs.OrganizationBean in project apiman by apiman.
the class JpaStorage method getContracts.
/**
* {@inheritDoc}
*/
@Override
public List<ContractSummaryBean> getContracts(String organizationId, String apiId, String version, int page, int pageSize) throws StorageException {
int start = (page - 1) * pageSize;
try {
EntityManager entityManager = getActiveEntityManager();
String jpql = "SELECT c from ContractBean c " + " JOIN c.api apiv " + " JOIN apiv.api api " + " JOIN c.client clientv " + " JOIN clientv.client client " + " JOIN api.organization sorg" + " JOIN client.organization aorg" + " WHERE api.id = :apiId " + " AND sorg.id = :orgId " + " AND apiv.version = :version " + " ORDER BY sorg.id, api.id ASC";
Query query = entityManager.createQuery(jpql);
query.setParameter("orgId", organizationId);
query.setParameter("apiId", apiId);
query.setParameter("version", version);
query.setFirstResult(start);
query.setMaxResults(pageSize);
List<ContractBean> contracts = query.getResultList();
List<ContractSummaryBean> rval = new ArrayList<>(contracts.size());
for (ContractBean contractBean : contracts) {
ClientBean client = contractBean.getClient().getClient();
ApiBean api = contractBean.getApi().getApi();
PlanBean plan = contractBean.getPlan().getPlan();
OrganizationBean clientOrg = entityManager.find(OrganizationBean.class, client.getOrganization().getId());
OrganizationBean apiOrg = entityManager.find(OrganizationBean.class, api.getOrganization().getId());
ContractSummaryBean csb = new ContractSummaryBean();
csb.setStatus(contractBean.getStatus());
csb.setClientId(client.getId());
csb.setClientOrganizationId(client.getOrganization().getId());
csb.setClientOrganizationName(clientOrg.getName());
csb.setClientName(client.getName());
csb.setClientVersion(contractBean.getClient().getVersion());
csb.setContractId(contractBean.getId());
csb.setCreatedOn(contractBean.getCreatedOn());
csb.setPlanId(plan.getId());
csb.setPlanName(plan.getName());
csb.setPlanVersion(contractBean.getPlan().getVersion());
csb.setApiDescription(api.getDescription());
csb.setApiId(api.getId());
csb.setApiName(api.getName());
csb.setApiOrganizationId(apiOrg.getId());
csb.setApiOrganizationName(apiOrg.getName());
csb.setApiVersion(contractBean.getApi().getVersion());
rval.add(csb);
}
return rval;
} catch (Throwable t) {
LOGGER.error(t.getMessage(), t);
throw new StorageException(t);
}
}
use of io.apiman.manager.api.beans.orgs.OrganizationBean in project apiman by apiman.
the class JpaStorage method findClients.
/**
* {@inheritDoc}
*/
@Override
public SearchResultsBean<ClientSummaryBean> findClients(SearchCriteriaBean criteria, PermissionConstraint permissionConstraint) throws StorageException {
// If unconstrained, do nothing.
Consumer<CriteriaBuilder<ClientBean>> constraintFunc = builder -> {
};
if (permissionConstraint.isConstrained()) {
constraintFunc = (builder) -> builder.where("organization.id").in(permissionConstraint.getPermittedOrgs());
}
SearchResultsBean<ClientBean> result = find(criteria, List.of(new OrderByBean(true, ClientBean_.ID), new OrderByBean(true, "organization.id")), constraintFunc, ClientBean.class, "client", true);
SearchResultsBean<ClientSummaryBean> rval = new SearchResultsBean<>();
rval.setTotalSize(result.getTotalSize());
List<ClientBean> beans = result.getBeans();
rval.setBeans(new ArrayList<>(beans.size()));
for (ClientBean client : beans) {
ClientSummaryBean summary = new ClientSummaryBean();
OrganizationBean organization = client.getOrganization();
summary.setId(client.getId());
summary.setName(client.getName());
summary.setDescription(client.getDescription());
summary.setImage(client.getImage());
// TODO find the number of contracts - probably need native SQL for that
summary.setNumContracts(0);
summary.setOrganizationId(client.getOrganization().getId());
summary.setOrganizationName(organization.getName());
rval.getBeans().add(summary);
}
return rval;
}
use of io.apiman.manager.api.beans.orgs.OrganizationBean in project apiman by apiman.
the class JpaStorage method getPlansInOrgs.
/**
* {@inheritDoc}
*/
@Override
public List<PlanSummaryBean> getPlansInOrgs(Set<String> orgIds) throws StorageException {
List<PlanSummaryBean> rval = new ArrayList<>();
if (orgIds == null || orgIds.isEmpty()) {
return rval;
}
try {
EntityManager entityManager = getActiveEntityManager();
String jpql = "SELECT p FROM PlanBean p JOIN p.organization o WHERE o.id IN :orgs ORDER BY p.id ASC";
TypedQuery<PlanBean> query = entityManager.createQuery(jpql, PlanBean.class).setParameter("orgs", orgIds).setMaxResults(500);
List<PlanBean> qr = query.getResultList();
for (PlanBean bean : qr) {
PlanSummaryBean summary = new PlanSummaryBean();
summary.setId(bean.getId());
summary.setName(bean.getName());
summary.setDescription(bean.getDescription());
OrganizationBean org = bean.getOrganization();
summary.setOrganizationId(org.getId());
summary.setOrganizationName(org.getName());
rval.add(summary);
}
return rval;
} catch (Throwable t) {
LOGGER.error(t.getMessage(), t);
throw new StorageException(t);
}
}
Aggregations