pac migration partial implementation
| | |
| | | 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; |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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, |
| | |
| | | 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, |
| | |
| | | @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()); |
| | | } |