java/code/src/com/redhat/rhn/domain/iss/IssFactory.java | 16 +++++++++++
java/code/src/com/redhat/rhn/domain/iss/IssMasterOrg.hbm.xml | 6 ++++
java/code/src/com/redhat/rhn/domain/org/OrgFactory.java | 3 ++
3 files changed, 25 insertions(+)
New commits:
commit 5bf4cfe5818cc072bd4a326e249ac1a5238422e3
Author: Grant Gainey <ggainey(a)redhat.com>
Date: Thu Jun 27 16:16:27 2013 -0400
977878 Clean up maps on local-org-removal
diff --git a/java/code/src/com/redhat/rhn/domain/iss/IssFactory.java
b/java/code/src/com/redhat/rhn/domain/iss/IssFactory.java
index c7beeb4..d9ffd40 100644
--- a/java/code/src/com/redhat/rhn/domain/iss/IssFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/iss/IssFactory.java
@@ -22,6 +22,7 @@ import java.util.Map;
import org.apache.log4j.Logger;
import com.redhat.rhn.common.hibernate.HibernateFactory;
+import
com.redhat.rhn.domain.org.Org;
/**
* IssSlaveFactory - the singleton class used to fetch and store
@@ -117,6 +118,21 @@ public class IssFactory extends HibernateFactory {
"IssMaster.lookupAll", params);
}
+ /**
+ * IssMasterOrg helpers
+ */
+
+ /**
+ * Remove a given local-org from being mapped to any master-orgs
+ * @param inOrg the local-org we want to unmap
+ */
+ public static void unmapLocalOrg(Org inOrg) {
+ HibernateFactory.getSession().
+ getNamedQuery("IssMasterOrg.unmapLocalOrg").
+ setEntity("inOrg", inOrg).
+ executeUpdate();
+ }
+
/***
* Common helpers
***/
diff --git a/java/code/src/com/redhat/rhn/domain/iss/IssMasterOrg.hbm.xml
b/java/code/src/com/redhat/rhn/domain/iss/IssMasterOrg.hbm.xml
index 0a68bec..f5c3f87 100644
--- a/java/code/src/com/redhat/rhn/domain/iss/IssMasterOrg.hbm.xml
+++ b/java/code/src/com/redhat/rhn/domain/iss/IssMasterOrg.hbm.xml
@@ -22,4 +22,10 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
column="LOCAL_ORG_ID"
class="com.redhat.rhn.domain.org.Org"
/>
</class>
+
+ <query name="IssMasterOrg.unmapLocalOrg">
+ <![CDATA[update com.redhat.rhn.domain.iss.IssMasterOrg mo
+ set mo.localOrg = null where mo.localOrg = :inOrg]]>
+ </query>
+
</hibernate-mapping>
diff --git a/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java
b/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java
index 1af1752..8d64a0d 100644
--- a/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/org/OrgFactory.java
@@ -21,6 +21,7 @@ import com.redhat.rhn.common.db.datasource.ModeFactory;
import com.redhat.rhn.common.db.datasource.SelectMode;
import com.redhat.rhn.common.hibernate.HibernateFactory;
import com.redhat.rhn.domain.channel.ChannelFamily;
+import com.redhat.rhn.domain.iss.IssFactory;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.role.RoleFactory;
@@ -95,6 +96,8 @@ public class OrgFactory extends HibernateFactory {
}
}
+ IssFactory.unmapLocalOrg(org);
+
Map<String, Object> in = new HashMap<String, Object>();
in.put("org_id", oid);
CallableMode m = ModeFactory.getCallableMode(