package com.celements.model.access; import java.util.Date; import org.xwiki.component.annotation.Component; import org.xwiki.component.annotation.Requirement; import org.xwiki.model.reference.DocumentReference; import org.xwiki.model.reference.EntityReference; import org.xwiki.model.reference.SpaceReference; import org.xwiki.model.reference.WikiReference; import com.celements.model.context.ModelContext; import com.celements.model.util.References; import com.xpn.xwiki.doc.XWikiDocument; @Component public class DefaultXWikiDocumentCreator implements XWikiDocumentCreator { @Requirement private ModelContext context; @Override public XWikiDocument create(DocumentReference docRef) { XWikiDocument doc = new XWikiDocument(docRef); doc.setNew(true); doc.setDefaultLanguage(getDefaultLangForCreatingDoc(docRef)); doc.setLanguage(""); doc.setSyntax(doc.getSyntax()); // assures that syntax is set, 'new' has to be true Date creationDate = new Date(); doc.setCreationDate(creationDate); doc.setContentUpdateDate(creationDate); doc.setDate(creationDate); doc.setCreator(context.getUserName()); doc.setAuthor(context.getUserName()); doc.setTranslation(0); doc.setContent(""); doc.setContentDirty(true); doc.setMetaDataDirty(true); return doc; } /** * when creating doc, get default language from space. except get it from wiki directly when * creating web preferences */ private String getDefaultLangForCreatingDoc(DocumentReference docRef) { Class<? extends EntityReference> toExtractClass; if (docRef.getName().equals(ModelContext.WEB_PREF_DOC_NAME)) { toExtractClass = WikiReference.class; } else { toExtractClass = SpaceReference.class; } return context.getDefaultLanguage(References.extractRef(docRef, toExtractClass).get()); } }