Author: tdraier
Date: Tue Aug  7 11:22:14 2007
New Revision: 18148

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18148&repname=
=3Djahia
Log:
improt export site permissions ( JAHIA-1909 )

Added:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp=
ort/SitePermissionsImportHandler.java
      - copied, changed from r18134, branches/JAHIA-5-0-SP-BRANCH/core/src/=
java/org/jahia/services/importexport/UsersImportHandler.java
Modified:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/acl/Jahia=
ACLManagerService.java
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp=
ort/ImportExportBaseService.java

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/acl=
/JahiaACLManagerService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/acl/JahiaACLManagerService.java&re=
v=3D18148&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/acl/Jahia=
ACLManagerService.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/acl/Jahia=
ACLManagerService.java Tue Aug  7 11:22:14 2007
@@ -473,6 +473,11 @@
         }
     }
 =

+    public JahiaAclName getJahiaAclName(String objectName, int siteID) {
+        return nameManager.findOrCreateJahiaAclNameByName(objectName, site=
ID);
+    }
+
+
     /**
      * Shortcut method to test permissions on an action.
      * @param actionName the name of the action to retrieve (or create) pe=
rmission for. This

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/imp=
ortexport/ImportExportBaseService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/importexport/ImportExportBaseServi=
ce.java&rev=3D18148&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp=
ort/ImportExportBaseService.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp=
ort/ImportExportBaseService.java Tue Aug  7 11:22:14 2007
@@ -47,13 +47,14 @@
 import org.jahia.hibernate.manager.JahiaSiteLanguageListManager;
 import org.jahia.hibernate.manager.SpringContextSingleton;
 import org.jahia.hibernate.model.JahiaAclEntry;
+import org.jahia.hibernate.model.JahiaAclName;
+import org.jahia.hibernate.model.JahiaAcl;
 import org.jahia.params.ProcessingContext;
 import org.jahia.params.valves.TokenAuthValveImpl;
 import org.jahia.registries.ServicesRegistry;
 import org.jahia.services.JahiaService;
 import org.jahia.services.workflow.WorkflowService;
 import org.jahia.services.workflow.ExternalWorkflow;
-import org.jahia.services.acl.ACLNotFoundException;
 import org.jahia.services.acl.JahiaACLEntry;
 import org.jahia.services.acl.JahiaACLException;
 import org.jahia.services.acl.JahiaBaseACL;
@@ -108,7 +109,6 @@
 import java.util.*;
 import java.util.regex.Pattern;
 import java.util.regex.Matcher;
-import java.util.prefs.Preferences;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 import java.util.zip.ZipOutputStream;
@@ -324,6 +324,10 @@
                 zout.putNextEntry(new ZipEntry("users.xml"));
                 exportUsers(dw, jParams.getSite());
                 dw.flush();
+
+                zout.putNextEntry(new ZipEntry("sitePermissions.xml"));
+                exportSitePermissions(dw, jParams.getSite());
+                dw.flush();
             }
 =

             for (Iterator iterator =3D files.iterator(); iterator.hasNext(=
);) {
@@ -1544,6 +1548,8 @@
                 }
             } else if (name.equals("categories.xml")) {
                 catProps =3D importCategoriesAndGetUuidProps(zis, categori=
esImportHandler);
+            } else if (name.equals("sitePermissions.xml")) {
+                importSitePermissions(jParams, zis);
             }
             zis.closeEntry();
         }
@@ -2048,7 +2054,51 @@
         ch.endElement(JAHIA_URI, "users", "jahia:users");
     }
 =

-    private void exportUsersRoles(ContentHandler ch, JahiaSite site) throw=
s JahiaException, SAXException {
+    private void exportSitePermissions(ContentHandler ch, JahiaSite site) =
throws JahiaException, SAXException {
+        ch.startDocument();
+        ch.startPrefixMapping("jahia", JAHIA_URI);
+        ch.endPrefixMapping("jahia");
+        AttributesImpl attr =3D new AttributesImpl();
+
+        attr.addAttribute(NS_URI, "jahia", "xmlns:jahia", "CDATA", JAHIA_U=
RI);
+
+        ch.startElement(JAHIA_URI, "sitePermissions", "jahia:sitePermissio=
ns", attr);
+
+        String prefix =3D "org.jahia.actions.sites." + site.getID();
+        List list =3D ServicesRegistry.getInstance().getJahiaACLManagerSer=
vice().getAclNamesStartingWith(prefix);
+        for (Iterator iterator =3D list.iterator(); iterator.hasNext();) {
+            attr =3D new AttributesImpl();
+            JahiaAclName jahiaAclName =3D (JahiaAclName) iterator.next();
+
+            String name =3D jahiaAclName.getAclName().substring(prefix.len=
gth()+1);
+            attr.addAttribute(JAHIA_URI, "name", "jahia:name", "CDATA", na=
me);
+
+            String perms =3D "";
+            JahiaAcl acl =3D jahiaAclName.getAcl();
+            Map entries =3D acl.getEntries();
+            for (Iterator iterator1 =3D entries.values().iterator(); itera=
tor1.hasNext();) {
+                JahiaAclEntry ace =3D (JahiaAclEntry) iterator1.next();
+                if (ace.getPermission(JahiaBaseACL.READ_RIGHTS) =3D=3D Jah=
iaAclEntry.ACL_YES) {
+                    if (ace.getComp_id().getType().intValue() =3D=3D 1) {
+                        JahiaUser user =3D userManagerService.lookupUser(a=
ce.getComp_id().getTarget());
+                        perms +=3D "|u:" + user.getUsername();
+                    } else{        =

+                        JahiaGroup group =3D groupManagerService.lookupGro=
up(ace.getComp_id().getTarget());
+                        perms +=3D "|g:" + group.getGroupname();
+                    }
+                }
+            }
+            if (perms.length() > 0) {
+                perms =3D perms.substring(1);
+                attr.addAttribute(JAHIA_URI, "acl", "jahia:acl", "CDATA", =
perms);
+            }
+
+            ch.startElement(JAHIA_URI, "sitePermission", "jahia:sitePermis=
sion", attr);
+            ch.endElement(JAHIA_URI, "sitePermission", "jahia:sitePermissi=
on");
+        }
+
+        ch.endElement(JAHIA_URI, "sitePermissions", "jahia:sitePermissions=
");
+        ch.endDocument();        =

     }
 =

     private void importFilesAcl(ProcessingContext jParams, InputStream is)=
 {
@@ -2069,6 +2119,10 @@
         return  importHandler.getUuidProps();
     }
 =

+    public void importSitePermissions(ProcessingContext jParams, InputStre=
am is) {
+        handleImport(is, new SitePermissionsImportHandler(jParams));
+    }
+
     private void handleImport(InputStream is, DefaultHandler h) {
         try {
             SAXParserFactory factory;

Copied: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/impor=
texport/SitePermissionsImportHandler.java (from r18134, branches/JAHIA-5-0-=
SP-BRANCH/core/src/java/org/jahia/services/importexport/UsersImportHandler.=
java)
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/services/importexport/SitePermissionsImport=
Handler.java&rev=3D18148&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp=
ort/UsersImportHandler.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp=
ort/SitePermissionsImportHandler.java Tue Aug  7 11:22:14 2007
@@ -23,15 +23,17 @@
 import org.jahia.services.sites.JahiaSite;
 import org.jahia.services.usermanager.*;
 import org.jahia.services.pages.ContentPage;
+import org.jahia.services.acl.JahiaBaseACL;
+import org.jahia.services.acl.JahiaACLEntry;
+import org.jahia.hibernate.model.JahiaAclName;
+import org.jahia.hibernate.model.JahiaAclEntry;
+import org.jahia.hibernate.model.JahiaAcl;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
 =

 import java.security.Principal;
-import java.util.Properties;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.*;
 =

 /**
  * Created by IntelliJ IDEA.
@@ -40,7 +42,7 @@
  * Time: 17:57:36
  * To change this template use File | Settings | File Templates.
  */
-public class UsersImportHandler  extends DefaultHandler {
+public class SitePermissionsImportHandler extends DefaultHandler {
     private static Logger logger =3D Logger.getLogger(UsersImportHandler.c=
lass);
     private JahiaUserManagerService u;
     private JahiaGroupManagerService g;
@@ -52,7 +54,7 @@
     private JahiaGroup currentGroup =3D null;
     private boolean member =3D false;
 =

-    public UsersImportHandler(ProcessingContext jParams) {
+    public SitePermissionsImportHandler(ProcessingContext jParams) {
         site =3D jParams.getSite();
         u =3D ServicesRegistry.getInstance().getJahiaUserManagerService();
         g =3D ServicesRegistry.getInstance().getJahiaGroupManagerService();
@@ -61,79 +63,34 @@
     }
 =

     public void startElement(String uri, String localName, String qName, A=
ttributes attributes) throws SAXException {
-        try {
-            if (currentGroup =3D=3D null) {
-                if (localName.equals("user")) {
-                    String name =3D attributes.getValue(ImportExportBaseSe=
rvice.JAHIA_URI, "name");
-                    String pass =3D null;
-                    Properties p =3D new Properties();
-
-                    for (int i =3D 0; i < attributes.getLength(); i++) {
-                        String k =3D attributes.getLocalName(i);
-                        String v =3D attributes.getValue(i);
-                        if (k.equals("name")) {
-                            //
-                        } else if (k.equals("password")) {
-                            pass =3D v;
-                        } else if (k.equals("user_homepage")) {
-                            List l =3D ServicesRegistry.getInstance().getJ=
ahiaPageService().findPagesByPropertyNameAndValue("originalUuid", v);
-                            if (!l.isEmpty()) {
-                                p.put(k, ""+((ContentPage) l.iterator().ne=
xt()).getID());
-                            } else {
-                                uuidProps.add(new String[] {name,k,v});
-                            }
+        if (localName.equals("sitePermission")) {
+            String name =3D attributes.getValue(ImportExportBaseService.JA=
HIA_URI, "name");
+            String userlist =3D attributes.getValue(ImportExportBaseServic=
e.JAHIA_URI, "acl");
+
+            String prefix =3D "org.jahia.actions.sites." + site.getID();
+            JahiaAclName aclName =3D ServicesRegistry.getInstance().getJah=
iaACLManagerService().getJahiaAclName(prefix+"."+name, site.getID());
+            JahiaAcl jAcl =3D aclName.getAcl();
+            JahiaAclEntry permissions =3D new JahiaAclEntry (1,0); // gran=
t rwa , no tristate
+
+            if (userlist !=3D null && userlist.length()>0) {
+                StringTokenizer st =3D new StringTokenizer(userlist, "|");
+                while (st.hasMoreElements()) {
+                    String principal =3D st.nextToken();
+                    String username =3D principal.substring(2);
+                    try {
+                        if (principal.charAt(0) =3D=3D 'u') {
+                            JahiaUser user =3D ServicesRegistry.getInstanc=
e().getJahiaSiteUserManagerService().getMember(site.getID(), username);
+                            jAcl.setUserEntry(user, permissions);
                         } else {
-                            p.put(k,v);
+                            JahiaGroup group =3D ServicesRegistry.getInsta=
nce().getJahiaGroupManagerService().lookupGroup(site.getID(), username);
+                            jAcl.setGroupEntry(group, permissions);
                         }
+                    } catch (JahiaException e) {
+                        logger.debug("Cannot get user "+username ,e);
                     }
-                    if (name !=3D null && pass !=3D null) {
-                       if (su.getMember(site.getID(), name) =3D=3D null) {
-                            JahiaUser user =3D u.createUser(name, pass, na=
me+":"+site.getID(), site.getID(), p);
-                            su.addMember(site.getID(), user);
-                        }
-                    }
-                } else if (localName.equals("group")) {
-                    String name =3D attributes.getValue(ImportExportBaseSe=
rvice.JAHIA_URI, "name");
-                    Properties p =3D new Properties();
-                    for (int i =3D 0; i < attributes.getLength(); i++) {
-                        String k =3D attributes.getLocalName(i);
-                        String v =3D attributes.getValue(i);
-                        if (k.equals("name")) {
-                            //
-                        } else if (k.equals("group_homepage")) {
-                            List l =3D ServicesRegistry.getInstance().getJ=
ahiaPageService().findPagesByPropertyNameAndValue("originalUuid", v);
-                            if (!l.isEmpty()) {
-                                p.put(k, ""+((ContentPage) l.iterator().ne=
xt()).getID());
-                            } else {
-                                uuidProps.add(new String[] {name,k,v});
-                            }
-                        } else {
-                            p.put(k,v);
-                        }
-                    }
-                    if (name !=3D null) {
-                        currentGroup =3D g.lookupGroup(site.getID(), name);
-                        if (currentGroup =3D=3D null) {
-                            currentGroup =3D g.createGroup(site.getID(), n=
ame, p);
-                            sg.addGroup(site.getID(), currentGroup);
-                        }
-                    }
-                }
-            } else {
-                member =3D true;
-                Principal p =3D null;
-                String name =3D attributes.getValue(ImportExportBaseServic=
e.JAHIA_URI, "name");
-                if (localName.equals("user")) {
-                    p =3D su.getMember(site.getID(), name);
-                } else if (localName.equals("group")) {
-                    p =3D g.lookupGroup(site.getID(), name);
-                }
-                if (p !=3D null) {
-                    currentGroup.addMember(p);
                 }
             }
-        } catch (JahiaException e) {
-            logger.error("Cannot import", e);
+            aclName.setAcl(jAcl);
         }
     }
 =

@@ -175,4 +132,4 @@
         }
     }
 =

-}
+}
\ No newline at end of file

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to