留言板
Liferay 6.2 ga3 - Document Library - Custom Document Type and Metadata
Ramalingaiah. D,修改在7 年前。
Liferay 6.2 ga3 - Document Library - Custom Document Type and Metadata
Expert 帖子: 486 加入日期: 14-8-16 最近的帖子
Hi,
i have two project..
1. upload file remotely to Document and media through DLApp Service Soap.(addfileentry )method (wsdl)
2. A hook project which update the uploaded file with custom document type and meta-data using DLFileEntrylocalServiceUtil.updateFileEntry().
code below for your reference:
Question: How can i map both project and update the file with custom document type?
please help me!!
thank you & Regards
Ram
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(">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+ dlFileEntry.getDescription());
String names = dlFileEntry.getDescription();
String[] metadata = names.split(",");
for (int i = 0; i < metadata.length; i++) {
System.out.println("metadata>>>>>>>>>>>>>>>" + metadata[i]);
}
_log.info("This method will be called before create document");
}
public void onBeforerCreate(DLFileEntry dlFileEntry)
throws ModelListenerException {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+ dlFileEntry.getDescription());
String names = dlFileEntry.getDescription();
String[] metadata = names.split(",");
for (int i = 1; i < metadata.length; i++) {
System.out.println("metadata>>>>>>>>>>>>>>>" + 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
Ramalingaiah. D,修改在7 年前。
RE: Liferay 6.2 ga3 - Document Library - Custom Document Type and Metadata
Expert 帖子: 486 加入日期: 14-8-16 最近的帖子
HI
it is working fine document type
Regards
Ram
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(">>>>>>>>>>>>>>>onAfterCreate>>>>>>>>>>>>>>>>>>>>>>");
String names = dlFileEntry.getDescription();
String[] metadata = names.split(",");
for (int i = 0; i < metadata.length; i++) {
System.out.println("metadata>>>>>>>>>>>>>>>" + metadata[i]);
}
addFile(dlFileEntry);
super.onAfterCreate(dlFileEntry);
}
//
// public void addFileversion(DLFileVersion dlFileVersion)throws ModelListenerException{
// System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>AddFileVesrion>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
// 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 < metadata.length; i++) {
* System.out.println("metadata>>>>>>>>>>>>>>>" + 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 < metadata.length; i++) {
* System.out.println("metadata>>>>>>>>>>>>>>>" + 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