if (pkg.getId() == 0) { persisted = contentManager.persistPackage(pkg); throw new RuntimeException("Expecting 1 package matching [" + pkg + "] but got: " + found); pkg.setId(found.get(0).getId()); persisted = entityManager.merge(pkg); persisted = entityManager.find(Package.class, persisted.getId()); persisted.getPackageType().getId();
@Override @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public PackageVersion persistPackageVersion(PackageVersion pv) { // EM.persist requires related entities to be attached, let's attach them now // package has persist cascade enabled, so skip loading it if we'll allow it to be created here if (pv.getGeneralPackage().getId() > 0) { pv.setGeneralPackage(entityManager.find(Package.class, pv.getGeneralPackage().getId())); } // arch has persist cascade enabled, so skip loading it if we'll allow it to be created here if (pv.getArchitecture().getId() > 0) { pv.setArchitecture(entityManager.find(Architecture.class, pv.getArchitecture().getId())); } // config is optional but has persist cascade enabled, so skip loading it if we'll allow it to be created here if (pv.getExtraProperties() != null && pv.getExtraProperties().getId() > 0) { pv.setExtraProperties(entityManager.find(Configuration.class, pv.getExtraProperties().getId())); } // our object's relations are now full attached, we can persist it entityManager.persist(pv); return pv; }
persisted.getGeneralPackage().getId(); persisted.getArchitecture().getId(); if (persisted.getExtraProperties() != null) {
@Override public PageList<PackageAndLatestVersionComposite> findPackagesWithLatestVersion(Subject subject, PackageCriteria criteria) { if (criteria.getFilterRepoId() == null) { throw new IllegalArgumentException("The criteria query has to have a filter for a specific repo."); } criteria.fetchVersions(true); PageList<Package> packages = findPackagesByCriteria(subject, criteria); PageList<PackageAndLatestVersionComposite> ret = new PageList<PackageAndLatestVersionComposite>( packages.getTotalSize(), packages.getPageControl()); for (Package p : packages) { PackageVersion latest = repoManager.getLatestPackageVersion(subject, p.getId(), criteria.getFilterRepoId()); ret.add(new PackageAndLatestVersionComposite(p, latest)); } return ret; }
Query packageVersionQuery = entityManager.createNamedQuery(PackageVersion.QUERY_FIND_BY_PACKAGE_VERSION); packageVersionQuery.setFlushMode(FlushModeType.COMMIT); packageVersionQuery.setParameter("packageId", generalPackage.getId()); packageVersionQuery.setParameter("version", discoveredPackage.getVersion()); List<PackageVersion> resultPackageVersions = packageVersionQuery.getResultList();
@Override public InstalledPackage getBackingPackageForResource(Subject subject, int resourceId) { InstalledPackage result = null; // check if the resource is content backed if not, return null Resource res = resourceManager.getResourceById(subject, resourceId); ResourceType type = res.getResourceType(); if (!ResourceCreationDataType.CONTENT.equals(type.getCreationDataType())) { return null; } InstalledPackageCriteria criteria = new InstalledPackageCriteria(); criteria.addFilterResourceId(resourceId); PageList<InstalledPackage> ips = findInstalledPackagesByCriteria(subject, criteria); // should not be more than 1 if ((null != ips) && (ips.size() > 0)) { int mostRecentPackageIndex = 0; if (ips.size() > 1) { for (int index = 1; index < ips.size(); index++) { if (ips.get(index).getInstallationDate() > ips.get(mostRecentPackageIndex).getInstallationDate()) { mostRecentPackageIndex = index; } } } result = ips.get(mostRecentPackageIndex); // fetch these result.getPackageVersion().getGeneralPackage().getId(); result.getPackageVersion().getGeneralPackage().getPackageType().getId(); result.getPackageVersion().getArchitecture().getId(); } return result; }