public int createFileContent(CreateFileContentParams params) { validateCreateFileContentParams(params); CategoryEntity category = categoryDao.findByKey(new CategoryKey(params.categoryKey)); UserEntity runningUser = securityService.getImpersonatedPortalUser(); LegacyFileContentData contentdata = (LegacyFileContentData) fileContentResolver.resolveContentdata(params.fileContentData); List<BinaryDataAndBinary> binaryDataEntries = new ArrayList<BinaryDataAndBinary>(); binaryDataEntries.add( BinaryDataAndBinary.convertFromFileBinaryInput(params.fileContentData.binary)); CreateContentCommand createCommand = new CreateContentCommand(); createCommand.setAccessRightsStrategy( CreateContentCommand.AccessRightsStrategy.INHERIT_FROM_CATEGORY); createCommand.setCreator(runningUser); createCommand.setStatus(ContentStatus.get(params.status)); createCommand.setPriority(0); createCommand.setCategory(category); createCommand.setLanguage(category.getUnitExcludeDeleted().getLanguage()); createCommand.setAvailableFrom(params.publishFrom); createCommand.setAvailableTo(params.publishTo); createCommand.setContentData(contentdata); createCommand.setContentName( new PrettyPathNameCreator(transliterate).generatePrettyPathName(contentdata.getTitle())); createCommand.setBinaryDatas(binaryDataEntries); createCommand.setUseCommandsBinaryDataToAdd(true); if (params.siteKey != null) { createCommand.setSiteKey(new SiteKey(params.siteKey)); } ContentKey contentKey = contentService.createContent(createCommand); return contentKey.toInt(); }
private ContentKey storeSimpleContent(String title) { ContentEntity content = factory.createContent("MyCategory", "en", "testuser", "0", new Date()); ContentVersionEntity version = factory.createContentVersion("0", "testuser"); ContentTypeConfig contentTypeConfig = ContentTypeConfigParser.parse(ContentHandlerName.CUSTOM, createSimpleContentTypeConfig()); CustomContentData contentData = new CustomContentData(contentTypeConfig); TextDataEntryConfig titleConfig = new TextDataEntryConfig("myTitle", true, title, "contentdata/mytitle"); contentData.add(new TextDataEntry(titleConfig, "relatedconfig")); version.setContentData(contentData); UserEntity runningUser = fixture.findUserByName("testuser"); CreateContentCommand createContentCommand = new CreateContentCommand(); createContentCommand.setCreator(runningUser); createContentCommand.populateCommandWithContentValues(content); createContentCommand.populateCommandWithContentVersionValues(version); createContentCommand.setBinaryDatas(new ArrayList<BinaryDataAndBinary>()); createContentCommand.setUseCommandsBinaryDataToAdd(true); ContentKey contentKey = contentService.createContent(createContentCommand); hibernateTemplate.flush(); hibernateTemplate.clear(); return contentKey; }
private void createUpdateContentWithBinary() { UserEntity runningUser = fixture.findUserByName("testuser"); // prepare: save a new content ContentEntity content = new ContentEntity(); content.setPriority(0); content.setAvailableFrom(null); content.setAvailableTo(null); content.setCategory(fixture.findCategoryByName("MyCategory")); content.setLanguage(fixture.findLanguageByCode("en")); content.setName("testcontentwithbinary"); ContentVersionEntity version = new ContentVersionEntity(); version.setContent(content); version.setModifiedBy(runningUser); version.setStatus(com.enonic.cms.core.content.ContentStatus.DRAFT); version.setContent(content); CustomContentData contentData = new CustomContentData( fixture.findContentTypeByName("MyContentType").getContentTypeConfig()); TextDataEntryConfig titleConfig = (TextDataEntryConfig) contentData.getContentTypeConfig().getForm().getInputConfig("myTitle"); TextDataEntryConfig updateFieldConfig = (TextDataEntryConfig) contentData.getContentTypeConfig().getForm().getInputConfig("fieldToUpdate"); BinaryDataEntryConfig binaryConfig = (BinaryDataEntryConfig) contentData.getContentTypeConfig().getForm().getInputConfig("myBinaryfile"); contentData.add(new TextDataEntry(titleConfig, "testitle")); contentData.add(new TextDataEntry(updateFieldConfig, "foobar")); contentData.add(new BinaryDataEntry(binaryConfig, "%0")); version.setContentData(contentData); version.setTitle(contentData.getTitle()); CreateContentCommand createContentCommand = new CreateContentCommand(); createContentCommand.setCreator(runningUser); createContentCommand.populateCommandWithContentValues(content); createContentCommand.populateCommandWithContentVersionValues(version); List<BinaryDataAndBinary> binaryDatas = new ArrayList<BinaryDataAndBinary>(); binaryDatas.add(factory.createBinaryDataAndBinary("dummyBinary", dummyBinary)); createContentCommand.setBinaryDatas(binaryDatas); createContentCommand.setUseCommandsBinaryDataToAdd(true); contentWithBinaryKey = contentService.createContent(createContentCommand); fixture.flushAndClearHibernateSession(); }
public int createContent(CreateContentParams params) throws ClientException { final CategoryEntity category = validateCreateContentParams(params); final CreateContentCommand command = new CreateContentCommand(); command.setPriority(0); command.setAvailableFrom(params.publishFrom); command.setAvailableTo(params.publishTo); command.setCategory(category); command.setLanguage(category.getUnitExcludeDeleted().getLanguage()); command.setStatus(ContentStatus.get(params.status)); command.setChangeComment(params.changeComment); // content data final ContentTypeEntity contentType = category.getContentType(); if (contentType == null) { throw new IllegalArgumentException( "Unable to create content in category " + category.getKey() + ". Category has no contenttype set."); } final ContentDataResolver customContentResolver = new ContentDataResolver(); final CustomContentData contentdata = customContentResolver.resolveContentdata(params.contentData, contentType); command.setContentData(contentdata); command.setContentName( new PrettyPathNameCreator(transliterate).generatePrettyPathName(contentdata.getTitle())); final List<BinaryDataAndBinary> binaryDatas = BinaryDataAndBinary.convertFromBinaryInputs(params.contentData.getBinaryInputs()); command.setBinaryDatas(binaryDatas); command.setUseCommandsBinaryDataToAdd(true); command.setAccessRightsStrategy( CreateContentCommand.AccessRightsStrategy.INHERIT_FROM_CATEGORY); command.setCreator(securityService.getImpersonatedPortalUser()); if (params.siteKey != null) { command.setSiteKey(new SiteKey(params.siteKey)); } return contentService.createContent(command).toInt(); }
@Test public void testUpdateCurrentVersion() { ContentKey relatedContentKey1 = storeSimpleContent("rel1"); ContentKey relatedContentKey2 = storeSimpleContent("rel2"); ContentKey relatedContentKey3 = storeSimpleContent("rel3"); ContentKey relatedContentKey4 = storeSimpleContent("rel4"); ContentKey relatedContentKey5 = storeSimpleContent("rel5"); ContentEntity content = factory.createContent("MyCategory", "en", "testuser", "0", new Date()); ContentVersionEntity version = factory.createContentVersion("0", "testuser"); ContentTypeConfig contentTypeConfig = ContentTypeConfigParser.parse(ContentHandlerName.CUSTOM, configEl); CustomContentData contentData = new CustomContentData(contentTypeConfig); TextDataEntryConfig titleConfig = new TextDataEntryConfig("myTitle", true, "Tittel", "contentdata/mytitle"); contentData.add(new TextDataEntry(titleConfig, "test title")); RelatedContentDataEntryConfig multipleRelatedContentsConfig = (RelatedContentDataEntryConfig) contentTypeConfig.getInputConfig("myMultipleRelatedContent"); contentData.add( new RelatedContentsDataEntry(multipleRelatedContentsConfig) .add(new RelatedContentDataEntry(multipleRelatedContentsConfig, relatedContentKey1)) .add(new RelatedContentDataEntry(multipleRelatedContentsConfig, relatedContentKey2))); RelatedContentDataEntryConfig soleRelatedConfig = (RelatedContentDataEntryConfig) contentTypeConfig.getInputConfig("mySoleRelatedContent"); contentData.add(new RelatedContentDataEntry(soleRelatedConfig, relatedContentKey3)); version.setContentData(contentData); UserEntity runningUser = fixture.findUserByName("testuser"); CreateContentCommand createContentCommand = new CreateContentCommand(); createContentCommand.setCreator(runningUser); createContentCommand.populateCommandWithContentValues(content); createContentCommand.populateCommandWithContentVersionValues(version); createContentCommand.setBinaryDatas(new ArrayList<BinaryDataAndBinary>()); createContentCommand.setUseCommandsBinaryDataToAdd(true); ContentKey contentKey = contentService.createContent(createContentCommand); hibernateTemplate.flush(); hibernateTemplate.clear(); ContentEntity persistedContent = contentDao.findByKey(contentKey); assertNotNull(persistedContent); ContentVersionEntity persistedVersion = persistedContent.getMainVersion(); assertNotNull(persistedVersion); assertEquals(3, persistedVersion.getRelatedChildren(true).size()); ContentEntity changedContent = factory.createContent("MyCategory", "en", "testuser", "0", new Date()); changedContent.setKey(contentKey); ContentVersionEntity changedVersion = factory.createContentVersion("0", "testuser"); changedVersion.setKey(persistedVersion.getKey()); CustomContentData changedCD = new CustomContentData(contentTypeConfig); TextDataEntryConfig changedTitleConfig = new TextDataEntryConfig("myTitle", true, "Tittel", "contentdata/mytitle"); changedCD.add(new TextDataEntry(changedTitleConfig, "changed title")); changedCD.add( new RelatedContentsDataEntry(multipleRelatedContentsConfig) .add(new RelatedContentDataEntry(multipleRelatedContentsConfig, relatedContentKey3)) .add(new RelatedContentDataEntry(multipleRelatedContentsConfig, relatedContentKey5))); changedCD.add(new RelatedContentDataEntry(soleRelatedConfig, relatedContentKey4)); changedVersion.setContentData(changedCD); UpdateContentCommand updateContentCommand = UpdateContentCommand.updateExistingVersion2(persistedVersion.getKey()); updateContentCommand.setModifier(runningUser); updateContentCommand.setUpdateAsMainVersion(false); updateContentCommand.populateContentValuesFromContent(persistedContent); updateContentCommand.populateContentVersionValuesFromContentVersion(changedVersion); contentService.updateContent(updateContentCommand); hibernateTemplate.flush(); hibernateTemplate.clear(); ContentEntity contentAfterUpdate = contentDao.findByKey(contentKey); ContentVersionEntity versionAfterUpdate = contentVersionDao.findByKey(persistedVersion.getKey()); Document contentDataXmlAfterUpdate = versionAfterUpdate.getContentDataAsJDomDocument(); AssertTool.assertXPathEquals( "/contentdata/mysolerelatedcontent/@key", contentDataXmlAfterUpdate, relatedContentKey4.toString()); AssertTool.assertXPathEquals( "/contentdata/myrelatedcontents/content[1]/@key", contentDataXmlAfterUpdate, relatedContentKey3.toString()); AssertTool.assertXPathEquals( "/contentdata/myrelatedcontents/content[2]/@key", contentDataXmlAfterUpdate, relatedContentKey5.toString()); assertEquals(3, versionAfterUpdate.getRelatedChildren(true).size()); }