[prev in list] [next in list] [prev in thread] [next in thread] 

List:       spacewalk-commits
Subject:    Branch 'flex-guest' - 2 commits - java/code
From:       jlsherrill () fedoraproject ! org (Justin Sherrill)
Date:       2010-05-28 17:52:15
Message-ID: 20100528175215.660701201BE () lists ! fedorahosted ! org
[Download RAW message or body]

 java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml            \
|    9   java/code/src/com/redhat/rhn/common/db/datasource/xml/Procedure_queries.xml  \
|  124 ++++++++  java/code/src/com/redhat/rhn/common/db/datasource/xml/SystemGroup_queries.xml \
|    2   java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml     \
|   13   java/code/src/com/redhat/rhn/common/db/datasource/xml/file-list.xml          \
|    1   java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java              \
|   10   java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java        \
|   14   java/code/src/com/redhat/rhn/domain/channel/PrivateChannelFamily.hbm.xml     \
|    5   java/code/src/com/redhat/rhn/domain/config/ConfigChannel.hbm.xml             \
|    7   java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java         \
|   15   java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java                \
|   12   java/code/src/com/redhat/rhn/domain/errata/impl/PublishedErrata.hbm.xml      \
|    7   java/code/src/com/redhat/rhn/domain/server/ServerFactory.java                \
|   14   java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java           \
|   10   java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/internal/EntitlementProcedureHandler.java \
|   57 +++  java/code/src/com/redhat/rhn/frontend/xmlrpc/test/MockHandlerFactory.java \
|    1   java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java             \
|    4   java/code/src/com/redhat/rhn/manager/channel/ChannelProcedure.java           \
|   12   java/code/src/com/redhat/rhn/manager/entitlement/EntitlementProcedure.java   \
|   94 ++++++  java/code/src/com/redhat/rhn/manager/org/OrgProcedure.java             \
|  155 ++++++++++  java/code/src/com/redhat/rhn/manager/system/ServerGroupManager.java \
|   13   java/code/src/com/redhat/rhn/manager/system/SystemManager.java               \
|   18 +  22 files changed, 575 insertions(+), 22 deletions(-)

New commits:
commit 89018671ae5abaa4554483ad6a10cd27ab87ba27
Author: Justin Sherrill <jsherril at redhat.com>
Date:   Fri May 28 13:51:53 2010 -0400

    adding missing files for org removal stored procedure

diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Procedure_queries.xml \
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Procedure_queries.xml new \
file mode 100644 index 0000000..d4444ab
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Procedure_queries.xml
@@ -0,0 +1,124 @@
+<datasource_modes>
+
+<write-mode name="unsubscribe_custom_channels">
+  <query params="cid">
+		delete from rhnServerChannel where channel_id = :cid
+  </query>
+</write-mode>
+
+<write-mode name="delete_server_packge_profiles_for_channel">
+  <query params="cid">
+		delete from rhnServerProfilePackage where server_profile_id in (
+            select id from rhnServerProfile where base_channel = :cid
+          )
+  </query>
+</write-mode>
+
+<write-mode name="delete_server_profiles_for_channel">
+  <query params="cid">
+		delete from rhnServerProfile where base_channel = :cid
+  </query>
+</write-mode>
+
+<write-mode name="delete_errata_packages">
+  <query params="eid">
+		delete from rhnErrataPackage where errata_id = :eid
+  </query>
+</write-mode>
+
+
+<write-mode name="delete_org_channels">
+  <query params="oid">
+		delete from rhnChannel where org_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_daily_summary">
+  <query params="oid">
+		delete from rhnDailySummaryQueue where org_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_qutoa">
+  <query params="oid">
+		delete from rhnOrgQuota where org_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_info">
+  <query params="oid">
+		delete from rhnOrgInfo where org_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_file_list">
+  <query params="oid">
+		delete from rhnFileList where org_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_server_group">
+  <query params="oid">
+		delete from rhnServerGroup where org_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_check_suites">
+  <query params="oid">
+		delete from rhn_check_suites where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_command_target">
+  <query params="oid">
+		delete from rhn_command_target where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_contact_group">
+  <query params="oid">
+		delete from rhn_contact_groups where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_notif_format">
+  <query params="oid">
+		delete from rhn_notification_formats where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_probe">
+  <query params="oid">
+		delete from rhn_probe where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_redirect">
+  <query params="oid">
+		delete from rhn_redirects where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_sat_cluster">
+  <query params="oid">
+		delete from rhn_sat_cluster where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org_schedule">
+  <query params="oid">
+		delete from rhn_schedules where customer_id = :oid
+  </query>
+</write-mode>
+
+<write-mode name="delete_org">
+  <query params="oid">
+		delete from web_customer where id = :oid
+  </query>
+</write-mode>
+
+
+
+
+
+</datasource_modes>
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/internal/EntitlementProcedureHandler.java \
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/internal/EntitlementProcedureHandler.java
 new file mode 100644
index 0000000..2ed98f3
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/internal/EntitlementProcedureHandler.java
 @@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2010 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.frontend.xmlrpc.channel.internal;
+
+import com.redhat.rhn.domain.channel.Channel;
+import com.redhat.rhn.domain.server.Server;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.domain.user.UserFactory;
+import com.redhat.rhn.frontend.xmlrpc.BaseHandler;
+import com.redhat.rhn.manager.channel.ChannelManager;
+import com.redhat.rhn.manager.system.SystemManager;
+import com.redhat.rhn.manager.system.UpdateBaseChannelCommand;
+
+
+/**
+ * ChannelProcedureHandler
+ * @version $Rev$
+ */
+public class EntitlementProcedureHandler extends BaseHandler {
+
+
+    /**
+     * Runs the subscribe channel procedure
+     * @param serverId the id of the server
+     * @param channelId the id of the channel
+     * @param userId the id of the user
+     * @return 1 on success exception otherwise
+     */
+    public int subscribeChannelToSystem(Integer serverId,
+                                Integer channelId, Integer userId) {
+        User user = UserFactory.lookupById(userId.longValue());
+        Channel channel = ChannelManager.lookupByIdAndUser(channelId.longValue(), \
user); +        Server server = SystemManager.lookupByIdAndUser(serverId.longValue(), \
user); +        if (channel.isBaseChannel()) {
+            UpdateBaseChannelCommand cmd =
+                new UpdateBaseChannelCommand(user, server, channel.getId());
+            cmd.store();
+        }
+        else {
+            SystemManager.subscribeServerToChannel(user, server, channel);
+        }
+
+        return 1;
+    }
+}
diff --git a/java/code/src/com/redhat/rhn/manager/entitlement/EntitlementProcedure.java \
b/java/code/src/com/redhat/rhn/manager/entitlement/EntitlementProcedure.java new file \
mode 100644 index 0000000..dfafc51
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/manager/entitlement/EntitlementProcedure.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) 2009--2010 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.manager.entitlement;
+
+import com.redhat.rhn.domain.channel.ChannelFactory;
+import com.redhat.rhn.domain.channel.ChannelFamilyFactory;
+import com.redhat.rhn.domain.channel.PrivateChannelFamily;
+import com.redhat.rhn.domain.org.Org;
+import com.redhat.rhn.domain.org.OrgFactory;
+import com.redhat.rhn.domain.server.EntitlementServerGroup;
+import com.redhat.rhn.domain.server.ServerGroupFactory;
+import com.redhat.rhn.frontend.xmlrpc.SatelliteOrgException;
+
+import java.util.List;
+
+/**
+ *
+ * EntitlementProcedure
+ *
+ * Entitlement related procedures
+ * @version $Rev$
+ */
+public class EntitlementProcedure {
+
+
+    private static final EntitlementProcedure INSTANCE = new EntitlementProcedure();
+
+    private EntitlementProcedure() {
+
+    }
+
+    /**
+     * @return an instance of the EntitlementProcedure object
+     */
+    public static EntitlementProcedure getInstance() {
+        return INSTANCE;
+    }
+
+    /**
+     * Remove All entitlements from an org
+     *  Just handles the math logic, doesn't actually unsubscribe any systems
+     * @param orgId The orgId
+     */
+    public void removeOrgEntitlements(Long orgId) {
+        if (orgId.equals(1L)) {
+            throw new SatelliteOrgException();
+        }
+
+
+        Org org = OrgFactory.lookupById(orgId);
+        Org masterOrg = OrgFactory.lookupById(1L);
+
+
+        //For each Entitlement take the Max for the org, and return it to the
+        //   master org, locking both rows since we update and read them both.
+        List<EntitlementServerGroup> systemEnts =
+            ServerGroupFactory.listEntitlementGroups(org);
+        for (EntitlementServerGroup sysEnt : systemEnts) {
+            EntitlementServerGroup masterEnt = ServerGroupFactory.lookupEntitled(
+                    masterOrg, sysEnt.getGroupType());
+            ServerGroupFactory.lockEntitledServerGroup(sysEnt);
+            ServerGroupFactory.lockEntitledServerGroup(masterEnt);
+            masterEnt.setMaxMembers(masterEnt.getMaxMembers() + \
sysEnt.getMaxMembers()); +            sysEnt.setMaxMembers(0L);
+        }
+
+
+        //Do the same for the Channel entitlements
+        List<PrivateChannelFamily> privChannels =
+            ChannelFamilyFactory.listPrivateChannelFamiles(org);
+        for (PrivateChannelFamily priv : privChannels) {
+            PrivateChannelFamily masterFam =
+                priv.getChannelFamily().getChannelFamilyAllocationFor(masterOrg);
+            ChannelFactory.lockPrivateChannelFamily(priv);
+            ChannelFactory.lockPrivateChannelFamily(masterFam);
+            masterFam.setMaxMembers(masterFam.getMaxMembers() + \
priv.getMaxMembers()); +            priv.setMaxMembers(0L);
+        }
+
+    }
+
+}
diff --git a/java/code/src/com/redhat/rhn/manager/org/OrgProcedure.java \
b/java/code/src/com/redhat/rhn/manager/org/OrgProcedure.java new file mode 100644
index 0000000..bc3e13f
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/manager/org/OrgProcedure.java
@@ -0,0 +1,155 @@
+/**
+ * Copyright (c) 2009--2010 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.manager.org;
+
+import com.redhat.rhn.common.db.datasource.CallableMode;
+import com.redhat.rhn.common.db.datasource.ModeFactory;
+import com.redhat.rhn.common.db.datasource.WriteMode;
+import com.redhat.rhn.domain.config.ConfigChannel;
+import com.redhat.rhn.domain.config.ConfigurationFactory;
+import com.redhat.rhn.domain.errata.ErrataFactory;
+import com.redhat.rhn.domain.org.Org;
+import com.redhat.rhn.domain.server.ServerFactory;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.domain.user.UserFactory;
+import com.redhat.rhn.frontend.dto.ChannelOverview;
+import com.redhat.rhn.frontend.dto.SystemOverview;
+import com.redhat.rhn.frontend.xmlrpc.SatelliteOrgException;
+import com.redhat.rhn.manager.channel.ChannelManager;
+import com.redhat.rhn.manager.entitlement.EntitlementProcedure;
+import com.redhat.rhn.manager.system.SystemManager;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * OrgProcedure
+ *
+ * Organization related procedures
+ *
+ * @version $Rev$
+ */
+public class OrgProcedure {
+
+
+    private static final OrgProcedure INSTANCE = new OrgProcedure();
+
+    private OrgProcedure() {
+
+    }
+
+    /**
+     * @return an instance of the OrgProcedure object
+     */
+    public static OrgProcedure getInstance() {
+        return INSTANCE;
+    }
+
+
+
+    /**
+     * Delete an Org
+     * @param org The org to delete
+     */
+    public static void deleteOrg(Org org) {
+
+        if (org.getId() == 1) {
+            throw new SatelliteOrgException();
+        }
+
+        List<User> users = UserFactory.getInstance().findAllUsers(org);
+        for (User u : users) {
+            CallableMode m = ModeFactory.getCallableMode("User_queries",
+            "delete_user");
+            Map inParams = new HashMap();
+            Map outParams = new HashMap();
+            inParams.put("user_id", u.getId());
+            m.execute(inParams, outParams);
+        }
+
+        List<SystemOverview> systems = SystemManager.systemListShort(org, null);
+        for (SystemOverview sys : systems) {
+            ServerFactory.delete(sys.getId());
+        }
+
+        List<ConfigChannel> configChannels = \
ConfigurationFactory.listConfigChannels(org); +        for (ConfigChannel config : \
configChannels) { +            ConfigurationFactory.removeConfigChannel(config);
+        }
+
+        List<ChannelOverview> channels =
+            ChannelManager.channelsOwnedByOrg(org.getId(), null);
+        for (ChannelOverview chan : channels) {
+            deleteCustomChannelAssociations(chan.getId());
+        }
+
+
+        List<Long> errata = ErrataFactory.listErrataIds(org);
+        for (Long e : errata) {
+            deleteErrataPackage(e);
+        }
+
+        EntitlementProcedure.getInstance().removeOrgEntitlements(org.getId());
+
+        String[] modes = {"delete_org_channels",
+                        "delete_org_daily_summary",
+                        "delete_org_qutoa",
+                        "delete_org_info",
+                        "delete_org_file_list",
+                        "delete_org_server_group",
+                        "delete_org_check_suites",
+                        "delete_org_command_target",
+                        "delete_org_contact_group",
+                        "delete_org_notif_format",
+                        "delete_org_probe",
+                        "delete_org_redirect",
+                        "delete_org_sat_cluster",
+                        "delete_org_schedule",
+                        "delete_org"};
+
+        Map params = new HashMap();
+        params.put("oid", org.getId());
+        for (String mode : modes) {
+            WriteMode m = ModeFactory.getWriteMode("Procedure_queries", mode);
+            m.executeUpdate(params);
+        }
+
+
+    }
+
+    private static void deleteCustomChannelAssociations(Long cid) {
+        String[] modes = {"unsubscribe_custom_channels",
+                "delete_server_packge_profiles_for_channel",
+                "delete_server_profiles_for_channel"};
+
+        Map params = new HashMap();
+        params.put("cid", cid);
+        for (String mode : modes) {
+            WriteMode m = ModeFactory.getWriteMode("Procedure_queries", mode);
+            m.executeUpdate(params);
+        }
+    }
+
+    private static void deleteErrataPackage(Long eid) {
+        Map params = new HashMap();
+        params.put("eid", eid);
+        WriteMode m = ModeFactory.getWriteMode("Procedure_queries",
+                "delete_errata_packages");
+        m.executeUpdate(params);
+    }
+
+}


commit 92d967985d8c758d3c10c4300ee1e415d32134af
Author: Justin Sherrill <jsherril at redhat.com>
Date:   Fri May 28 13:51:28 2010 -0400

    adding remove org stored procedure

diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml \
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml index \
                0cf52fd..c482685 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Channel_queries.xml
@@ -1230,15 +1230,6 @@ GROUP BY C.id, C.name
 </mode>
 
 
-<mode name="lock_current_members">
-    <query params="org_id,  cfid">    
-        select current_members 
-        from rhnPrivateChannelFamily
-        where org_id = :org_id and channel_family_id = :cfid
-        for update of current_members
-    </query>
-</mode>
-
 <mode name="compute_channel_family_curent_members">
     <query params="org_id,  cfid">    
   select  count(distinct server_id) as count
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/SystemGroup_queries.xml \
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/SystemGroup_queries.xml index \
                f86a511..d1ae64c 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/SystemGroup_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/SystemGroup_queries.xml
@@ -158,4 +158,6 @@ SELECT SUM(max_members - current_members) AS available
   </query>
 </mode>
 
+
+
 </datasource_modes>
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml \
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml index \
                9d89f37..7e187a1 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/System_queries.xml
@@ -398,6 +398,19 @@ ORDER BY  UPPER(NVL(S.name, '(none)')), S.id
   </query>
 </mode>
 
+<mode name="visible_to_org" class="com.redhat.rhn.frontend.dto.SystemOverview">
+  <query params="org_id">
+  SELECT  DISTINCT S.id AS ID,
+          S.name AS NAME,
+          INFO.checkin AS LAST_CHECKIN
+    FROM  rhnServer S, rhnServerInfo INFO
+   WHERE
+       S.org_id = :org_id
+       S.id = INFO.server_id
+  </query>
+</mode>
+
+
 <mode name="visible_to_user_from_sysid_list" \
class="com.redhat.rhn.frontend.dto.SystemSearchResult">  <query \
name="available_to_user_from_sysid_list" />  <elaborator name="system_overview" />
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/file-list.xml \
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/file-list.xml index \
                c5ec1f0..d789dd1 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/file-list.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/file-list.xml
@@ -23,6 +23,7 @@
     <template name="ssm_operation_queries" filename="xml/ssm_operation_queries.xml" \
/>  <template name="util_queries" filename="xml/util_queries.xml" />
     <template name="ErrataCache_queries" filename="xml/ErrataCache_queries.xml" />
+    <template name="Procedure_queries" filename="xml/Procedure_queries.xml" />
 
     <!-- queries used to test the datasource system -->
     <template name="test_queries" filename="xml/test_queries.xml" />
diff --git a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java \
b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java index \
                5fbc56b..269a7d2 100644
--- a/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/channel/ChannelFactory.java
@@ -25,6 +25,7 @@ import java.util.Set;
 import org.apache.log4j.Logger;
 import org.hibernate.Criteria;
 import org.hibernate.HibernateException;
+import org.hibernate.LockMode;
 import org.hibernate.Session;
 import org.hibernate.criterion.CriteriaSpecification;
 import org.hibernate.criterion.Projections;
@@ -932,4 +933,13 @@ public class ChannelFactory extends HibernateFactory {
         criteria.add(Restrictions.eq("channel", ch));
         return (Integer)criteria.uniqueResult() > 0;
     }
+
+    /**
+     * Lock a private channel family object
+     * @param priv the private channel family
+     */
+    public static void lockPrivateChannelFamily(PrivateChannelFamily priv) {
+        getSession().lock(priv, LockMode.UPGRADE);
+    }
+
 }
diff --git a/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java \
b/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java index \
                f414335..3eac0ca 100644
--- a/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/channel/ChannelFamilyFactory.java
@@ -138,6 +138,20 @@ public class ChannelFamilyFactory extends HibernateFactory {
         return cfam;
     }
     
+
+    /**
+     * Get a list of all PrivateChannelFamiles for an org.  Not just their special \
one +     * @param org the org
+     * @return list of PrivateChannelFamiles
+     */
+    public static List<PrivateChannelFamily> listPrivateChannelFamiles(Org org) {
+        Map params = new HashMap();
+        params.put("orgId", org.getId());
+        return (List<PrivateChannelFamily>) singleton.listObjectsByNamedQuery(
+                "PrivateChannelFamily.findByOrg", params);
+
+    }
+
     /**
      * Checks if the org has permission to its channel family.
      * If it does not, grants permissions.
diff --git a/java/code/src/com/redhat/rhn/domain/channel/PrivateChannelFamily.hbm.xml \
b/java/code/src/com/redhat/rhn/domain/channel/PrivateChannelFamily.hbm.xml index \
                aaeb897..62a6f7b 100644
--- a/java/code/src/com/redhat/rhn/domain/channel/PrivateChannelFamily.hbm.xml
+++ b/java/code/src/com/redhat/rhn/domain/channel/PrivateChannelFamily.hbm.xml
@@ -20,4 +20,9 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 		<property name="modified" column="MODIFIED" not-null="true"
 			type="timestamp" insert="false" update="false" />
 	</class>
+
+	<query name="PrivateChannelFamily.findByOrg">
+		<![CDATA[from com.redhat.rhn.domain.channel.PrivateChannelFamily as cfam where \
cfam.org.id = :orgId]]> +	</query>
+
 </hibernate-mapping>
diff --git a/java/code/src/com/redhat/rhn/domain/config/ConfigChannel.hbm.xml \
b/java/code/src/com/redhat/rhn/domain/config/ConfigChannel.hbm.xml index \
                6d249d0..2ac0e4c 100644
--- a/java/code/src/com/redhat/rhn/domain/config/ConfigChannel.hbm.xml
+++ b/java/code/src/com/redhat/rhn/domain/config/ConfigChannel.hbm.xml
@@ -34,4 +34,11 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 			<one-to-many class="com.redhat.rhn.domain.config.ConfigFile"/>
 		</set>	
 	</class>
+
+	   <query name="ConfigChannel.listByOrg">
+	<![CDATA[
+			from com.redhat.rhn.domain.config.ConfigChannel as c where c.org = :org
+	]]>
+    </query>
+
 </hibernate-mapping>
diff --git a/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java \
b/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java index \
                391a4d5..381732b 100644
--- a/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/config/ConfigurationFactory.java
@@ -36,6 +36,7 @@ import java.io.InputStream;
 import java.sql.Types;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -427,6 +428,20 @@ public class ConfigurationFactory extends HibernateFactory {
                                         .uniqueResult();
     }
     
+
+     /**
+      * List all Config channels for an org
+      * @param org the org
+      * @return the config chanenls
+      */
+      public static List<ConfigChannel> listConfigChannels(Org org) {
+         Session session = HibernateFactory.getSession();
+         Map params = new HashMap();
+         params.put("org", org);
+         return singleton.listObjectsByNamedQuery("ConfigChannel.listByOrg", \
params); +     }
+
+
     /**
      * Used to look up ConfigFileStates.  Note: there is a static list of
      * ConfigFileStates and therefore a static list of labels.  This method
diff --git a/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java \
b/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java index \
                b6b8038..adb09a6 100644
--- a/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/errata/ErrataFactory.java
@@ -1042,6 +1042,18 @@ public class ErrataFactory extends HibernateFactory {
                 new HashMap(), ids, "list");
     }
 
+    /**
+     * List errata objects by ID
+     * @param  org the org
+     * @return List of longs
+     */
+    public static List<Long> listErrataIds(Org org) {
+        Map params = new HashMap();
+        params.put("org", org);
+        return singleton.listObjectsByNamedQuery("PublishedErrata.listIdsByOrg",
+                params);
+    }
+
 
 }
 
diff --git a/java/code/src/com/redhat/rhn/domain/errata/impl/PublishedErrata.hbm.xml \
b/java/code/src/com/redhat/rhn/domain/errata/impl/PublishedErrata.hbm.xml index \
                b305f66..6420dd2 100644
--- a/java/code/src/com/redhat/rhn/domain/errata/impl/PublishedErrata.hbm.xml
+++ b/java/code/src/com/redhat/rhn/domain/errata/impl/PublishedErrata.hbm.xml
@@ -103,6 +103,13 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   	         where c.original = :original
   	         and c.org = :org]]>
     </query>
+    <query name="PublishedErrata.listIdsByOrg">
+        <return-scalar type="long" column="id"/>
+        <![CDATA[
+		Select e.id as id
+		from com.redhat.rhn.domain.errata.impl.PublishedErrata as e
+                where e.org = :org]]>
+    </query>
     <query name="PublishedErrata.findByAdvisory">
         <![CDATA[from com.redhat.rhn.domain.errata.impl.PublishedErrata as e
                  where e.advisory = :advisory]]>
diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java \
b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java index \
                c8aa4d1..a5ba37c 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerFactory.java
@@ -337,14 +337,24 @@ public class ServerFactory extends HibernateFactory {
      */
     public static void delete(Server server) {
         HibernateFactory.getSession().evict(server);
+        delete(server.getId());
+        HibernateFactory.getSession().evict(server);
+    }
+
+    /**
+     * Deletes a server
+     *
+     * @param serverId The server to delete
+     */
+    public static void delete(Long serverId) {
         CallableMode m = ModeFactory.getCallableMode("System_queries",
                 "delete_server");
         Map in = new HashMap();
-        in.put("server_id", server.getId());
+        in.put("server_id", serverId);
         m.execute(in, new HashMap());
-        HibernateFactory.getSession().evict(server);
     }
 
+
     private static void updateServerPerms(Server server) {
         CallableMode m = ModeFactory.getCallableMode("System_queries",
                 "update_perms_for_server");
diff --git a/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java \
b/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java index \
                18d4cbb..0a4b371 100644
--- a/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java
+++ b/java/code/src/com/redhat/rhn/domain/server/ServerGroupFactory.java
@@ -22,6 +22,7 @@ import com.redhat.rhn.domain.user.User;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
+import org.hibernate.LockMode;
 import org.hibernate.Session;
 
 import java.util.ArrayList;
@@ -335,4 +336,13 @@ public class ServerGroupFactory extends HibernateFactory {
         params.put("threshold", threshold);
         return  SINGLETON.listObjectsByNamedQuery(query, params);
     }    
+
+    /**
+     * Lock an EntitlementServerGroup for update
+     * @param grp the server group
+     */
+    public static void lockEntitledServerGroup(EntitlementServerGroup grp) {
+        getSession().lock(grp, LockMode.UPGRADE);
+    }
+
 }
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/test/MockHandlerFactory.java \
b/java/code/src/com/redhat/rhn/frontend/xmlrpc/test/MockHandlerFactory.java index \
                2f834fc..4f1ce9d 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/test/MockHandlerFactory.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/test/MockHandlerFactory.java
@@ -14,7 +14,6 @@
  */
 package com.redhat.rhn.frontend.xmlrpc.test;
 
-import com.redhat.rhn.common.util.manifestfactory.ClassBuilder;
 import com.redhat.rhn.frontend.xmlrpc.HandlerFactory;
 
 /**
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java \
b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java index \
                b6835ec..f53e716 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java
@@ -684,7 +684,8 @@ public class ChannelManager extends BaseManager {
      * @param pc page control for the user
      * @return Returns a data result containing ChannelOverview dtos
      */
-    public static DataResult channelsOwnedByOrg(Long orgId, PageControl pc) {
+    public static DataResult<ChannelOverview> channelsOwnedByOrg(Long orgId,
+                                                                PageControl pc) {
         SelectMode m = ModeFactory.getMode("Channel_queries", 
                                            "channels_owned_by_org");
         Map params = new HashMap();
@@ -2905,4 +2906,5 @@ public class ChannelManager extends BaseManager {
         return toRet;
     }
 
+
 }
diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelProcedure.java \
b/java/code/src/com/redhat/rhn/manager/channel/ChannelProcedure.java index \
                829a690..7b4aed4 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/ChannelProcedure.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelProcedure.java
@@ -20,6 +20,7 @@ import com.redhat.rhn.common.db.datasource.SelectMode;
 import com.redhat.rhn.common.localization.LocalizationService;
 import com.redhat.rhn.common.security.PermissionException;
 import com.redhat.rhn.domain.channel.Channel;
+import com.redhat.rhn.domain.channel.ChannelFactory;
 import com.redhat.rhn.domain.channel.ChannelFamily;
 import com.redhat.rhn.domain.org.Org;
 import com.redhat.rhn.domain.server.Server;
@@ -134,7 +135,8 @@ public class ChannelProcedure {
         Org org = (channel.getOrg() == null) ? server.getOrg() : channel.getOrg();
         //need do a select for update Lock on current Members
         
-        lockCurrentMembers(channel.getChannelFamily(), org);
+        ChannelFactory.lockPrivateChannelFamily(
+                channel.getChannelFamily().getChannelFamilyAllocationFor(org));
         if (channel.getChannelFamily().hasAvailableSlots(org) || 
                             canConsumeVirtChannels(server, channel)) {
             ServerHistoryEvent event = new ServerHistoryEvent();
@@ -183,14 +185,6 @@ public class ChannelProcedure {
         }
     }
 
-    private void lockCurrentMembers(ChannelFamily channelFamilyIn, Org orgIn) {
-        SelectMode m = ModeFactory.getMode("Channel_queries", 
-                "lock_current_members");
-        Map params = new HashMap();
-        params.put("org_id", orgIn.getId());
-        params.put("cfid", channelFamilyIn.getId());
-        m.execute(params);
-    }
 
     private void updateChannelFamilyCounts(ChannelFamily channelFamilyIn,
             Org orgIn) {
diff --git a/java/code/src/com/redhat/rhn/manager/system/ServerGroupManager.java \
b/java/code/src/com/redhat/rhn/manager/system/ServerGroupManager.java index \
                f629618..b388f5e 100644
--- a/java/code/src/com/redhat/rhn/manager/system/ServerGroupManager.java
+++ b/java/code/src/com/redhat/rhn/manager/system/ServerGroupManager.java
@@ -441,4 +441,17 @@ public class ServerGroupManager {
     public List<Long> listInactiveServers(ServerGroup sg, Long threshold) {
         return ServerGroupFactory.listInactiveServerIds(sg, threshold);
     }   
+
+    /**
+     * Lock a given server group
+     * @param serverGroup the server group to lock
+     */
+    public static void lockServerGroup(EntitlementServerGroup serverGroup) {
+        SelectMode m = ModeFactory.getMode("ServerGroup_queries",
+                "lock_group_row");
+        Map params = new HashMap();
+        params.put("gid", serverGroup.getId());
+        m.execute(params);
+    }
+
 }
diff --git a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java \
b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java index \
                edeb6d5..5e099d5 100644
--- a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
+++ b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
@@ -330,6 +330,24 @@ public class SystemManager extends BaseManager {
     }
 
     /**
+     * Returns list of all systems visible to the org
+     *    Ignores user permissions
+     * @param org the org
+     * @param pc PageControl
+     * @return list of SystemOverviews.
+     */
+    public static DataResult<SystemOverview> systemListShort(Org org, PageControl \
pc) { +        SelectMode m = ModeFactory.getMode("System_queries", "visible_to_org",
+                SystemOverview.class);
+        Map params = new HashMap();
+        params.put("org_id", org.getId());
+        Map elabParams = new HashMap();
+
+        return makeDataResult(params, elabParams, pc, m);
+    }
+
+
+    /**
      * Returns list of all systems that are  visible to user 
      * but not in the given server group.
      * @param user Currently logged in user.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic