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(a)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;
+ }
}