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