r1359 - in xwiki/trunk/src/main/java/com/xpn/xwiki: api doc

Sergiu Dumitriu sdumitriu at users.forge.objectweb.org
Wed Oct 4 12:53:29 CEST 2006


Author: sdumitriu
Date: 2006-10-04 12:53:29 +0200 (Wed, 04 Oct 2006)
New Revision: 1359

Modified:
   xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java
   xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java
Log:
Split XWikiDocument.readFromForm into 3 functions, responsible for reading document specific properties, translation specific properties, and document objects.
Add XWikiDocument.getRealLanguage which obtains the real language of the document, defaultLanguage or translation language.


Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java	2006-10-04 10:42:26 UTC (rev 1358)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/api/Document.java	2006-10-04 10:53:29 UTC (rev 1359)
@@ -111,8 +111,7 @@
      *
      * for exemple if the fullName of a document is "MySpace.Mydoc", the name is MySpace
      *
-     * @deprecated use {@link #getSpace()} instead of this function
-     * @return
+     * @return the name of the space of the document
      */
     public String getSpace() {
         return doc.getSpace();

Modified: xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java
===================================================================
--- xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java	2006-10-04 10:42:26 UTC (rev 1358)
+++ xwiki/trunk/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java	2006-10-04 10:53:29 UTC (rev 1359)
@@ -888,11 +888,9 @@
             if (objects != null) {
                 Vector tobjects = (Vector) templatedoc.getxWikiObjects().get(name);
                 for (int i = 0; i < tobjects.size(); i++) {
-                    {
-                        BaseObject bobj = (BaseObject) ((BaseObject) tobjects.get(i)).clone();
-                        objects.add(bobj);
-                        bobj.setNumber(objects.size() - 1);
-                    }
+                    BaseObject bobj = (BaseObject) ((BaseObject) tobjects.get(i)).clone();
+                    objects.add(bobj);
+                    bobj.setNumber(objects.size() - 1);
                 }
             } else {
                 Vector tobjects = (Vector) templatedoc.getObjects(name);
@@ -1132,7 +1130,28 @@
         this.fromCache = fromCache;
     }
 
-    public void readFromForm(EditForm eform, XWikiContext context) throws XWikiException {
+    public void readDocMetaFromForm(EditForm eform, XWikiContext context) throws XWikiException {
+        String defaultLanguage = eform.getDefaultLanguage();
+        if (defaultLanguage != null)
+            setDefaultLanguage(defaultLanguage);
+
+        String defaultTemplate = eform.getDefaultTemplate();
+        if (defaultTemplate != null)
+            setDefaultTemplate(defaultTemplate);
+
+        String creator = eform.getCreator();
+        if ((creator != null) && (!creator.equals(getCreator()))) {
+            if ((getCreator().equals(context.getUser()))
+                    || (context.getWiki().getRightService().hasAdminRights(context)))
+                setCreator(creator);
+        }
+
+        String parent = eform.getParent();
+        if (parent != null)
+            setParent(parent);
+    }
+
+    public void readTranslationMetaFromForm(EditForm eform, XWikiContext context) throws XWikiException {
         String content = eform.getContent();
         if ((content != null) && (!content.equals(""))) {
             // Cleanup in case we use HTMLAREA
@@ -1140,32 +1159,12 @@
             content = context.getUtil().substitute("s/<br class=\"htmlarea\" \\/>/\r\n/g", content);
             setContent(content);
         }
-        String parent = eform.getParent();
-        if (parent != null)
-            setParent(parent);
-
         String title = eform.getTitle();
         if (title != null)
             setTitle(title);
+    }
 
-        String creator = eform.getCreator();
-        if ((creator != null) && (!creator.equals(getCreator()))) {
-            if ((getCreator().equals(context.getUser()))
-                    || (context.getWiki().getRightService().hasAdminRights(context)))
-                setCreator(creator);
-        }
-
-        String defaultLanguage = eform.getDefaultLanguage();
-        if (defaultLanguage != null)
-            setDefaultLanguage(defaultLanguage);
-
-        String defaultTemplate = eform.getDefaultTemplate();
-        if (defaultTemplate != null)
-            setDefaultTemplate(defaultTemplate);
-
-        // This is now done before
-        // readFromTemplate(eform, context);
-
+    public void readObjectsFromForm(EditForm eform, XWikiContext context) throws XWikiException {
         Iterator itobj = getxWikiObjects().keySet().iterator();
         while (itobj.hasNext()) {
             String name = (String) itobj.next();
@@ -1173,7 +1172,7 @@
             Vector newobjects = new Vector();
             newobjects.setSize(bobjects.size());
             for (int i = 0; i < bobjects.size(); i++) {
-                BaseObject oldobject = (BaseObject) getObject(name, i);
+                BaseObject oldobject = getObject(name, i);
                 if (oldobject != null) {
                     BaseClass baseclass = oldobject.getxWikiClass(context);
                     BaseObject newobject = (BaseObject) baseclass.fromMap(eform.getObject(baseclass.getName() + "_" + i), oldobject);
@@ -1185,6 +1184,12 @@
             getxWikiObjects().put(name, newobjects);
         }
     }
+    
+    public void readFromForm(EditForm eform, XWikiContext context) throws XWikiException {
+        readDocMetaFromForm(eform, context);
+        readTranslationMetaFromForm(eform, context);
+        readObjectsFromForm(eform, context);
+    }
 
     /*
     public void readFromTemplate(EditForm eform, XWikiContext context) throws XWikiException {
@@ -1221,7 +1226,6 @@
                 throw new XWikiException(XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_APP_DOCUMENT_NOT_EMPTY,
                         "Cannot add a template to document {0} because it already has content", null, args);
             } else {
-
                 if (template.indexOf('.') == -1) {
                     template = getWeb() + "." + template;
                 }
@@ -2250,7 +2254,6 @@
         return tdoc;
     }
 
-
     public String getRealLanguage(XWikiContext context) throws XWikiException {
         String lang = getLanguage();
         if ((lang.equals("") || lang.equals("default")))
@@ -2259,6 +2262,14 @@
             return lang;
     }
 
+    public String getRealLanguage() {
+        String lang = getLanguage();
+        if ((lang.equals("") || lang.equals("default")))
+            return getDefaultLanguage();
+        else
+            return lang;
+    }
+
     public List getTranslationList(XWikiContext context) throws XWikiException {
     	return getStore().getTranslationList(this, context);
     }
@@ -2822,18 +2833,22 @@
         }
     }
 
+    /**
+      * Computes a document hash, taking into account all document data:
+      * content, objects, attachments, metadata...
+      * TODO: cache the hash value, update only on modification.
+      */
     public String getVersionHashCode(XWikiContext context){
         MessageDigest md5 = null;
 
         try {
             md5 = MessageDigest.getInstance("MD5");
-        } catch (NoSuchAlgorithmException e) {
-            System.out.println("Error: " + e);
+        } catch (NoSuchAlgorithmException ex) {
+            log.error("Cannot create MD5 object", ex);
             return this.hashCode() + "";
         }
 
         try {
-            //Document doc = toXMLDocument(true, false, true, false);
             String valueBeforeMD5 = toXML(true, false, true, false, context);
             md5.update(valueBeforeMD5.getBytes());
 
@@ -2844,10 +2859,9 @@
                 if (b < 0x10) sb.append('0');
                 sb.append(Integer.toHexString(b));
             }
-            String valueAfterMD5 = sb.toString();
-            return valueAfterMD5;
-        } catch (Exception e) {
-            e.printStackTrace();
+            return sb.toString();
+        } catch (Exception ex) {
+            log.error("Exception while computing document hash", ex);
         }
         return this.hashCode() + "";
     }





More information about the Xwiki-notifications mailing list