JournalCreationStrategy.java |
1 /** 2 * Copyright (c) 2000-2007 Liferay, Inc. All rights reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a copy 5 * of this software and associated documentation files (the "Software"), to deal 6 * in the Software without restriction, including without limitation the rights 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 * copies of the Software, and to permit persons to whom the Software is 9 * furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 * SOFTWARE. 21 */ 22 23 package com.liferay.portlet.journal.lar; 24 25 import com.liferay.portlet.journal.model.JournalArticle; 26 27 /** 28 * <a href="JournalCreationStrategy.java.html"><b><i>View Source</i></b></a> 29 * 30 * <p> 31 * An interface defining how newly created content should be added to the 32 * Journal when imported from a LAR file. A class implementing this interface 33 * should be specified in <i>portal.properties</i> under the 34 * <b>journal.lar.creation.strategy</b> property. 35 * </p> 36 * 37 * @author Joel Kozikowski 38 * 39 */ 40 public interface JournalCreationStrategy { 41 42 /** 43 * Returns the author's user id to assign to newly created content. If null 44 * is returned, the original author of the exported content will be used. 45 * 46 * @param companyId the company id of the layout 47 * @param groupId the group id of the layout 48 * @param journalObj the new object must be an instance of 49 * JournalArticle, JournalStructure or JournalTemplate 50 * @return the author's user id, or 0 to use the original author 51 */ 52 public long getAuthorUserId(long companyId, long groupId, Object journalObj) 53 throws Exception; 54 55 /** 56 * Returns the author's user name. This method should be ignored if 57 * <code>getAuthorUserId()</code> returns null. 58 * 59 * @param companyId the company id of the layout 60 * @param groupId the group id of the layout 61 * @param journalObj the new object must be an instance of 62 * JournalArticle, JournalStructure or JournalTemplate 63 * @return the author's user name must not be null if 64 * <code>getAuthorUserId()</code> does not return null 65 */ 66 public String getAuthorUserName( 67 long companyId, long groupId, Object journalObj) 68 throws Exception; 69 70 /** 71 * Returns the approver's user id to assign to newly created content. If 72 * null is returned, the article will not be marked as approved. 73 * 74 * @param companyId the company id of the layout 75 * @param groupId the group id of the layout 76 * @param journalObj the new object must be an instance of 77 * JournalArticle, JournalStructure or JournalTemplate 78 * @return the approver's user id, or 0 if the article should not be 79 * approved 80 */ 81 public long getApprovalUserId( 82 long companyId, long groupId, Object journalObj) 83 throws Exception; 84 85 /** 86 * Returns the approver's user name. This method should be ignored if 87 * <code>getApprovalUserId()</code> returns null. 88 * 89 * @param companyId the company id of the layout 90 * @param groupId the group id of the layout 91 * @param journalObj the new object must be an instance of 92 * JournalArticle, JournalStructure or JournalTemplate 93 * @return the approver's user name must not be null if 94 * <code>getApprovalUserId()</code> does not return null 95 */ 96 public String getApprovalUserName( 97 long companyId, long groupId, Object journalObj) 98 throws Exception; 99 100 /** 101 * Gives the content creation strategy an opportunity to transform the 102 * content before the new article is saved to the database. Possible use 103 * cases include using Velocity to merge in community specific values into 104 * the text. Returns the new content to assign to the article. If null is 105 * returned, the article content will be added unchanged. 106 * 107 * @param companyId the company id of the layout 108 * @param groupId the group id of the layout 109 * @param newArticle the new article being created 110 * @return the transformed content to save in the database or null if 111 * the content should be added unchanged 112 */ 113 public String getTransformedContent( 114 long companyId, long groupId, JournalArticle newArticle) 115 throws Exception; 116 117 /** 118 * Returns true if the default community permissions should be added when 119 * the specified journalObj is created. 120 * 121 * @param companyId the company id of the layout 122 * @param groupId the group id of the layout 123 * @param journalObj the new object must be an instance of 124 * JournalArticle, JournalStructure or JournalTemplate 125 * @return true if default community permissions should be added to the 126 * specified journalObj 127 */ 128 public boolean addCommunityPermissions( 129 long companyId, long groupId, Object journalObj) 130 throws Exception; 131 132 /** 133 * Returns true if the default guest permissions should be added when the 134 * specified journalObj is created. 135 * 136 * @param companyId the company id of the layout 137 * @param groupId the group id of the layout 138 * @param journalObj the new object must be an instance of 139 * JournalArticle, JournalStructure or JournalTemplate 140 * @return true if default guest permissions should be added to the 141 * specified journalObj 142 */ 143 public boolean addGuestPermissions( 144 long companyId, long groupId, Object journalObj) 145 throws Exception; 146 147 }