Foros de discusión

Liferay 6.2 ga3 - Document Library - Custom Document Type and Metadata

thumbnail
Ramalingaiah. D, modificado hace 7 años.

Liferay 6.2 ga3 - Document Library - Custom Document Type and Metadata

Expert Mensajes: 486 Fecha de incorporación: 16/08/14 Mensajes recientes
Hi,
i have two project..
1. upload file remotely to Document and media through DLApp Service Soap.(addfileentry )method (wsdl)
package com.dms.webservices;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.text.Document;
import javax.xml.rpc.ServiceException;

import com.liferay.portal.kernel.repository.model.FileEntrySoap;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portlet.documentlibrary.service.http.DLAppServiceSoap;
import com.liferay.portlet.documentlibrary.service.http.DLAppServiceSoapServiceLocator;

public class FilesUpload {
	private static Document metadata;

	public static void uploadfile(File file) throws ServiceException, Exception {

		// TODO Auto-generated method stub

		ServiceContext serviceContext = new ServiceContext();
		DLAppServiceSoapServiceLocator locator = new DLAppServiceSoapServiceLocator();

		DLAppServiceSoap service = locator
				.getPortlet_DL_DLAppService(getURL("Portlet_DL_DLAppService"));
		FileEntrySoap fileEntry = service.addFileEntry(10664, 15460,
				"remote.txt", "contract", file.getName(),
				"type=contract,meta1=test,meta2=test",
				"type=contract,meta1=test,meta2=test", getFileBytes(file),
				serviceContext);

	}

	public static URL getURL(String serviceName) throws MalformedURLException {

		String url = "http://localhost:8080"; // ip address of liferay server
												// ex. = http://45.76.28.19:8181
		String screenName = "test";
		String password = "test";
		int pos = url.indexOf("://");
		String protocol = url.substring(0, pos + 3);
		String host = url.substring(pos + 3, url.length());
		StringBuilder sb = new StringBuilder();
		sb.append(protocol);
		sb.append(screenName);
		sb.append(":");
		sb.append(password);
		sb.append("@");
		sb.append(host);
		sb.append("/api/axis/");
		sb.append(serviceName);
		// System.out.println("url>>>"+sb.toString());
		return new URL(sb.toString());
	}

	private static byte[] getFileBytes(File file) throws IOException {
		FileInputStream fileInputStream = null;

		// File file = new File();// file to upload --you just pass your file

		byte[] bFile = new byte[(int) file.length()];

		// convert file into array of bytes
		fileInputStream = new FileInputStream(file);
		fileInputStream.read(bFile);

		fileInputStream.close();
		// Fields fields=new Fields();
		// fields.getNames();
		// System.out.println("fields:::::::::::::::::::::::::::::::::::::" +
		// fields.getNames());
		return bFile;

	}

}

2. A hook project which update the uploaded file with custom document type and meta-data using DLFileEntrylocalServiceUtil.updateFileEntry().

code below for your reference:
package com.dms.model.listeners;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

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

import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.model.BaseModelListener;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
import com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalServiceUtil;
import com.liferay.portlet.dynamicdatamapping.storage.Fields;

public class DLFileEntryListener extends BaseModelListener<dlfileentry> {

	public void onafterCreate(DLFileEntry dlFileEntry)
			throws ModelListenerException {

		System.out.println("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;"
				+ dlFileEntry.getDescription());

		String names = dlFileEntry.getDescription();
		String[] metadata = names.split(",");
		for (int i = 0; i &lt; metadata.length; i++) {
			System.out.println("metadata&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;" + metadata[i]);
		}
		_log.info("This method will be called before create document");

	}

	public void onBeforerCreate(DLFileEntry dlFileEntry)
			throws ModelListenerException {
		System.out.println("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;"
				+ dlFileEntry.getDescription());
		String names = dlFileEntry.getDescription();

		String[] metadata = names.split(",");
		for (int i = 1; i &lt; metadata.length; i++) {
			System.out.println("metadata&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;" + metadata[i]);

		}
		_log.info("This method will be called before create document");

	}

	private static Log _log = LogFactoryUtil.getLog(DLFileEntryListener.class);

	public void addFile(DLFileEntry dlFileEntry) throws ModelListenerException {

		try {
			Map<string, fields> fieldsMap = new HashMap<string, fields>();

			Fields fields = new Fields();

			ServiceContext serviceContext = new ServiceContext();
			InputStream inputStream = new InputStream() {

				@Override
				public int read() throws IOException {
					// TODO Auto-generated method stub
					return 0;
				}
			};
			File file = new File("C:\test\test11.txt");

			try {
				//
				DLFileEntryLocalServiceUtil.updateFileEntry

				(dlFileEntry.getUserId(), dlFileEntry.getFileEntryId(), "", "",
						"", "", "", true, 10307, fieldsMap, file, null,
						file.length(), serviceContext);

			} catch (Exception e) {
				System.out.println(e.getMessage());
				System.out.println("localservice");
				e.printStackTrace();
			}
			//
		} catch (Exception e) {
			System.out.println("localservice");
			e.printStackTrace();

		}

	}
}

// public DDMStructure getDDMStructureByName(ThemeDisplay themeDisplay) throws
// com.liferay.portal.kernel.exception.SystemException {
// DDMStructure structure = null;
// try {
// List<ddmstructure> structures = DDMStructureLocalServiceUtil
// .getStructures(themeDisplay.getScopeGroupId());
// for (DDMStructure struct : structures) {
// if (struct.getName((Locale.ROOT)).equalsIgnoreCase(
// "contract")) {
// structure = struct;
// break;
// }
// }
// } catch (SystemException e) {
// System.out.println(e.getMessage());
// e.printStackTrace();
// }
// return structure;
// }
//
// }
</ddmstructure></string,></string,></dlfileentry>

Question: How can i map both project and update the file with custom document type?

please help me!!

thank you & Regards
Ram
thumbnail
Ramalingaiah. D, modificado hace 7 años.

RE: Liferay 6.2 ga3 - Document Library - Custom Document Type and Metadata

Expert Mensajes: 486 Fecha de incorporación: 16/08/14 Mensajes recientes
HI
it is working fine document type
package com.dms.model.listeners;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.portlet.ActionRequest;

import com.liferay.portal.ModelListenerException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.upload.UploadPortletRequest;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.model.BaseModelListener;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.ServiceContextFactory;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.model.DLFileVersion;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import com.liferay.portlet.documentlibrary.service.DLFileVersionLocalServiceUtil;
import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
import com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalServiceUtil;
import com.liferay.portlet.dynamicdatamapping.storage.Field;
import com.liferay.portlet.dynamicdatamapping.storage.Fields;

public class DLFileEntryListener extends BaseModelListener<dlfileentry> {
	@Override
	public void onAfterCreate(DLFileEntry dlFileEntry)
			throws ModelListenerException {
		System.out
				.println("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;onAfterCreate&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;");
		String names = dlFileEntry.getDescription();
		String[] metadata = names.split(",");
		for (int i = 0; i &lt; metadata.length; i++) {
			System.out.println("metadata&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;" + metadata[i]);
		}
		addFile(dlFileEntry);
		super.onAfterCreate(dlFileEntry);
	}
	
	
//	
//	public void addFileversion(DLFileVersion dlFileVersion)throws ModelListenerException{
//		System.out.println("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;AddFileVesrion&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;");
//		long filesversions= dlFileVersion.getFileEntryId();
//	}

//	@Override
//	public void onBeforeCreate(DLFileEntry dlFileEntry)
//			throws ModelListenerException {

		/*
		 * String names = dlFileEntry.getDescription(); String[] metadata =
		 * names.split(","); for (int i = 0; i &lt; metadata.length; i++) {
		 * System.out.println("metadata&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;" + metadata[i]); }
		 * addFile(dlFileEntry);
		 */
//	}

	/*
	 * public void onafterCreate(DLFileEntry dlFileEntry) throws
	 * ModelListenerException { System.out.println("ading file");
	 * 
	 * String names = dlFileEntry.getDescription(); String[] metadata =
	 * names.split(","); for (int i = 0; i &lt; metadata.length; i++) {
	 * System.out.println("metadata&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;" + metadata[i]); }
	 * _log.info("This method will be called before create document");
	 * addFile(dlFileEntry);
	 * 
	 * }
	 */
	public void addFile(DLFileEntry dlFileEntry )  throws ModelListenerException {
		System.out.println("ading file");

		try {
			Map<string, fields> fieldsMap = new HashMap<string, fields>();
			Fields fields = new Fields();
			fields.put(new Field("select10264", "ramu"));
			fields.put(new Field("select4893", "4"));
			fields.put(new Field("text2087", "resume"));
			System.out.println("ading file1");
			
			
            fieldsMap.put(getDDMStructureByName().getStructureKey(), fields);
			ServiceContext serviceContext =  new ServiceContext();
			File file = new File("/C:/test/test12.txt");
			System.out.println("ading file2");
			InputStream is = new FileInputStream(file);
			
			
//			
		dlFileEntry=DLFileEntryLocalServiceUtil.addFileEntry(dlFileEntry.getUserId(), dlFileEntry.getGroupId(), dlFileEntry.getRepositoryId(), 
					dlFileEntry.getFolderId(),dlFileEntry.getUserName(), file.getName(), "CONTRACT", file.getName(), "uploadfiles", 10307, 
					null, file, null,  file.length(), serviceContext);
//					(10199, 10664, 
//					10664, 15460, "", "", "", "", 
//					"", 10307, null, file, is, file.length(), serviceContext);
		       System.out.println("file AddFileEntry");
			// DLFileVersion dlFileVersion2= DLFileVersionLocalServiceUtil.addDLFileVersion(dlFileVersion);
			 
			
//			 
			  DLFileEntryLocalServiceUtil.updateFileEntry(dlFileEntry.getUserId(),
					  dlFileEntry.getFileEntryId(), file.getName(), "CONTRACT", file.getName(), "uploadfiles", "StringPool.BLANK", true, 10307, null,
					file, is,  file.length(), serviceContext);
			  
			
			 System.out.println("file UpdateFileentry");
		} catch (Exception e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}

	}

	public DDMStructure getDDMStructureByName()
			throws com.liferay.portal.kernel.exception.SystemException {
		DDMStructure structure = null;
		try {
			List<ddmstructure> structures = DDMStructureLocalServiceUtil
					.getStructures();
			for (DDMStructure struct : structures) {
				if (struct.getName((Locale.ROOT)).equalsIgnoreCase("Contract")) {
					structure = struct;
					break;
				}
			}
		} catch (SystemException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
		return structure;

	}

	private static Log _log = LogFactoryUtil.getLog(DLFileEntryListener.class);

}</ddmstructure></string,></string,></dlfileentry>


Regards
Ram