mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Simple promote action (moves changed content from sandbox to sandbox).
Fixed various pathetic flaws in SimpleAVMSubmitAction. AVMSyncService.flatten() silently ignores harmless do nothing calls. Cleared up small episode of Eclipse Add Import Tourette's. ;) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3900 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Copyright (C) 2006 Alfresco, Inc.
|
||||
*
|
||||
* Licensed under the Mozilla Public License version 1.1
|
||||
* with a permitted attribution clause. You may obtain a
|
||||
* copy of the License at
|
||||
*
|
||||
* http://www.alfresco.org/legal/license.txt
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the
|
||||
* License.
|
||||
*/
|
||||
|
||||
package org.alfresco.repo.avm.actions;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.repo.action.ParameterDefinitionImpl;
|
||||
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
|
||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||
import org.alfresco.service.cmr.action.Action;
|
||||
import org.alfresco.service.cmr.action.ParameterDefinition;
|
||||
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
||||
import org.alfresco.service.cmr.avmsync.AVMSyncException;
|
||||
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
/**
|
||||
* An ActionExecuter that promotes content from one store to another.
|
||||
* The NodeRef argument is in the source AVMStore. The 'target-store'
|
||||
* mandatory argument is the name of the destination store.
|
||||
* @author britt
|
||||
*/
|
||||
public class SimpleAVMPromoteAction extends ActionExecuterAbstractBase
|
||||
{
|
||||
public static final String NAME = "simple-avm-promote";
|
||||
public static final String PARAM_TARGET_STORE = "target-store";
|
||||
|
||||
/**
|
||||
* The AVMSyncService instance.
|
||||
*/
|
||||
private AVMSyncService fAVMSyncService;
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public SimpleAVMPromoteAction()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the AVMSyncService instance.
|
||||
* @param avmSyncService
|
||||
*/
|
||||
public void setAvmSyncService(AVMSyncService avmSyncService)
|
||||
{
|
||||
fAVMSyncService = avmSyncService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Do a promotion of an asset from one sandbox to another.
|
||||
* Takes a mandatory parameter 'target-store' which is the name of the
|
||||
* target AVMStore.
|
||||
* @param action The source of parameters.
|
||||
* @param actionedUponNodeRef The source AVM NodeRef.
|
||||
*/
|
||||
@Override
|
||||
protected void executeImpl(Action action, NodeRef actionedUponNodeRef)
|
||||
{
|
||||
String targetStoreName = (String)action.getParameterValue(PARAM_TARGET_STORE);
|
||||
// Crack the NodeRef.
|
||||
Object [] avmVersionPath = AVMNodeConverter.ToAVMVersionPath(actionedUponNodeRef);
|
||||
int version = (Integer)avmVersionPath[0];
|
||||
String path = (String)avmVersionPath[1];
|
||||
// Get store name and path parts.
|
||||
String [] storePath = path.split(":");
|
||||
if (storePath.length != 2)
|
||||
{
|
||||
throw new AVMSyncException("Malformed source path: " + path);
|
||||
}
|
||||
// Compute the corresponding target path.
|
||||
String targetPath = targetStoreName + ":" + storePath[1];
|
||||
// Find the differences.
|
||||
List<AVMDifference> diffs =
|
||||
fAVMSyncService.compare(version, path, -1, targetPath);
|
||||
// Do the promote.
|
||||
fAVMSyncService.update(diffs, true, true, false, false);
|
||||
// Flatten the source on top of the destination.
|
||||
fAVMSyncService.flatten(storePath[0] + ":/appBase",
|
||||
targetStoreName + ":/appBase");
|
||||
}
|
||||
|
||||
/**
|
||||
* Define needed parameters.
|
||||
* @param paramList The List of ParameterDefinitions to add to.
|
||||
*/
|
||||
@Override
|
||||
protected void addParameterDefinitions(List<ParameterDefinition> paramList)
|
||||
{
|
||||
paramList.add(new ParameterDefinitionImpl(PARAM_TARGET_STORE,
|
||||
DataTypeDefinition.TEXT,
|
||||
true,
|
||||
getParamDisplayLabel(PARAM_TARGET_STORE)));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user