/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.enterprise.server.content; import java.util.List; import javax.ejb.Local; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.common.composite.IntegerOptionItem; import org.rhq.core.domain.content.ContentRequestStatus; import org.rhq.core.domain.content.ContentServiceRequest; import org.rhq.core.domain.content.InstalledPackage; import org.rhq.core.domain.content.InstalledPackageHistory; import org.rhq.core.domain.content.PackageInstallationStep; import org.rhq.core.domain.content.PackageType; import org.rhq.core.domain.content.PackageVersion; import org.rhq.core.domain.content.composite.AdvisoryDetailsComposite; import org.rhq.core.domain.content.composite.LoadedPackageBitsComposite; import org.rhq.core.domain.content.composite.PackageListItemComposite; import org.rhq.core.domain.content.composite.PackageVersionComposite; import org.rhq.core.domain.criteria.InstalledPackageHistoryCriteria; import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; /** * EJB interface for operations that support the UI for the content subsystem. * * @author Jason Dobies */ @Local public interface ContentUIManagerLocal { /** * This will return a composite object that tells you if the actual content (the "bits") for a particular package * version is loaded into inventory or not, and, if the content is loaded, whether or not that content is stored in * the database. * * @param packageVersionId the {@link org.rhq.core.domain.content.PackageVersion} identifier * @return indicates if the package version content is loaded and available * @see org.rhq.core.domain.content.composite.LoadedPackageBitsComposite */ LoadedPackageBitsComposite getLoadedPackageBitsComposite(int packageVersionId); /** * Loads the installed package identified by the ID from the database. * * @param id identifies the installed package * @return installed package if one exists; <code>null</code> otherwise */ InstalledPackage getInstalledPackage(int id); List<IntegerOptionItem> getInstalledPackageTypes(Subject user, int resourceId); /** * Loads the package type identified by the ID from the database. * * @param id package type to load * @return package type if one exists for the ID; <code>null</code> otherwise */ PackageType getPackageType(int id); /** * @return all package types */ List<PackageType> getPackageTypes(); /** * Returns all package types that are available to the specified resource type. * * @param resourceTypeId identifies the resource type * @return set of package types */ List<PackageType> getPackageTypes(int resourceTypeId); /** * Returns all package types that are available to the specified resource type in a page control. * * @param resourceTypeId identifies the resource type * @param pageControl paging control * @return pagable list of package types */ PageList<PackageType> getPackageTypes(int resourceTypeId, PageControl pageControl); /** * Returns a list of all content requests made against the specified resource that match the specified status. * * @param user the user who is requesting the retrieval * @param resourceId identifies the resource whose requests to retrieve * @param status request status being matched * @param pageControl pagination controller * @return list of artifact requests for the specified resource */ PageList<ContentServiceRequest> getContentRequestsWithStatus(Subject user, int resourceId, ContentRequestStatus status, PageControl pageControl); /** * Returns a list of all content requests made against the specified resource that do not match the specified * status. * * @param user the user who is requesting the retrieval * @param resourceId identifies the resource whose requests to retrieve * @param status request status to not match * @param pageControl pagination controller * @return list of content requests for the specified resource */ PageList<ContentServiceRequest> getContentRequestsWithNotStatus(Subject user, int resourceId, ContentRequestStatus status, PageControl pageControl); /** * Returns a list of all installed packages on the specified resource. * * @param user the user who is requesting the retrieval * @param resourceId identifies the resource whose requests to retrieve * @param search string to search against filtering by name or description * @param pageControl pagination controller * @return pagable list of packages installed on the resource */ PageList<PackageListItemComposite> getInstalledPackages(Subject user, int resourceId, Integer packageTypeFilterId, String packageVersionFilter, String search, PageControl pageControl); PageList<InstalledPackageHistory> getInstalledPackageHistory(Subject subject, int resourceId, int generalPackageId, PageControl pc); PageList<PackageVersionComposite> getPackageVersionCompositesByFilter(Subject user, int resourceId, String filter, PageControl pc); PageList<PackageVersionComposite> getUpdatePackageVersionCompositesByFilter(Subject user, int resourceId, String filter, PageControl pc); /** * Used to retrieve information about a package version to display to a user. * * @param user user who wants to see the information * @param packageVersionId identifies what package version to return info on * * @return the information on the package version */ PackageVersionComposite loadPackageVersionComposite(Subject user, int packageVersionId); /** * Used to retrieve information about a package version to display to a user. This call will also load the * extra properties configuration object on the package version. * * @param user user who wants to see the information * @param packageVersionId identifies what package version to return info on * * @return the information on the package version */ PackageVersionComposite loadPackageVersionCompositeWithExtraProperties(Subject user, int packageVersionId); /** * Used to retrieve information about multiple packages to display to the user. * * @param user user who wants to see the information * @param packageVersionIds identifies what package versions to return info on * * @return package version information for each package identified */ List<PackageVersionComposite> getPackageVersionComposites(Subject user, int[] packageVersionIds); /** * Used to retrieve information about multiple packages to display to the user. * * @param user user who wants to see the information * @param packageVersionIds identifies what package versions to return info on * @param pageControl pagination controller * * @return package version information for each package identified */ PageList<PackageVersionComposite> getPackageVersionComposites(Subject user, int[] packageVersionIds, PageControl pageControl); /** * Retrieves a package version by its ID. One and only one package version must exist for the ID; an error * will be thrown if exactly one package version is not found. * * @param packageVersionId identifies the package version * @return package version entity */ PackageVersion getPackageVersion(int packageVersionId); /** * Retrieves a content request by its ID. One and only one content request must exist for the ID; an error * will be thrown if exactly one content request is not found. * * @param requestId identifies the request * @return content request entity */ ContentServiceRequest getContentServiceRequest(int requestId); /** * Returns a list of installed package history entries that were created as a result of executing the indicated * request. * * @param contentServiceRequestId identifies the request that caused the history entries * @param pc pagination controller * @return list of history entries */ PageList<InstalledPackageHistory> getInstalledPackageHistory(int contentServiceRequestId, PageControl pc); /** * Retrieves a specific history entry by its ID. One and only one history entry must exist for the ID; an error * will be thrown if exactly one history entry is not found. * * @param historyId identifies the history entry * @return history entry */ InstalledPackageHistory getInstalledPackageHistory(int historyId); /** * Retrieves the individual steps executed during the specified package installation history. * * @param installedPackageHistoryId identifies the history entry * @return list of steps; empty list if there were no steps reported */ List<PackageInstallationStep> getPackageInstallationSteps(int installedPackageHistoryId); /** * Retrieves a specific step entry by its ID. * * @param stepId identifies the step to retrieve * @return step entry */ PackageInstallationStep getPackageInstallationStep(int stepId); /** * Returns a pagable list of all package events that have taken place on the given resource. * * @param resourceId must refer to a valid resource in the database * @param pc pagination controller * @return pagable list of package change items; will not be <code>null</code> */ PageList<InstalledPackageHistory> getInstalledPackageHistoryForResource(int resourceId, PageControl pc); /** * Returns a pagable list of all package events that have taken place on the given resource. * * @param resourceId must refer to a valid resource in the database * @param pc pagination controller * @return pagable list of package change items; will not be <code>null</code> */ PageList<InstalledPackageHistory> findInstalledPackageHistoryByCriteria(Subject subject, InstalledPackageHistoryCriteria criteria); /** * Retrieves Advisory Details by its ID. One and only one must exist for the ID; * @param user user who wants to see the information * @param id identifier for advisory * @return AdvisoryDetailsComposite entity */ AdvisoryDetailsComposite loadAdvisoryDetailsComposite(Subject user, Integer id); }