java/code/src/com/redhat/rhn/domain/server/Crash.hbm.xml | 4 java/code/src/com/redhat/rhn/domain/server/CrashFactory.java | 62 ++++++++++ java/code/src/com/redhat/rhn/frontend/xmlrpc/system/crash/CrashHandler.java | 57 +++++++++ 3 files changed, 123 insertions(+)
New commits: commit 33f918cae93c49ca03884eed173733a0accde3aa Author: Milan Zazrivec mzazrivec@redhat.com Date: Sat Feb 23 18:36:25 2013 +0100
abrt: listSystemCrashFiles api call
diff --git a/java/code/src/com/redhat/rhn/domain/server/Crash.hbm.xml b/java/code/src/com/redhat/rhn/domain/server/Crash.hbm.xml index 6c7c48a..4e98522 100644 --- a/java/code/src/com/redhat/rhn/domain/server/Crash.hbm.xml +++ b/java/code/src/com/redhat/rhn/domain/server/Crash.hbm.xml @@ -33,4 +33,8 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" <property name="created" type="timestamp" column="created" /> <property name="modified" type="timestamp" column="modified" /> </class> + + <query name="Crash.findById"> + <![CDATA[from com.redhat.rhn.domain.server.Crash as c where c.id = :id]]> + </query> </hibernate-mapping> diff --git a/java/code/src/com/redhat/rhn/domain/server/CrashFactory.java b/java/code/src/com/redhat/rhn/domain/server/CrashFactory.java new file mode 100644 index 0000000..e8a3522 --- /dev/null +++ b/java/code/src/com/redhat/rhn/domain/server/CrashFactory.java @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2013 Red Hat, Inc. + * + * This software is licensed to you under the GNU General Public License, + * version 2 (GPLv2). There is NO WARRANTY for this software, express or + * implied, including the implied warranties of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 + * along with this software; if not, see + * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. + * + * Red Hat trademarks are not licensed under GPLv2. No permission is + * granted to use or replicate Red Hat trademarks that are incorporated + * in this software or its documentation. + */ + +package com.redhat.rhn.domain.server; + +import com.redhat.rhn.common.hibernate.HibernateFactory; + +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.Map; + +/** + * CrashFactory - the singleton class used to fetch and store + * com.redhat.rhn.domain.server.Crash objects from the database. + * @version $Rev$ + */ +public class CrashFactory extends HibernateFactory { + + private static CrashFactory singleton = new CrashFactory(); + private static Logger log = Logger.getLogger(CrashFactory.class); + + private CrashFactory() { + super(); + } + + protected Logger getLogger() { + return log; + } + + /** + * Lookup a Crash by its id + * @param id the id to search for + * @return the Crash found + */ + public static Crash lookupById(Long id) { + Map params = new HashMap(); + params.put("id", id); + return (Crash) singleton.lookupObjectByNamedQuery( + "Crash.findById", params); + } + + /** + * Delete a crash. + * @param crash Crash to delete. + */ + public static void delete(Crash crash) { + // FIXME + } +} 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 90439a2..2391111 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,6 +15,7 @@
package com.redhat.rhn.frontend.xmlrpc.system.crash;
+import com.redhat.rhn.common.hibernate.LookupException; import com.redhat.rhn.domain.rhnpackage.PackageArch; import com.redhat.rhn.domain.rhnpackage.PackageEvr; import com.redhat.rhn.domain.rhnpackage.PackageEvrFactory; @@ -22,11 +23,15 @@ 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.CrashFactory; +import com.redhat.rhn.domain.server.CrashFile; 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.NoSuchSystemException; import com.redhat.rhn.frontend.xmlrpc.system.XmlRpcSystemHelper; +import com.redhat.rhn.manager.system.SystemManager;
import org.apache.log4j.Logger;
@@ -193,4 +198,56 @@ public class CrashHandler extends BaseHandler {
return returnList; } + + /** + * Returns list of crash files for a given crash id. + * @param sessionKey Session key + * @param crashId Crash ID + * @return Returns list of crash files. + * + * @xmlrpc.doc Return list of crash files for given crash id. + * @xmlrpc.param @param("string", "sessionKey") + * @xmlrpc.param #param("int", "crashId") + * @xmlrpc.returntype + * #array() + * #struct("crashFile") + * #prop("int", "id") + * #prop("string", "filename") + * #prop("string", "path") + * #prop("int", "filesize") + * #prop("date", "created") + * #prop("date", "modified") + * #struct_end() + * #array_end() + */ + public List listSystemCrashFiles(String sessionKey, Integer crashId) { + User loggedInUser = getLoggedInUser(sessionKey); + + Crash crash = CrashFactory.lookupById(new Long(crashId.longValue())); + Long serverId = crash.getServer().getId(); + + Server server = null; + try { + server = SystemManager.lookupByIdAndUser(new Long(serverId.longValue()), + loggedInUser); + } + catch (LookupException e) { + throw new NoSuchSystemException(); + } + + List returnList = new ArrayList(); + + for (CrashFile crashFile : crash.getCrashFiles()) { + HashMap crashMap = new HashMap(); + crashMap.put("id", crashFile.getId()); + crashMap.put("filename", crashFile.getFilename()); + crashMap.put("path", crashFile.getPath()); + crashMap.put("filesize", crashFile.getFilesize()); + crashMap.put("created", crashFile.getCreated()); + crashMap.put("modified", crashFile.getModified()); + returnList.add(crashMap); + } + + return returnList; + } }