I am working with Alfresco Share 5.2 and trying to create custom link that is a part of document name in Alfresco. To be more specific, I have button which is used to create new excel file and save it to specific location inside My files directory. Inside that excel file link is stored which is used to get search results page.
Can I put that link to be document name in Alfresco?
For example: Instead of Search_Results.xslx to be something like this Search_results_link and when I want to open that page, just one click on doc name and new page will be opened.
I tried to put link as doc name property, but I get this exception:
org.springframework.extensions.webscripts.WebScriptException: 02210015 Wrapped Exception (with status template): org.apache.poi.xssf.usermodel.XSSFHyperlink cannot be cast to java.io.Serializable
at org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:1138)
at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:171)
at org.alfresco.repo.web.scripts.RepositoryContainer$3.execute(RepositoryContainer.java:519)
at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:464)
at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:587)
at org.alfresco.repo.web.scripts.RepositoryContainer$4.doWork(RepositoryContainer.java:664)
at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:555)
at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:668)
at org.alfresco.repo.web.scripts.RepositoryContainer.executeScriptInternal(RepositoryContainer.java:428)
at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:308)
at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:399)
at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:210)
at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:132)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
This is a part of my code where I create link and store it to excel file, and also try to put that link as document name:
XSSFWorkbook document = new XSSFWorkbook();
XSSFSheet sheet = document.createSheet(nameOfFile);
XSSFRow row = sheet.createRow(0);
XSSFRow rowSecond = sheet.createRow(1);
XSSFRow rowThird = sheet.createRow(2);
XSSFCell cell = row.createCell(0);
XSSFCell cellWithValue = rowSecond.createCell(0);
XSSFCell cellWithLink = rowThird.createCell(0);
cell.setCellValue("Link to fetch search results:");
cellWithValue.setCellValue(urlLink);
XSSFHyperlink link = document.getCreationHelper().createHyperlink(Hyperlink.LINK_URL);
XSSFCellStyle style = document.createCellStyle();
XSSFFont font = document.createFont();
font.setUnderline(HSSFFont.U_SINGLE);
font.setColor(IndexedColors.BLUE.index);
style.setFont(font);
cellWithLink.setCellValue("Click here");
link.setAddress(urlLink);
cellWithLink.setHyperlink(link);
cellWithLink.setCellStyle(style);
link.setLabel("ResultSearch");
Map<QName, Serializable> props = new HashMap<QName, Serializable>();
props.put(ContentModel.PROP_NAME, (Serializable) link);
Is there a way to avoid that exception and to save that link directly as document name? Thanks!