HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2013-04-30 ce5c545befc4cc76229479411924ee4709729bd5
pac migration partial implementation
2 files modified
27 ■■■■■ changed files
hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java 22 ●●●●● patch | view | raw | blame | history
hsarback/test/de/hsadmin/remote/PacMigrationTest.java 5 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java
@@ -1,8 +1,10 @@
package de.hsadmin.mods.pac;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.persistence.EntityManager;
@@ -116,6 +118,26 @@
            throw new AuthorisationException(loginUser, "update", entity);
        }
        needsWriteAccessOn(entity, "update");
        Pac newState = (Pac) entity;
        EntityManager em = getTransaction().getEntityManager();
        Pac oldState = em.find(Pac.class, newState.getId());
        if (!oldState.getBasepac().getName().equals(newState.getBasepac().getName())) {
            Set<PacComponent> oldPacComponents = oldState.getPacComponents();
            Map<String, Integer> oldQuantities = new HashMap<String, Integer>();
            for (PacComponent c : oldPacComponents) {
                String feature = c.getBaseComponent().getFeature();
                int quantity = c.getQuantity();
                oldQuantities.put(feature, new Integer(quantity));
            }
            oldPacComponents.clear();
            em.flush();
            newState.initPacComponents(em, newState.getBasepac());
            Set<PacComponent> newPacComponents = newState.getPacComponents();
            for (PacComponent c : newPacComponents) {
                String feature = c.getBaseComponent().getFeature();
                c.setQuantity(oldQuantities.get(feature).intValue());
            }
        }
        return super.update(entity);
    }
hsarback/test/de/hsadmin/remote/PacMigrationTest.java
@@ -51,7 +51,7 @@
        setParams.put("curinetaddr", "176.9.242.77");
        HashMap<String, String> components = new HashMap<String, String>();
        components.put("QUOTA", "512");
        components.put("TRAFFIC", "5");
        components.put("TRAFFIC", "4");
        components.put("DAEMON", "1");
        setParams.put("components", components);
        Object[] params = new Object[] { user, 
@@ -87,7 +87,6 @@
        setParams.put("basepac", Pac.PAC_WEB);
        setParams.put("components", components);
        components.put("QUOTA", "1024");
        components.put("TRAFFIC", "5");
        Map<String, String> whereParams = new HashMap<String, String>();
        whereParams.put("name", "aaa04");
        Object[] params = new Object[] { user, 
@@ -108,6 +107,8 @@
            @SuppressWarnings("unchecked")
            Map<String, ?> pacResultMap = (Map<String, ?>) untypedResultArray[0]; 
            assertEquals(Pac.PAC_WEB, pacResultMap.get("basepac"));
            Object compMapObj = pacResultMap.get("components");
            assertTrue(compMapObj instanceof Map<?,?>);
        } catch (XmlRpcException e) {
            fail(e.getMessage());
        }