HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2012-09-21 da5f5cd6fb24dce252ebb6e3b816823659b0e8f8
implement pac update
6 files modified
107 ■■■■ changed files
hsarback/build.xml 2 ●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java 9 ●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/pac/Pac.java 2 ●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java 26 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/user/UnixUser.java 2 ●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/remote/PacRemote.java 66 ●●●●● patch | view | raw | blame | history
hsarback/build.xml
@@ -39,7 +39,7 @@
    <target name="deploy" depends="war">
        <delete dir="${hsar.deploy.dir}/hsar" />
        <copy file="build/hsar.war" todir="${hsar.deploy.dir}" />
        <sleep minutes="2"/>
        <!-- <sleep minutes="2"/> -->
    </target>
    <target name="jar" depends="enhance">
hsarback/src/de/hsadmin/mods/dom/DomainProcessorFactory.java
@@ -27,8 +27,13 @@
public class DomainProcessorFactory implements EntityProcessorFactory {
    private static final String[] DW_STRUCTURE = new String[] { "htdocs", "htdocs-ssl", "subs", "subs/www", "subs-ssl", "subs-ssl/www", "cgi", "fastcgi", "cgi-ssl", "fastcgi-ssl", "etc", "var" };
    private static final String[] SW_STRUCTURE = new String[] { "htdocs", "htdocs-ssl", "subs", "subs/www", "subs-ssl", "subs-ssl/www", "etc", "var" };
    private static final String[] DW_STRUCTURE = new String[] {
        "htdocs", "htdocs-ssl", "subs", "subs/www", "subs-ssl", "subs-ssl/www", "cgi", "fastcgi", "cgi-ssl", "fastcgi-ssl", "etc", "var"
    };
    private static final String[] SW_STRUCTURE = new String[] {
        "htdocs", "htdocs-ssl", "subs", "subs/www", "subs-ssl", "subs-ssl/www", "etc", "var"
    };
    public <T extends AbstractEntity> Processor createCreateProcessor(EntityManager em, T entity) throws ProcessorException {
        String hiveName = entity.getHiveName();
hsarback/src/de/hsadmin/mods/pac/Pac.java
@@ -75,7 +75,7 @@
    @ManyToOne(fetch = EAGER)
    private INetAddress oldINetAddr;
    @OneToMany(fetch = LAZY, cascade = ALL, mappedBy="pac")
    @OneToMany(fetch = EAGER, cascade = ALL, mappedBy="pac")
    private Set<PacComponent> pacComponents;
    @OneToMany(fetch = LAZY, cascade = ALL, mappedBy="pac")
hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java
@@ -110,9 +110,16 @@
    }
    @Override
    public AbstractEntity update(AbstractEntity existingEntity)
    public AbstractEntity update(AbstractEntity entity)
            throws HSAdminException {
        throw new AuthorisationException(getTransaction().getLoginUser(), "update", existingEntity);
        UnixUser loginUser = getTransaction().getLoginUser();
        if (entity instanceof Pac) {
            Pac pac = (Pac) entity;
        } else {
            throw new AuthorisationException(loginUser, "update", entity);
        }
        needsWriteAccessOn(entity, "update");
        return super.update(entity);
    }
    @Override
@@ -154,4 +161,19 @@
        super.delete(existingEntity);
    }
    
    private void needsWriteAccessOn(AbstractEntity entity, String method) throws AuthorisationException {
        UnixUser loginUser = getTransaction().getLoginUser();
        if (entity instanceof Pac) {
            Pac pac = (Pac) entity;
            String aLoginUserName = loginUser.getName();
            boolean isPacAdmin = loginUser.hasPacAdminRoleFor(pac);
            boolean isCustomer = aLoginUserName.equals(pac.getCustomer().getName());
            boolean isHostmaster = loginUser.hasHostmasterRole();
            if (!isPacAdmin && !isCustomer && !isHostmaster) {
                throw new AuthorisationException(loginUser, method, pac);
            }
        } else {
            throw new AuthorisationException(loginUser, method, entity);
        }
    }
}
hsarback/src/de/hsadmin/mods/user/UnixUser.java
@@ -275,7 +275,7 @@
        return getName().equals(cust.getName()) || hasHostmasterRole();
    }
    public boolean hasPacAdminRoleFor(de.hsadmin.mods.pac.Pac pac) {
    public boolean hasPacAdminRoleFor(Pac pac) {
        return pac != null && 
            (pac.getName().equals(getName())
                || hasCustomerRoleFor(pac.getCustomer()) );
hsarback/src/de/hsadmin/remote/PacRemote.java
@@ -1,10 +1,9 @@
package de.hsadmin.remote;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.Set;
import de.hsadmin.core.model.AbstractEntity;
import de.hsadmin.core.util.TextUtil;
@@ -27,27 +26,38 @@
        resultMap.put("curinetaddr", pac.getCurINetAddr().getInetAddr());
        resultMap.put("created", TextUtil.format(pac.getCreated()));
        resultMap.put("basepac", pac.getBasepac().getName());
        SortedSet<PacComponent> sortedComponents = new TreeSet<PacComponent>(new Comparator<PacComponent>() {
            @Override
            public int compare(PacComponent o1, PacComponent o2) {
                return o2.getBaseComponent().getSorting() - o1.getBaseComponent().getSorting();
            }
        });
        sortedComponents.addAll(pac.getPacComponents());
        StringBuffer bf = new StringBuffer();
        boolean empty = true;
        for (PacComponent comp : sortedComponents) {
            if (comp.getQuantity() > 0) {
                if (!empty) {
                    bf.append("; ");
                }
                bf.append(comp.getBaseComponent().getFeature());
                bf.append("=");
                bf.append(comp.getQuantity());
                empty = false;
        Map<String, Object> components = new HashMap<String, Object>();
        Set<PacComponent> pacComponents = pac.getPacComponents();
        for (PacComponent comp : pacComponents) {
            int quantity = comp.getQuantity();
            if (quantity > 0) {
                components.put(comp.getBaseComponent().getFeature(), Integer.toString(quantity));
            }
        }
        resultMap.put("components", bf.toString());
        resultMap.put("components", components);
//        SortedSet<PacComponent> sortedComponents = new TreeSet<PacComponent>(new Comparator<PacComponent>() {
//            @Override
//            public int compare(PacComponent o1, PacComponent o2) {
//                return o2.getBaseComponent().getSorting() - o1.getBaseComponent().getSorting();
//            }
//        });
//        sortedComponents.addAll(pac.getPacComponents());
//        StringBuffer bf = new StringBuffer();
//        boolean empty = true;
//        for (PacComponent comp : sortedComponents) {
//            if (comp.getQuantity() > 0) {
//                if (!empty) {
//                    bf.append("; ");
//                }
//                bf.append(comp.getBaseComponent().getFeature());
//                bf.append("=");
//                bf.append(comp.getQuantity());
//                empty = false;
//            }
//        }
//        resultMap.put("components", bf.toString());
    }
    @Override
@@ -86,7 +96,17 @@
            hive.setName(hiveName);
            pac.setHive(hive);
        }
        pac.setName((String) setParams.get("name"));
        Object componentsObj = setParams.get("components");
        if (componentsObj != null && componentsObj instanceof Map) {
            Map<?, ?> componentsMap = (Map<?, ?>) componentsObj;
            for (Object key : componentsMap.keySet()) {
                pac.getPacComponent(key.toString()).setQuantity(Integer.parseInt(componentsMap.get(key).toString()));
            }
        }
        Object nameParamObj = setParams.get("name");
        if (nameParamObj != null && nameParamObj instanceof String) {
            pac.setName((String) nameParamObj);
        }
    }
    @Override