HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2012-07-18 93a4c560ab98a4d43c7998e7672ad999afa0063e
DomainOptions Impl
3 files modified
59 ■■■■■ changed files
hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java 32 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/remote/DomainRemote.java 19 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/remote/EMailAddressRemote.java 8 ●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/dom/DomainModuleImpl.java
@@ -139,26 +139,32 @@
    @Override
    public AbstractEntity update(AbstractEntity existingEntity) throws HSAdminException {
        Domain dom = (Domain) existingEntity;
        UnixUser loginUser = getTransaction().getLoginUser();
        if (dom.isPacDomain() && !loginUser.hasHostmasterRole()) {
            throw new AuthorisationException(loginUser, "update", existingEntity);
        }
        if (dom.getName() == null || dom.getName().length() == 0) {
        Domain updatedDom = (Domain) existingEntity;
        if (updatedDom.getName() == null || updatedDom.getName().length() == 0) {
            throw new HSAdminException("domain name required");
        }
        UnixUser admin = dom.getUser();
        UnixUser loginUser = getTransaction().getLoginUser();
        EntityManager em = getTransaction().getEntityManager();
        Domain oldDom = em.find(Domain.class, updatedDom.getId());
        UnixUser admin = updatedDom.getUser();
        if (admin == null || admin.getName() == null || admin.getName().length() == 0) {
            throw new HSAdminException("domain admin required");
        }
        if (admin.getPac() == null) {
            EntityManager em = getTransaction().getEntityManager();
            Query query = em.createQuery("SELECT u FROM UnixUsers u WHERE u.name = :adminName");
            query.setParameter("adminName", admin.getName());
            dom.setUser((UnixUser) query.getSingleResult());
        if (!admin.getName().equals(oldDom.getUser().getName())) {
            throw new AuthorisationException(loginUser, "update", existingEntity);
        }
        Query q = em.createQuery("SELECT opt FROM " +
                DomainOption.class.getAnnotation(javax.persistence.Entity.class).name() +
                " opt WHERE opt.name=:optName");
        for (DomainOption opt : updatedDom.getDomainOptions()) {
            q.setParameter("optName", opt.getName());
            List<?> list = q.getResultList();
            if (list.size() != 1) {
                throw new HSAdminException("invalid domain option: " + opt.getName());
            }
        }
        needsWriteAccessOn(existingEntity, "update");
        throw new AuthorisationException(loginUser, "update", existingEntity);
        return super.update(existingEntity);
    }
    @Override
hsarback/src/de/hsadmin/remote/DomainRemote.java
@@ -2,11 +2,16 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import de.hsadmin.core.model.AbstractEntity;
import de.hsadmin.mods.dom.Domain;
import de.hsadmin.mods.dom.DomainOption;
import de.hsadmin.mods.user.UnixUser;
public class DomainRemote extends AbstractRemote {
@@ -36,6 +41,11 @@
            String since = df.format(sDate);
            resultMap.put("since", since);
        }
        List<String> domainOptionsList = new ArrayList<String>();
        resultMap.put("domainoptions", domainOptionsList);
        for (DomainOption opt : dom.getDomainOptions()) {
            domainOptionsList.add(opt.getName());
        }
    }
    @Override
@@ -51,6 +61,15 @@
            u.setName(user);
            dom.setUser(u);
        }
        Set<DomainOption> domainOptionsSet = new TreeSet<DomainOption>();
        Object domOptsObj = setParams.get("domainoptions");
        if (domOptsObj != null && domOptsObj instanceof List<?>) {
            List<String> domOptions = (List<String>) domOptsObj;
            for (String optString : domOptions) {
                domOptions.add(optString);
            }
        }
        dom.setDomainOptions(domainOptionsSet);
    }
    @Override
hsarback/src/de/hsadmin/remote/EMailAddressRemote.java
@@ -53,13 +53,7 @@
            adr.setSubdomain(subdomain);
        }
        Object l = map.get("target");
        if (l instanceof String) {
            String target = (String) l;
            if (assertNotNull(target)) {
                adr.setTarget(target);
            }
        }
        if (l instanceof List<?>) {
        if (l != null && l instanceof List<?>) {
            StringBuffer tBuff = new StringBuffer();
            for (Object o : (List<?>) l) {
                if (o instanceof String) {