As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
package com.someco.transformer; import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.List; import net.sf.mpxj.ProjectFile; import net.sf.mpxj.ProjectHeader; import net.sf.mpxj.Resource; import net.sf.mpxj.Task; import net.sf.mpxj.mpp.MPPReader; import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.transform.AbstractContentTransformer2; import org.alfresco.service.cmr.repository.ContentReader; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.TransformationOptions; public class ProjectToPlainText extends AbstractContentTransformer2 { public static final String MIMETYPE_PROJECT = "application/vnd.ms-project"; @Override protected void transformInternal(ContentReader reader, ContentWriter writer, TransformationOptions options) throws Exception { Writer out = new BufferedWriter(new OutputStreamWriter(writer.getContentOutputStream())); ProjectFile mpp = new MPPReader().read (reader.getContentInputStream()); ProjectHeader projectHeader = mpp.getProjectHeader(); List<Task> listAllTasks = mpp.getAllTasks(); List<Resource> listAllResources = mpp.getAllResources(); out.write(projectHeader.getProjectTitle()); for (Task task : listAllTasks) { out.write("ID:" + task.getID()); out.write(" TASK:" + task.getName()); if (task.getNotes() != null) out.write(" NOTES:" + task.getNotes()); if (task.getContact() != null) out.write(" CONTACT:" + task.getContact()); out.write("\r\n"); } for (Resource resource : listAllResources) { out.write("RESOURCE:" + resource.getName()); if (resource.getEmailAddress() != null) out.write(" EMAIL:" + resource.getEmailAddress()); if (resource.getNotes() != null) out.write(" NOTES:" + resource.getNotes()); out.write("\r\n"); } out.flush(); if (out != null) { out.close(); } } public double getReliability(String sourceMimetype, String targetMimetype) { // only support MPP -> TEXT if (sourceMimetype.equals(ProjectToPlainText.MIMETYPE_PROJECT) && targetMimetype.equals(MimetypeMap.MIMETYPE_TEXT_PLAIN)) { return 1.0; } else { return 0.0; } } public boolean isTransformable(String arg0, String arg1, TransformationOptions arg2) { // TODO Auto-generated method stub return false; } }
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'> <beans> <bean id="transformer.Project" class="com.someco.transformer.ProjectToPlainText" parent="baseContentTransformer" /> <bean id="mimetypeConfigService" class="org.alfresco.config.xml.XMLConfigService" init-method="init"> <constructor-arg> <bean class="org.alfresco.config.source.UrlConfigSource"> <constructor-arg> <list> <value>classpath:alfresco/mimetype/mimetype-map.xml</value> <value>classpath:alfresco/mimetype/mimetype-map-openoffice.xml</value> <value>classpath:alfresco/someco-mimetype-map.xml</value> </list> </constructor-arg> </bean> </constructor-arg> </bean> </beans>
<alfresco-config area="mimetype-map"> <!– Alfresco now includes ms-project by default so we don't need to –> <config evaluator="string-compare" condition="Mimetype Map"> <mimetypes> <mimetype mimetype="application/vnd.ms-project" display="Microsoft Project"> <extension>mpp</extension> </mimetype> </mimetypes> </config> </alfresco-config>
Aug 6, 2010 5:35:11 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 287859 ms 17:41:28,368 User:admin ERROR [ui.common.Utils] Failed to create content due to error: 07060001 Transformer for 'application/vnd.ms-project' source mime type an d 'text/plain' target mime type was not found. Operation can't be performed org.alfresco.service.cmr.rule.RuleServiceException: 07060001 Transformer for 'ap plication/vnd.ms-project' source mime type and 'text/plain' target mime type was not found. Operation can't be performed at org.alfresco.repo.action.executer.TransformActionExecuter.executeImpl (TransformActionExecuter.java:183) at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute( ActionExecuterAbstractBase.java:127) at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(Acti onServiceImpl.java:711) at org.alfresco.repo.action.executer.CompositeActionExecuter.executeImpl (CompositeActionExecuter.java:72) at org.alfresco.repo.action.executer.ActionExecuterAbstractBase.execute( ActionExecuterAbstractBase.java:127) at org.alfresco.repo.action.ActionServiceImpl.directActionExecution(Acti onServiceImpl.java:711) at org.alfresco.repo.action.ActionServiceImpl.executeActionImpl(ActionSe rviceImpl.java:648) at org.alfresco.repo.action.ActionServiceImpl.executeAction(ActionServic eImpl.java:510) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflecti on(AopUtils.java:304) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJo inpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:149) at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterc eptor.invoke(AlwaysProceedMethodInterceptor.java:40) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:171) at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethod Interceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:171) at org.alfresco.repo.audit.AuditMethodInterceptor.proceedWithAudit(Audit MethodInterceptor.java:238) at org.alfresco.repo.audit.AuditMethodInterceptor.proceed(AuditMethodInt erceptor.java:205) at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInte rceptor.java:153) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:171) at org.springframework.transaction.interceptor.TransactionInterceptor.in voke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami cAopProxy.java:204) at $Proxy28.executeAction(Unknown Source) at org.alfresco.repo.rule.RuleServiceImpl.executeRule(RuleServiceImpl.ja va:1040) at org.alfresco.repo.rule.RuleServiceImpl.executePendingRule(RuleService Impl.java:1008) at org.alfresco.repo.rule.RuleServiceImpl.executePendingRulesImpl(RuleSe rviceImpl.java:979) at org.alfresco.repo.rule.RuleServiceImpl.executePendingRules(RuleServic eImpl.java:952) at org.alfresco.repo.rule.RuleTransactionListener.beforeCommit(RuleTrans actionListener.java:63) at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionS ynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:744) at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionS ynchronizationImpl.doBeforeCommit(AlfrescoTransactionSupport.java:724) at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionS ynchronizationImpl.beforeCommit(AlfrescoTransactionSupport.java:680) at org.springframework.transaction.support.TransactionSynchronizationUti ls.triggerBeforeCommit(TransactionSynchronizationUtils.java:48) at org.springframework.transaction.support.AbstractPlatformTransactionMa nager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:835) at org.springframework.transaction.support.AbstractPlatformTransactionMa nager.processCommit(AbstractPlatformTransactionManager.java:645) at org.springframework.transaction.support.AbstractPlatformTransactionMa nager.commit(AbstractPlatformTransactionManager.java:632) at org.springframework.transaction.interceptor.TransactionAspectSupport. commitTransactionAfterReturning(TransactionAspectSupport.java:314) at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(Sprin gAwareUserTransaction.java:467) at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransacti on(RetryingTransactionHelper.java:349) at org.alfresco.web.bean.dialog.BaseDialogBean.finish(BaseDialogBean.jav a:130) at org.alfresco.web.bean.dialog.DialogManager.finish(DialogManager.java: 534) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java :132) at org.apache.myfaces.application.ActionListenerImpl.processAction(Actio nListenerImpl.java:61) at javax.faces.component.UICommand.broadcast(UICommand.java:109) at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:9 7) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1 71) at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(Invoke ApplicationExecutor.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(Appl icationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:206) at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(Authentica tionFilter.java:110) at sun.reflect.GeneratedMethodAccessor433.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.alfresco.repo.management.subsystems.ChainingSubsystemProxyFactory $1.invoke(ChainingSubsystemProxyFactory.java:122) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami cAopProxy.java:204) at $Proxy214.doFilter(Unknown Source) at org.alfresco.repo.web.filter.beans.BeanProxyFilter.doFilter(BeanProxy Filter.java:88) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:206) at org.alfresco.repo.web.filter.beans.NullFilter.doFilter(NullFilter.jav a:74) at sun.reflect.GeneratedMethodAccessor433.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.alfresco.repo.management.subsystems.ChainingSubsystemProxyFactory $1.invoke(ChainingSubsystemProxyFactory.java:122) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami cAopProxy.java:204) at $Proxy214.doFilter(Unknown Source) at org.alfresco.repo.web.filter.beans.BeanProxyFilter.doFilter(BeanProxy Filter.java:88) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV alve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j ava:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j ava:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal ve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav a:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java :845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce ss(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44 7) at java.lang.Thread.run(Thread.java:619)