liferay4.3与Fedora的整合实现

Liferay integration Fedora实现方案:

1:在liferay中提供CMS的功能,可以进行文件的上传操作,主要支持文件类型有:

.bmp, .css, .doc, .dot, .gif, .gz, .htm, .html, .jpg, .js, .odb, .odf, .odg, .odp, .ods, .odt, .pdf, .png, .ppt, .rtf, .swf, .sxc, .sxi, .sxw, .tar, .tiff, .tgz, .txt, .vsd, .xls, .xml, .zip.

2fedora提供WebService方法来对其内部进行访问及操作

 

通过以上 2 点,我们可以以 liferay CMS 为基础,通过调用 fedora WebService 接口来实现文件的存储以及查询等操作

Liferay integration Fedora实现代码:

 

涉及修改liferay中的文件如下:

实现删除功能修改文件:

com.liferay.documentlibrary.service.impl.DLServiceImpl.java

实现增,查,改功能修改文件:

com.liferay.documentlibrary.service.impl.DLLocalServiceImpl.java

com.liferay.documentlibrary.util.IndexerImpl.java

新增文件:

com.newegg中全部

 

具体开发步骤:

Sourceforge下载liferay的源代码liferay-portal-src- 4.3.0 .zip,解压至F:/liferay/portal目录

新建eclipse工程portalWorkspace设置为F:/liferay

Eclipse自动倒入portal工程文件,生成如下图:

修改portal目录下配置文件app.server.properties修改为:

## Server Type

app.server.type=tomcat

## Server Directory  --此处为本机liferay根目录

app.server.parent.dir=G:/liferayportalapp

## Tomcat

app.server.tomcat.version=5.5

app.server.tomcat.dir=${app.server.parent.dir}

app.server.tomcat.bin.dir=${app.server.tomcat.dir}/bin

app.server.tomcat.classes.global.dir=${app.server.tomcat.dir}/common/classes

app.server.tomcat.classes.portal.dir=${app.server.tomcat.portal.dir}/WEB-INF/classes

app.server.tomcat.deploy.dir=${app.server.tomcat.dir}/webapps

app.server.tomcat.lib.endorsed.dir=${app.server.tomcat.dir}/common/endorsed

app.server.tomcat.lib.global.dir=${app.server.tomcat.dir}/common/lib/ext

app.server.tomcat.lib.portal.dir=${app.server.tomcat.portal.dir}/WEB-INF/lib

app.server.tomcat.lib.support.dir=${app.server.tomcat.dir}/server/lib

app.server.tomcat.portal.dir=${app.server.tomcat.deploy.dir}/ROOT

app.server.tomcat.log.dir=${app.server.tomcat.dir}/logs

app.server.tomcat.temp.dir=${app.server.tomcat.dir}/temp

app.server.tomcat.work.dir=${app.server.tomcat.dir}/work

app.server.tomcat.zip.name=liferay-portal-tomcat-5.5-${downloads.version.file.name}.zip

#app.server.tomcat.zip.name=liferay-portal-tomcat-5.5-jdk5-${downloads.version.file.name}.zip

app.server.tomcat.zip.url=${sourceforge.mirror}/${app.server.tomcat.zip.name}

 

ß- 文件中其他内容不作修改-->

 

修改release.properties文件为(根据本机目录而定):

##

## DO NOT EDIT THIS FILE.

##

## To update the properties of this file, create a separate properties file

## named "release.${user.name}.properties" with the properties to overwrite.

##

 

##

## Version

##

 

lp.version= 4.3.1

lp.version.file.name= 4.3.1

 

##

## Release Info

##

 

#release.info=on

 

##

## Release Source

##

 

lp.source.dir=F:/liferay/portal/release

 

##

## Extension Environment

##

 

lp.ext.dir=F:/liferay/portal/ext

 

##

## Plugins Environment

##

 

lp.plugins.dir=F:/liferay/plugins/trunk

 

##

## Eclipse

##

 

lp.eclipse.dir=F:/liferay/portal

lp.eclipse.project.name=ext

 

##

## AntInstaller

##

 

ant.installer.dir=F:/ant

 

 

 

这样我们就配置好了liferay的开发环境,可以通过ant直接发布在指定websevre下(这里的是本机安装好的liferay服务器)

可以将编写好的webservice调用程序加入liferay中,通过修改liferay源代码实现与fedora的连接

 

修改com.liferay.documentlibrary.service.impl.DLServiceImpl.java

这里只写如何修改新增的例子:代码如下

修改addFile方法为:

原:

public void addFile(

           long companyId, String portletId, long groupId, long repositoryId,

           String fileName, InputStream is)

       throws PortalException, SystemException {

      

       if ((fileName.indexOf("") != -1) ||

              (fileName.indexOf("//") != -1) ||

              (fileName.indexOf(":") != -1) ||

              (fileName.indexOf("*") != -1) ||

              (fileName.indexOf("?") != -1) ||

              (fileName.indexOf("/"") != -1) ||

              (fileName.indexOf("<") != -1) ||

              (fileName.indexOf(">") != -1) ||

              (fileName.indexOf("|") != -1) ||

              (fileName.indexOf("&") != -1) ||

              (fileName.indexOf("[") != -1) ||

              (fileName.indexOf("]") != -1) ||

              (fileName.indexOf("'") != -1)) {

 

              throw new FileNameException(fileName);

           }

 

           boolean validFileExtension = false;

 

           String[] fileExtensions =

              PropsUtil.getArray(PropsUtil.DL_FILE_EXTENSIONS);

 

           for (int i = 0; i < fileExtensions.length; i++) {

              if (StringPool.STAR.equals(fileExtensions[i]) ||

                  StringUtil.endsWith(fileName, fileExtensions[i])) {

 

                  validFileExtension = true;

 

                  break;

              }

           }

 

           if (!validFileExtension) {

              throw new FileNameException(fileName);

           }

 

           if (is == null) {

              throw new FileSizeException(fileName);

           }

      

           Session session = null;

 

           try {

              session = JCRFactoryUtil.createSession();

 

              Node rootNode = DLUtil.getRootNode(session, companyId);

              Node repositoryNode = DLUtil.getFolderNode(rootNode, repositoryId);

 

              if (repositoryNode.hasNode(fileName)) {

                  throw new DuplicateFileException(fileName);

              }

              else {

                  Node fileNode = repositoryNode.addNode(

                     fileName, JCRConstants.NT_FILE);

 

                  Node contentNode = fileNode.addNode(

                     JCRConstants.JCR_CONTENT, JCRConstants.NT_RESOURCE);

 

                  contentNode.addMixin(JCRConstants.MIX_VERSIONABLE);

                  contentNode.setProperty(

                     JCRConstants.JCR_MIME_TYPE, "text/plain");

                  contentNode.setProperty(JCRConstants.JCR_DATA, is);

                  contentNode.setProperty(

                     JCRConstants.JCR_LAST_MODIFIED, Calendar.getInstance());

 

                  session.save();

 

                  Version version = contentNode.checkin();

 

                  contentNode.getVersionHistory().addVersionLabel(

                     version.getName(), String.valueOf(DEFAULT_VERSION), false);

              }

           }

           catch (Exception ioe) {

              throw new SystemException(ioe);

           }

           catch (RepositoryException re) {

              throw new SystemException(re);

           }

           finally {

              if (session != null) {

                  session.logout();

              }

           }

    }

修改后代码:

public void addFile(

           long companyId, String portletId, long groupId, long repositoryId,

           String fileName, InputStream is)

       throws PortalException, SystemException {

      

       if ((fileName.indexOf("") != -1) ||

              (fileName.indexOf("//") != -1) ||

              (fileName.indexOf(":") != -1) ||

              (fileName.indexOf("*") != -1) ||

              (fileName.indexOf("?") != -1) ||

              (fileName.indexOf("/"") != -1) ||

              (fileName.indexOf("<") != -1) ||

              (fileName.indexOf(">") != -1) ||

              (fileName.indexOf("|") != -1) ||

              (fileName.indexOf("&") != -1) ||

              (fileName.indexOf("[") != -1) ||

              (fileName.indexOf("]") != -1) ||

               (fileName.indexOf("'") != -1)) {

 

              throw new FileNameException(fileName);

           }

 

           boolean validFileExtension = false;

 

           String[] fileExtensions =

              PropsUtil.getArray(PropsUtil.DL_FILE_EXTENSIONS);

 

           for (int i = 0; i < fileExtensions.length; i++) {

              if (StringPool.STAR.equals(fileExtensions[i]) ||

                  StringUtil.endsWith(fileName, fileExtensions[i])) {

 

                  validFileExtension = true;

 

                  break;

              }

           }

 

           if (!validFileExtension) {

              throw new FileNameException(fileName);

           }

 

           if (is == null) {

              throw new FileSizeException(fileName);

           }

      

           try {

//得到dsId通过fileName

              String dsId = fileName.substring(0,fileName.indexOf("."));

//查询在fedora中是否有  repositoryIdDataObject   

    InputStream _is = FedoraDOMgrInfFactory.getFedoraDOMgrInterface().findObject(String.valueOf(repositoryId),"");

              if(_is==null)

    //创建DataObject对象             dataObjectMgr.CreatDataObject(String.valueOf(repositoryId), dsId, "test", MIME_TYPE, "", is,fileName);

              else

           //新增Datastream  dataObjectMgr.addDatastream(String.valueOf(repositoryId),dsId, "test", MIME_TYPE, "", is,fileName);

              Indexer.addFile(companyId, portletId, groupId, repositoryId, fileName);

椭圆形标注: 这里是制定为lucene查询索引}

           catch (Exception ioe) {

              throw new SystemException(ioe);

           }

      

    }

 

修改com.liferay.documentlibrary.util.IndexerImpl.javaaddFile() 方法

修改这一部分:修改前

Session session = null;

 

try {

           session = JCRFactoryUtil.createSession();

 

           Node contentNode = DLUtil.getFileContentNode(

              session, companyId, repositoryId, fileName, 0);

 

           is = contentNode.getProperty(JCRConstants.JCR_DATA).getStream();

      

       }

       catch (Exception e) {

       }

       finally {

           if (session != null) {

              session.logout();

           }

       }

      

修改后

try {

                  is = FedoraDOMgrInfFactory.getFedoraDOMgrInterface().findObject(String.valueOf(repositoryId),fileName.substring(0,fileName.indexOf(".")));     

       }

       catch (Exception e) {

       }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值