Sunday 1 February 2015

How to add documents to document and media portlet programatically?

Step1;create one folder in document and media portlet

for creating folder you can do by programatically or manually

programatically use this code:
            long fileId=CounterLocalServiceUtil.increment();
DLFolder folder = DLFolderLocalServiceUtil.createDLFolder(fileId);
folder.setName("dhanush");
folder.setParentFolderId(0);
folder.setDescription("folder test");
folder.setGroupId(dlf.getGroupId());
folder.setCompanyId(themeDisplay.getCompanyId());
folder.setUserId(themeDisplay.getUserId());
folder.setCreateDate(new Date());
folder.setModifiedDate(new Date());
folder.setLastPostDate(new Date());
DLFolderLocalServiceUtil.addDLFolder(folder);

or use this method also

    DLFolder folder = DLFolderLocalServiceUtil.addFolder(themeDisplay.getUserId(),                                                            10180, 10180,false,0, "dhanushbhava", null, serviceContext);



for manually follow this steps:

 1.logged in as admin
2.go to control panel
3.under the mysite you have document and media portlet click on that
4.Inside the  document and media portlet  you will find Add button if you click that in the drop down some options will come from that select folder.
5.It will redirect to another page there you need fill the name and there you can set permission for your folder also that's it.
 

 step2:


In your view.jsp

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />

<portlet:actionURL var="addURL" name="addFiles">
</portlet:actionURL>

<form action="<%=addURL%>" method="post" enctype="multipart/form-data">
<input type="text" name="name">
<input type="file" name="Upload">
<input type="submit" value="Add">
</form>

step3:

in your java class
package com.test;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;

import org.apache.log4j.Logger;

import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.upload.UploadRequest;
import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.MimeTypesUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.ServiceContextFactory;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
import com.liferay.portlet.documentlibrary.model.DLFolder;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import com.liferay.portlet.documentlibrary.service.DLFileEntryTypeLocalServiceUtil;
import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
import com.liferay.portlet.documentlibrary.util.DLUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
import com.slayer.model.Document;
import com.slayer.model.impl.DocumentImpl;
import com.slayer.service.DocumentLocalServiceUtil;

/**
 * Portlet implementation class ModelPortlet
 */
public class ModelPortlet extends MVCPortlet {

private static final Logger _log = Logger.getLogger(ModelPortlet.class);


public void addFiles(ActionRequest actionRequest,ActionResponse actionResponse)
{

System.out.println("#######");
UploadRequest req = PortalUtil.getUploadPortletRequest(actionRequest);
ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
String name=ParamUtil.getString(req, "name");
File video=req.getFile("Upload");
System.out.println("name:"+name);



try
{
    ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(),actionRequest);

  DLFolder folder = DLFolderLocalServiceUtil.addFolder(themeDisplay.getUserId(), 10180, 10180,false,0, "dhanushbhava", null, serviceContext);
 folder.setDescription("folder test");
    DLFileEntry fileEntry = null;
    String fileEntryId=null;
    byte[] imageBytes = FileUtil.getBytes(video);
    InputStream is = new ByteArrayInputStream(imageBytes);
    DLFolder dlFolder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, "dhanushbhava");
   
   
     List<DLFileEntryType> tip = DLFileEntryTypeLocalServiceUtil.getFileEntryTypes(DLUtil.getGroupIds(themeDisplay));
   
     fileEntry = DLFileEntryLocalServiceUtil.addFileEntry(themeDisplay .getUserId(), themeDisplay.getScopeGroupId(), themeDisplay .getScopeGroupId(), dlFolder.getFolderId(), video.getName(),
             MimeTypesUtil.getContentType(video), "", req.getParameter("name"), "", tip.get(0).getFileEntryTypeId(), null, video, is, video.getTotalSpace(), serviceContext);
   
     DLFileEntryLocalServiceUtil.updateFileEntry(themeDisplay.getUserId(), fileEntry.getFileEntryId(),video.getName(), MimeTypesUtil.getContentType(video), "",
       "", "", true, tip.get(0).getPrimaryKey(), null, video, is,video.getTotalSpace(), serviceContext);
   
     fileEntryId = String.valueOf(fileEntry.getFileEntryId());
     System.out.println("###:"+fileEntryId);
   
   
     
         
           
      Document dt=new DocumentImpl();
          long userId=CounterLocalServiceUtil.increment();
          dt.setUserId(userId);
          dt.setName(name);
          dt.setUpload(String.valueOf(fileEntry.getFileEntryId()));
          DocumentLocalServiceUtil.addDocument(dt);
     
       
}
catch (PortalException po)
     {
        _log.error("PortalException while accessing servicecontext:" +po.getMessage());
     }
  catch (SystemException se)
     {
_log.error("SyetemException while accessing servicecontext:" +se.getMessage());
  }  

catch (IOException io)
       {
_log.error("SyetemException while accessing servicecontext:" +io.getMessage());
}
        actionResponse.setRenderParameter("jspPage", "/html/model/display.jsp");






}


}


after this you want check wheteher this files is added or not in to database you can check DlfileEntry

table in database.  

step4:

if you want to get the files after adding in to database in your display.jsp write the below codes

<%@page import="com.liferay.portal.kernel.util.WebKeys"%>
<%@page import="com.liferay.portal.theme.ThemeDisplay"%>
<%@page import="com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil"%>
<%@page import="com.liferay.portlet.documentlibrary.util.DLUtil"%>
<%@page import="com.slayer.service.DocumentLocalServiceUtil"%>
<%@page import="com.slayer.model.Document"%>
<%@page import="java.util.List"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />
<ul>

<%
ThemeDisplay themeDisplay=(ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
   List<Document> docs=DocumentLocalServiceUtil.getDocuments(0,-1);

for(Document doc:docs)
{
String ImagePath = doc.getUpload().length() > 0 ? doc.getUpload(): request.getContextPath()+"/html/contentpage/images/NoImageIcon.jpg";
String ImagePath1=DLUtil.getPreviewURL(DLAppLocalServiceUtil.getFileEntry(Long.parseLong(ImagePath)),DLAppLocalServiceUtil.getFileEntry(Long.parseLong(ImagePath)).getFileVersion(), themeDisplay, null);

%>

<li>
<img src="<%=ImagePath1%>" width="88" height="126" border="0">
</li>

      <%
           }
             %>
</ul>


that's it cheers and please share your comments