java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java | 26 ++++++++ java/code/src/com/redhat/rhn/domain/rhnpackage/PackageName.hbm.xml | 4 + java/code/src/com/redhat/rhn/domain/server/Crash.java | 18 ++--- java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java | 32 ++++++++-- 4 files changed, 67 insertions(+), 13 deletions(-)
New commits: commit b3d10031c362e2357f3bc5699500580c730bdbbd Author: Milan Zazrivec mzazrivec@redhat.com Date: Sat Feb 23 16:28:15 2013 +0100
abrt: listSystemCrashes() api call returns crash package info
diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java index efe3ca0..38ae07c 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageFactory.java @@ -147,6 +147,18 @@ public class PackageFactory extends HibernateFactory { }
/** + * Lookup a PackageArch by its id. + * @param id package arch label id sought. + * @return the PackageArch whose id matches the given id. + */ + public static PackageArch lookupPackageArchById(Long id) { + Map params = new HashMap(); + params.put("id", id); + return (PackageArch) singleton.lookupObjectByNamedQuery("PackageArch.findById", + params, true); + } + + /** * Lookup a PackageArch by its label. * @param label package arch label sought. * @return the PackageArch whose label matches the given label. @@ -190,6 +202,20 @@ public class PackageFactory extends HibernateFactory { }
/** + * lookup a PackageName object based on it's id, returns null if it does + * not exist + * + * @param id the package name id + * @return a PackageName object that has a matching id or null if that + * doesn't exist + */ + public static PackageName lookupPackageName(Long id) { + PackageName returned = (PackageName) HibernateFactory.getSession().getNamedQuery( + "PackageName.findById").setLong("id", id).uniqueResult(); + return returned; + } + + /** * lookup a PackageName object based on it's name, returns null if it does * not exist * diff --git a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageName.hbm.xml b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageName.hbm.xml index 7abeb2d..72fba19 100644 --- a/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageName.hbm.xml +++ b/java/code/src/com/redhat/rhn/domain/rhnpackage/PackageName.hbm.xml @@ -18,4 +18,8 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" <query name="PackageName.findByName"> <![CDATA[from com.redhat.rhn.domain.rhnpackage.PackageName as p where p.name = :name]]> </query> + + <query name="PackageName.findById"> + <![CDATA[from com.redhat.rhn.domain.rhnpackage.PackageName as p where p.id = :id]]> + </query> </hibernate-mapping> diff --git a/java/code/src/com/redhat/rhn/domain/server/Crash.java b/java/code/src/com/redhat/rhn/domain/server/Crash.java index 0fb4f78..0b10d6f 100644 --- a/java/code/src/com/redhat/rhn/domain/server/Crash.java +++ b/java/code/src/com/redhat/rhn/domain/server/Crash.java @@ -39,9 +39,9 @@ public class Crash extends BaseDomainHelper { private String kernel; private String reason; private String username; - private long packageNameId; - private long packageEvrId; - private long packageArchId; + private Long packageNameId; + private Long packageEvrId; + private Long packageArchId; private Date created; private Date modified; private Set<CrashFile> crashFiles; @@ -265,7 +265,7 @@ public class Crash extends BaseDomainHelper { * Get the crash package name id. * @return Returns the crash package name id. */ - public long getPackageNameId() { + public Long getPackageNameId() { return packageNameId; }
@@ -273,7 +273,7 @@ public class Crash extends BaseDomainHelper { * Set the crash package name id. * @param packageNameIdIn The crash package name id to set. */ - public void setPackageNameId(long packageNameIdIn) { + public void setPackageNameId(Long packageNameIdIn) { packageNameId = packageNameIdIn; }
@@ -281,7 +281,7 @@ public class Crash extends BaseDomainHelper { * Get the crash package EVR id. * @return Returns the crash package EVR id. */ - public long getPackageEvrId() { + public Long getPackageEvrId() { return packageEvrId; }
@@ -289,7 +289,7 @@ public class Crash extends BaseDomainHelper { * Set the crash package EVR id. * @param packageEvrIdIn The crash package EVR id to set. */ - public void setPackageEvrId(long packageEvrIdIn) { + public void setPackageEvrId(Long packageEvrIdIn) { packageEvrId = packageEvrIdIn; }
@@ -297,7 +297,7 @@ public class Crash extends BaseDomainHelper { * Get the crash package arch id. * @return Returns the crash package arch id. */ - public long getPackageArchId() { + public Long getPackageArchId() { return packageArchId; }
@@ -305,7 +305,7 @@ public class Crash extends BaseDomainHelper { * Set the crash package arch id. * @param packageArchIdIn The package arch id to set. */ - public void setPackageArchId(long packageArchIdIn) { + public void setPackageArchId(Long packageArchIdIn) { packageArchId = packageArchIdIn; }
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java index c4d15d4..90439a2 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java @@ -15,13 +15,18 @@
package com.redhat.rhn.frontend.xmlrpc.system.crash;
-import com.redhat.rhn.frontend.xmlrpc.BaseHandler; -import com.redhat.rhn.frontend.xmlrpc.NoCrashesFoundException; -import com.redhat.rhn.frontend.xmlrpc.system.XmlRpcSystemHelper; +import com.redhat.rhn.domain.rhnpackage.PackageArch; +import com.redhat.rhn.domain.rhnpackage.PackageEvr; +import com.redhat.rhn.domain.rhnpackage.PackageEvrFactory; +import com.redhat.rhn.domain.rhnpackage.PackageFactory; +import com.redhat.rhn.domain.rhnpackage.PackageName; import com.redhat.rhn.domain.server.Crash; import com.redhat.rhn.domain.server.CrashCount; import com.redhat.rhn.domain.server.Server; import com.redhat.rhn.domain.user.User; +import com.redhat.rhn.frontend.xmlrpc.BaseHandler; +import com.redhat.rhn.frontend.xmlrpc.NoCrashesFoundException; +import com.redhat.rhn.frontend.xmlrpc.system.XmlRpcSystemHelper;
import org.apache.log4j.Logger;
@@ -160,10 +165,29 @@ public class CrashHandler extends BaseHandler { crashMap.put("kernel", crash.getKernel()); crashMap.put("reason", crash.getReason()); crashMap.put("username", crash.getUsername()); - // FIXME: package info crashMap.put("created", crash.getCreated()); crashMap.put("modified", crash.getModified());
+ if (crash.getPackageNameId() != null) { + PackageName pname = PackageFactory.lookupPackageName( + crash.getPackageNameId()); + crashMap.put("package_name", pname.getName()); + } + + if (crash.getPackageEvrId() != null) { + PackageEvr pevr = PackageEvrFactory.lookupPackageEvrById( + crash.getPackageEvrId()); + crashMap.put("package_epoch", pevr.getEpoch()); + crashMap.put("package_version", pevr.getVersion()); + crashMap.put("package_release", pevr.getRelease()); + } + + if (crash.getPackageArchId() != null) { + PackageArch parch = PackageFactory.lookupPackageArchById( + crash.getPackageArchId()); + crashMap.put("package_arch", parch.getLabel()); + } + returnList.add(crashMap); }