<bean id="CheckInOutBean" class="lpr.alfresco.web.bean.CheckInOutBean" init-method="init">
</bean>
<action id="check_out_document">
<evaluator>
lpr.alfresco.delegation.evaluator.DirAccessEvaluator
</evaluator>
<label-id>check_out_document</label-id>
<image>/images/extension/icons/create_user.gif</image>
<action-listener>#{CheckInOutBean.out}</action-listener>
<params>
<param name="id">#{actionContext.id}</param>
</params>
</action>
package lpr.alfresco.web.bean;
import javax.faces.event.ActionEvent;
import org.alfresco.web.bean.BrowseBean;
public class CheckInOutBean {
//private static Log logger = LogFactory.getLog(CheckInOutBean.class);
protected BrowseBean browseBean;
// private NodeRef nodeRef = null;
public void init()
{
System.out.println("Init");
}
public void out(ActionEvent event) {
try {
System.out.println("CheckOut Document ");
// Ici reste du code à écrire
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
public class ActionExecuterAbstractBase
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
*/
package org.alfresco.sample;
import java.util.List;
import org.alfresco.repo.action.ParameterDefinitionImpl;
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ParameterDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Logger action executer.
*
* This action will log a message to the application log file at the level specified.
*
* @author Roy Wetherall
*/
public class LoggerActionExecuter extends ActionExecuterAbstractBase
{
/** The logger */
private static Log logger = LogFactory.getLog("org.alfresco.sample");
/** The name of the action */
public static final String NAME = "logger-action";
/** The parameter names */
public static final String PARAM_LOG_MESSAGE = "param-log-message";
public static final String PARAM_LOG_LEVEL = "param-log-level";
/**
* This action will take the log message and log it at the provided log level.
*
* If the log level is not provided the default will be INFO.
*
* @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
protected void executeImpl(Action action, NodeRef actionedUponNodeRef)
{
// Get the log message parameter
String logMessage = (String)action.getParameterValue(PARAM_LOG_MESSAGE);
if (logMessage != null && logMessage.length() != 0)
{
// Get the log level (default to INFO)
LogLevel logLevel = LogLevel.INFO;
String logLevelParam = (String) action.getParameterValue(PARAM_LOG_LEVEL);
if (logLevelParam != null && logLevelParam.length() != 0)
{
logLevel = LogLevel.valueOf(logLevelParam);
}
// Log the message based on the log level
switch (logLevel)
{
case DEBUG:
{
logger.debug(logMessage);
break;
}
case ERROR:
{
logger.error(logMessage);
break;
}
case FATAL:
{
logger.fatal(logMessage);
break;
}
case INFO:
{
logger.info(logMessage);
break;
}
case TRACE:
{
logger.trace(logMessage);
break;
}
case WARN:
{
logger.warn(logMessage);
break;
}
}
}
}
/**
* @see org.alfresco.repo.action.ParameterizedItemAbstractBase#addParameterDefinitions(java.util.List)
*/
@Override
protected void addParameterDefinitions(List<ParameterDefinition> paramList)
{
// Specify the parameters
paramList.add(new ParameterDefinitionImpl(PARAM_LOG_MESSAGE, DataTypeDefinition.TEXT, true, getParamDisplayLabel(PARAM_LOG_MESSAGE)));
paramList.add(new ParameterDefinitionImpl(PARAM_LOG_LEVEL, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_LOG_LEVEL)));
}
/**
* Helper enum to differentiate log levels
*/
private enum LogLevel
{
DEBUG, ERROR, FATAL, INFO, WARN, TRACE
}
}
Votre action doit dériver depublic class ActionExecuterAbstractBase
Je vous conseille d'examiner les exemples suivants livrés avec le SDK:
SDK Custom Action et SDK TaggingSample.
Exemple:/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
…
Il est possible de télécharger le SDK à:
http://wiki.alfresco.com/wiki/Download_Alfresco_Community_Network
Pour installer le SDK: http://wiki.alfresco.com/wiki/Alfresco_SDK
Bon travail.
<bean id="CheckInOutBean" class="lpr.alfresco.web.bean.CheckInOutBean" init-method="init">
<property name="nodeService">
<ref bean="nodeService" />
</property>
</bean>
<actions>
<action id="check_out_document">
<evaluator>
lpr.alfresco.delegation.evaluator.DirAccessEvaluator
</evaluator>
<label-id>check_out_document</label-id>
<image>/images/extension/icons/create_user.gif</image>
<!–action>dialog:manageDelegInvitedUsers</action>
<action-listener>#{BrowseBean.setupSpaceAction}</action-listener–>
<action-listener>#{CheckInOutBean.out}</action-listener>
<params>
<param name="ref">#{actionContext.nodeRef}</param>
<!–<param name="parent">#{NavigationBean.currentNodeId}</param>–>
</params>
</action>
<!– Actions Menu for a document in the Browse screen –>
<action-group id="document_browse_menu">
<action idref="check_out_document" />
</action-group>
</actions>
package lpr.alfresco.web.bean;
import java.util.Map;
import javax.faces.event.ActionEvent;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.web.bean.BrowseBean;
import org.alfresco.web.ui.common.component.UIActionLink;
public class CheckInOutBean {
//private static Log logger = LogFactory.getLog(CheckInOutBean.class);
protected BrowseBean browseBean;
private NodeService nodeService;
public void init() {
System.out.println("Init");
}
/**
* @return Returns the BrowseBean.
*/
public BrowseBean getBrowseBean() {
return this.browseBean;
}
/**
* @param browseBean The BrowseBean to set.
*/
public void setBrowseBean(BrowseBean browseBean) {
this.browseBean = browseBean;
}
/**
* @return Returns the NodeService.
*/
public NodeService getNodeService() {
return this.nodeService;
}
/**
* @param nodeService The NodeService to set.
*/
public void setNodeService(NodeService nodeService) {
this.nodeService = nodeService;
}
public void out(ActionEvent event) {
try {
System.out.println("CheckOut Document ");
UIActionLink link = (UIActionLink)event.getComponent();
Map<String, String> params = link.getParameterMap();
String ref = params.get("ref");
if (ref != null && ref.length() != 0)
{
NodeRef myNode = new NodeRef(ref);
System.out.println("My node ref: " + myNode);
String DocumentName = (String)nodeService.getProperty(myNode, ContentModel.PROP_NAME);
System.out.println("Doc name : " + DocumentName);
}
// Ici reste du code à écrire
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
CheckOut Document
My node ref: workspace://SpacesStore/6a0aade6-15ed-11dd-886c-bd82866ddcfa
org.alfresco.error.AlfrescoRuntimeException: Transaction must be active and synchronization is required
at org.alfresco.repo.transaction.AlfrescoTransactionSupport.registerSynchronizations(AlfrescoTransactionSupport.java:399)
at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getSynchronization(AlfrescoTransactionSupport.java:384)
at org.alfresco.repo.transaction.AlfrescoTransactionSupport.bindDaoService(AlfrescoTransactionSupport.java:238)
at org.alfresco.repo.transaction.TransactionalDaoInterceptor.invoke(TransactionalDaoInterceptor.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy1.getNode(Unknown Source)
at org.alfresco.repo.node.db.DbNodeServiceImpl.getNodeNotNull(DbNodeServiceImpl.java:128)
at org.alfresco.repo.node.db.DbNodeServiceImpl.getProperty(DbNodeServiceImpl.java:930)
at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at org.alfresco.repo.transaction.TransactionResourceInterceptor.invoke(TransactionResourceInterceptor.java:129)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy2.getProperty(Unknown Source)
at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:221)
at $Proxy3.getProperty(Unknown Source)
at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:145)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy2.getProperty(Unknown Source)
at lpr.alfresco.web.bean.CheckInOutBean.out(CheckInOutBean.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
at javax.faces.component.UICommand.broadcast(UICommand.java:89)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.processType3(NTLMAuthenticationFilter.java:899)
at org.alfresco.web.app.servlet.NTLMAuthenticationFilter.doFilter(NTLMAuthenticationFilter.java:402)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Unknown Source)
<property name="nodeService">
<ref bean="nodeService" />
</property>
Bonjour,
J'ai vu que tu avais injecté le nodeService avec un petit n dans ton bean :<property name="nodeService">
<ref bean="nodeService" />
</property>
Or le nodeService est sous la couche d'intercepteurs de transaction. Essaie avec le NodeService (grand N). Peut-être que ça changera qqchose…
Je n'ai pas dit que la syntaxe était mauvaise, mais que tu injectais le mauvais bean…
<bean id="CheckInOutBean" class="lpr.alfresco.web.bean.CheckInOutBean" init-method="init">
<property name="nodeService">
<ref bean="nodeService" />
</property>
</bean>
<managed-bean>
<description>
The bean that backs up the Checkin and Checkout pages.
</description>
<managed-bean-name>CheckInOutBean</managed-bean-name>
<managed-bean-class>lpr.alfresco.web.bean.CheckInOutBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>browseBean</property-name>
<value>#{BrowseBean}</value>
</managed-property>
<managed-property>
<property-name>nodeService</property-name>
<value>#{NodeService}</value>
</managed-property>
<managed-property>
<property-name>authenticationService</property-name>
<value>#{AuthenticationService}</value>
</managed-property>
<managed-property>
<property-name>permissionService</property-name>
<value>#{PermissionService}</value>
</managed-property>
<managed-property>
<property-name>fileFolderService</property-name>
<value>#{FileFolderService}</value>
</managed-property>
<managed-property>
<property-name>copyService</property-name>
<value>#{CopyService}</value>
</managed-property>
</managed-bean>
package lpr.alfresco.web.bean;
import java.text.MessageFormat;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import lpr.alfresco.definitions.LprConstante;
import lpr.alfresco.model.LprContentModel;
//import lpr.alfresco.util.MyLogger;
import org.alfresco.model.ContentModel;
//import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.repository.CopyService;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
import org.alfresco.web.app.AlfrescoNavigationHandler;
import org.alfresco.web.app.Application;
import org.alfresco.web.app.context.UIContextService;
import org.alfresco.web.bean.BrowseBean;
import org.alfresco.web.bean.repository.Node;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.common.component.UIActionLink;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class CheckInOutBean {
/** Parameters to add in alfresco\WEB-INF\faces-config-navigation.xml
*
* <navigation-case>
* <from-outcome>cancelCheckoutFile</from-outcome>
* <to-view-id>/jsp/dialog/cancelcheckout-file.jsp</to-view-id>
* </navigation-case>
*/
/** Parameters to add in alfresco\WEB-INF\faces-config-beans.xml
*
* <managed-bean>
* <description>
* The bean that backs up the Checkin and Checkout pages.
* </description>
* <managed-bean-name>CheckInOutBean</managed-bean-name>
* <managed-bean-class>org.alfresco.web.bean.CheckinCheckoutBean</managed-bean-class>
* <managed-bean-scope>session</managed-bean-scope>
* <managed-property>
* <property-name>browseBean</property-name>
* <value>#{BrowseBean}</value>
* </managed-property>
* <managed-property>
* <property-name>navigator</property-name>
* <value>#{NavigationBean}</value>
* </managed-property>
* <managed-property>
* <property-name>nodeService</property-name>
* <value>#{NodeService}</value>
* </managed-property>
* <managed-property>
* <property-name>authenticationService</property-name>
* <value>#{AuthenticationService}</value>
* </managed-property>
* <managed-property>
* <property-name>permissionService</property-name>
* <value>#{PermissionService}</value>
* </managed-property>
* <managed-property>
* <property-name>fileFolderService</property-name>
* <value>#{FileFolderService}</value>
* </managed-property>
* <managed-property>
* <property-name>copyService</property-name>
* <value>#{CopyService}</value>
* </managed-property>
* </managed-bean>
*/
// ——————————————————————————
// Bean property getters and setters
/**
* @return Returns the BrowseBean.
*/
public BrowseBean getBrowseBean()
{
return this.browseBean;
}
/**
* @param browseBean The BrowseBean to set.
*/
public void setBrowseBean(BrowseBean browseBean)
{
this.browseBean = browseBean;
}
/**
* @return Returns the NodeService.
*/
public NodeService getNodeService()
{
return this.nodeService;
}
/**
* @param nodeService The NodeService to set.
*/
public void setNodeService(NodeService nodeService)
{
this.nodeService = nodeService;
}
/**
* @return Returns the AuthenticationService.
*/
public AuthenticationService getAuthenticationService()
{
return this.authenticationService;
}
/**
* @param nodeService The AuthenticationService to set.
*/
public void setAuthenticationService(AuthenticationService authenticationService)
{
this.authenticationService = authenticationService;
}
/**
* @return Returns the PermissionService.
*/
public PermissionService getPermissionService()
{
return this.permissionService;
}
/**
* @param nodeService The PermissionService to set.
*/
public void setPermissionService(PermissionService permissionService)
{
this.permissionService = permissionService;
}
/**
* @return Returns the FileFolderService.
*/
public FileFolderService getFileFolderService()
{
return this.fileFolderService;
}
/**
* @param nodeService The FileFolderService to set.
*/
public void setFileFolderService(FileFolderService fileFolderService)
{
this.fileFolderService = fileFolderService;
}
/**
* @return Returns the CopyService.
*/
public CopyService getCopyService()
{
return this.copyService;
}
/**
* @param nodeService The CopyService to set.
*/
public void setCopyService(CopyService copyService)
{
this.copyService = copyService;
}
/**
* @return The document node being used for the current operation
*/
public Node getDocument()
{
return this.document;
}
/**
* @param document The document node to be used for the current operation
*/
public void setDocument(Node document)
{
this.document = document;
}
/**
* @return Returns the working copy Document.
*/
public Node getWorkingDocument()
{
return this.workingDocument;
}
/**
* @param workingDocument The working copy Document to set.
*/
public void setWorkingDocument(Node workingDocument)
{
this.workingDocument = workingDocument;
}
// ——————————————————————————
// Navigation action event handlers
/**
* Action event
*
* @param event ActionEvent
*/
public void setupContentAction(ActionEvent event)
{
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.setupContentAction (Start)",1);
UIActionLink link = (UIActionLink)event.getComponent();
Map<String, String> params = link.getParameterMap();
String id = params.get("id");
if (id != null && id.length() != 0)
{
setupContentDocument(id);
}
else
{
setDocument(null);
}
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.setupContentAction (End)",1);
}
/**
* Setup a content document node context
*
* @param id GUID of the node to setup as the content document context
*
* @return The Node
*/
private Node setupContentDocument(String id)
{
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.setupContentDocument (Start)",1);
if (logger.isDebugEnabled())
logger.debug("Setup for action, setting current document to: " + id);
Node node = null;
try
{
// create the node ref, then our node representation
NodeRef ref = new NodeRef(Repository.getStoreRef(), id);
node = new Node(ref);
// remember the document
setDocument(node);
// refresh the UI, calling this method now is fine as it basically makes sure certain
// beans clear the state - so when we finish here other beans will have been reset
UIContextService.getInstance(FacesContext.getCurrentInstance()).notifyBeans();
}
catch (InvalidNodeRefException refErr)
{
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
FacesContext.getCurrentInstance(), Repository.ERROR_NODEREF), new Object[] {id}) );
}
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.setupContentDocument (End)",1);
return node;
}
/**
* Action to undo the checkout of a document just checked out from the checkout screen.
*/
public String undoCheckout()
{
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.undoCheckout (Start)",1);
String outcome = null;
Node node = getDocument();
//System.out.println("Node: " + node.getNodeRef());
if (node != null)
{
try
{
// try to cancel checkout of the working copy
AuthenticationService auth = getAuthenticationService();
auth.authenticate(WORKFLOW_USER, WORKFLOW_PASSWORD.toCharArray());
NodeRef originalNode = new NodeRef((String)(LprConstante.WORKSPACE_BASE + "/" + nodeService.getProperty(node.getNodeRef(), LprContentModel.PROP_ORIGINE_NODE)));
//System.out.println("Original node Ref: " + originalNode);
if (nodeService.hasAspect(originalNode, LprContentModel.ASPECT_WORKING_COPY) == true) {
nodeService.removeAspect(originalNode, LprContentModel.ASPECT_WORKING_COPY);
}
// Delete copy
this.fileFolderService.delete(node.getNodeRef());
outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
}
catch (Throwable err)
{
Utils.addErrorMessage(Application.getMessage(
FacesContext.getCurrentInstance(), MSG_ERROR_CANCELCHECKOUT) + err.getMessage(), err);
}
}
else
{
logger.warn("WARNING: undoCheckout called without a current WorkingDocument!");
}
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.undoCheckout (End)",1);
return outcome;
}
/**
* Action to checkout a document.
*/
public void checkOut(ActionEvent event)
{
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.Checkout (Start)",1);
setupContentAction(event);
Node node = getDocument();
//System.out.println("Node: " + node.getNodeRef());
if (node != null)
{
try
{
// try to cancel checkout of the working copy
AuthenticationService auth = getAuthenticationService();
String Currentuser = authenticationService.getCurrentUserName();
//System.out.println("Current user : " + Currentuser);
auth.authenticate(WORKFLOW_USER, WORKFLOW_PASSWORD.toCharArray());
// Get the Draft nodeRef
NodeRef nodeBase = new NodeRef((String)(LprConstante.WORKSPACE_BASE + "/" + nodeService.getProperty(node.getNodeRef(), LprContentModel.PROP_BASE_CONTENT_NODE)));
NodeRef nodeChild = this.nodeService.getChildByName(nodeBase, ContentModel.ASSOC_CONTAINS, LprConstante.SPACE_DRAFTS);
//System.out.println("Draft Folder : " + nodeService.getProperty(nodeChild, ContentModel.PROP_NAME));
// Make copy of document
String docname = (String)nodeService.getProperty(node.getNodeRef(), ContentModel.PROP_NAME);
String qname = QName.createValidLocalName(docname);
NodeRef copyNodeRef = copyService.copy(node.getNodeRef(), nodeChild,ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, qname), true);
nodeService.setProperty(copyNodeRef, ContentModel.PROP_NAME, docname);
//copyService = getCopyService();
//permissionService = getPermissionService();
// Change Document Status and Permission
nodeService.setProperty(copyNodeRef, LprContentModel.PROP_STATUS, LprConstante.STATUS_DRAFT);
permissionService.setPermission(copyNodeRef, Currentuser, PermissionService.EDITOR, true);
// Add Aspect Working Copy and backup the copy nodeRef in the original document
if (nodeService.hasAspect(node.getNodeRef(), LprContentModel.ASPECT_WORKING_COPY) == false) {
nodeService.addAspect(node.getNodeRef(), LprContentModel.ASPECT_WORKING_COPY, null);
}
nodeService.setProperty(node.getNodeRef(), LprContentModel.PROP_WORKING_COPY_NODE, copyNodeRef.getId());
// Add Aspect Origine Copy on the copy and backup the origine nodeRef
if (nodeService.hasAspect(copyNodeRef, LprContentModel.ASPECT_ORIGINE) == false) {
nodeService.addAspect(copyNodeRef, LprContentModel.ASPECT_ORIGINE, null);
}
nodeService.setProperty(copyNodeRef, LprContentModel.PROP_ORIGINE_NODE, node.getNodeRef().getId());
//outcome = AlfrescoNavigationHandler.CLOSE_DIALOG_OUTCOME;
}
catch (Throwable err)
{
Utils.addErrorMessage(Application.getMessage(
FacesContext.getCurrentInstance(), MSG_ERROR_CANCELCHECKOUT) + err.getMessage(), err);
}
}
else
{
logger.warn("WARNING: undoCheckout called without a current WorkingDocument!");
}
//MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.Checkout (End)",1);
}
/**
* CheckOut Document
* @param event
*/
/*public void out(ActionEvent event) {
MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.out (Start)",1);
try {
System.out.println("CheckOut Document ");
UIActionLink link = (UIActionLink)event.getComponent();
Map<String, String> params = link.getParameterMap();
String ref = params.get("ref");
if (ref != null && ref.length() != 0)
{
NodeRef nodeRef = new NodeRef(ref);
System.out.println("My node ref: " + nodeRef);
// search for node current user
FacesContext context = FacesContext.getCurrentInstance();
// Obtain the ServiceRegistry
serviceRegistry = Repository.getServiceRegistry(context);
// Obtain the services we need from the ServiceRegistry
nodeService = serviceRegistry.getNodeService();
authenticationService = serviceRegistry.getAuthenticationService();
//namespaceService = serviceRegistry.getNamespaceService();
copyService = serviceRegistry.getCopyService();
permissionService = serviceRegistry.getPermissionService();
String Currentuser = authenticationService.getCurrentUserName();
System.out.println("Current user : " + Currentuser);
authenticationService.authenticate(WORKFLOW_USER, WORKFLOW_PASSWORD.toCharArray());
String docname = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
//authenticationService.clearCurrentSecurityContext();
NodeRef nodeBase = new NodeRef((String)(LprConstante.WORKSPACE_BASE + "/" + nodeService.getProperty(nodeRef, LprContentModel.PROP_BASE_CONTENT_NODE)));
//String basePath = nodeService.getPath(nodeBase).toPrefixString(namespaceService);
//System.out.println("Base Path: " + basePath);
//System.out.println("Doc name : " + docname);
NodeRef nodeChild = this.nodeService.getChildByName(nodeBase, ContentModel.ASSOC_CONTAINS, LprConstante.SPACE_DRAFTS);
System.out.println("Draft Folder : " + nodeService.getProperty(nodeChild, ContentModel.PROP_NAME));
// Make copy of document
String qname = QName.createValidLocalName(docname);
NodeRef copyNodeRef = copyService.copy(nodeRef, nodeChild,ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, qname), true);
nodeService.setProperty(copyNodeRef, ContentModel.PROP_NAME, docname);
// Change Document Status and Permission
nodeService.setProperty(copyNodeRef, LprContentModel.PROP_STATUS, LprConstante.STATUS_DRAFT);
permissionService.setPermission(copyNodeRef, Currentuser, PermissionService.EDITOR, true);
// Add Aspect Working Copy and backup the copy nodeRef in the original document
if (nodeService.hasAspect(nodeRef, LprContentModel.ASPECT_WORKING_COPY) == false) {
nodeService.addAspect(nodeRef, LprContentModel.ASPECT_WORKING_COPY, null);
}
nodeService.setProperty(nodeRef, LprContentModel.PROP_WORKING_COPY_NODE, copyNodeRef.getId());
// Add Aspect Origine Copy on the copy and backup the origine nodeRef
if (nodeService.hasAspect(copyNodeRef, LprContentModel.ASPECT_ORIGINE) == false) {
nodeService.addAspect(copyNodeRef, LprContentModel.ASPECT_ORIGINE, null);
}
nodeService.setProperty(copyNodeRef, LprContentModel.PROP_ORIGINE_NODE, nodeRef.getId());
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.out (End)",1);
}*/
/**
* Cancel CheckOut Document
* @param event
*/
/*public void cancel(ActionEvent event) {
MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.cancel (Start)",1);
try {
System.out.println("Cancel CheckOut Document ");
UIActionLink link = (UIActionLink)event.getComponent();
Map<String, String> params = link.getParameterMap();
String ref = params.get("ref");
String id = params.get("id");
System.out.println("ID: " + id);
if (ref != null && ref.length() != 0)
{
NodeRef nodeRef = new NodeRef(ref);
System.out.println("My node ref: " + nodeRef);
// search for node current user
FacesContext context = FacesContext.getCurrentInstance();
// Obtain the ServiceRegistry
serviceRegistry = Repository.getServiceRegistry(context);
// Obtain the services we need from the ServiceRegistry
nodeService = serviceRegistry.getNodeService();
fileFolderService = serviceRegistry.getFileFolderService();
authenticationService.authenticate(WORKFLOW_USER, WORKFLOW_PASSWORD.toCharArray());
//MyLogger.debugNodeRef(nodeService, nodeRef, 2);
System.out.println("Value origine node: " + nodeService.getProperty(nodeRef, LprContentModel.PROP_ORIGINE_NODE));
NodeRef originalNode = new NodeRef ((String)(LprConstante.WORKSPACE_BASE + "/" + nodeService.getProperty(nodeRef, LprContentModel.PROP_ORIGINE_NODE)));
System.out.println("Ooriginal node Ref: " + originalNode);
if (nodeService.hasAspect(originalNode, LprContentModel.ASPECT_WORKING_COPY) == true) {
nodeService.removeAspect(originalNode, LprContentModel.ASPECT_WORKING_COPY);
}
// Delete file
fileFolderService.delete(nodeRef);
//authenticationService.clearCurrentSecurityContext();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
MyLogger.debugln("lpr.alfresco.web.bean.CheckInOutBean.cancel (End)",1);
}*/
// ——————————————————————————
// Private data
private static Log logger = LogFactory.getLog(CheckInOutBean.class);
/** I18N messages */
public static final String MSG_ERROR_CHECKIN = "error_checkin";
public static final String MSG_ERROR_CANCELCHECKOUT = "error_cancel_checkout";
public static final String MSG_ERROR_UPDATE = "error_update";
public static final String MSG_ERROR_CHECKOUT = "error_checkout";
/** The current document */
private Node document;
/** The working copy of the document we are checking out */
private Node workingDocument;
/** The BrowseBean to be used by the bean */
protected BrowseBean browseBean;
/** The NavigationBean bean reference */
//protected NavigationBean navigator;
/** The NodeService to be used by the bean */
private NodeService nodeService;
/** The AuthenticationService to be used by the bean */
private AuthenticationService authenticationService;
/** The PermissionService to be used by the bean */
private PermissionService permissionService;
/** The FileFolderService to be used by the bean */
private FileFolderService fileFolderService;
/** The CopyService to be used by the bean */
private CopyService copyService;
/** Others */
//private ServiceRegistry serviceRegistry;
//private NamespaceService namespaceService;
private static final String WORKFLOW_USER = "workflow";
private static final String WORKFLOW_PASSWORD = "myPassword";
}
Content from pre 2016 and from language groups that have been closed.
Content is read-only.
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.