Package org.exoplatform.webui.form.input

Source Code of org.exoplatform.webui.form.input.UIUploadInput

/*
* Copyright (C) 2003-2011 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.webui.form.input;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.exoplatform.upload.UploadResource;
import org.exoplatform.upload.UploadService;
import org.exoplatform.upload.UploadService.UploadUnit;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.form.UIFormInputBase;



/**
* @author <a href="mailto:haint@exoplatform.com">Nguyen Thanh Hai</a>
*
* @datJul 19, 2011
*/

@ComponentConfig(template = "system:/groovy/webui/form/UIUploadInput.gtmpl")
public class UIUploadInput extends UIFormInputBase<String>
{
   private String[] uploadId;
  
   private boolean isAutoUpload = true;
  
   private int limitFile = 1;
  
   public UIUploadInput(String name, String bindingExpression, int limitFile)
   {
      super(name, bindingExpression, String.class);
      if(limitFile > 1) this.limitFile = limitFile ;
      uploadId = new String[this.limitFile] ;
      for(int i = 0; i < uploadId.length; i++)
      {
         uploadId[i] = new StringBuffer().append(Math.abs(hashCode())).append('-').append(i).toString();
      }
      UploadService service = getApplicationComponent(UploadService.class);
      for(int i = 0; i < uploadId.length; i++)
      {
         service.addUploadLimit(uploadId[i], null); // Use the limit set by the service. Warning, the service can allow no size limit (value to 0)
      }
      setComponentConfig(UIUploadInput.class, null);
   }

   public UIUploadInput(String name, String bindingExpression,int limitFile, int limitSize)
   {
      this(name, bindingExpression, limitFile, limitSize, UploadUnit.MB);
   }
  
   public UIUploadInput(String name, String bindingExpression, int limitFile, int limitSize, UploadUnit unit)
   {
      super(name, bindingExpression, String.class);
      if(limitFile > 1) this.limitFile = limitFile ;
      uploadId = new String[this.limitFile] ;
      for(int i = 0; i < uploadId.length; i++)
      {
         uploadId[i] = new StringBuffer().append(Math.abs(hashCode())).append('-').append(i).toString();
      }
      UploadService service = getApplicationComponent(UploadService.class);
      for(int i = 0; i < uploadId.length; i++)
      {
         service.addUploadLimit(uploadId[i], Integer.valueOf(limitSize), unit);
      }
      setComponentConfig(UIUploadInput.class, null);
   }
  
   public String[] getUploadId()
   {
      return uploadId;
   }
  
   public void setAutoUpload(boolean isAutoUpload)
   {
      this.isAutoUpload = isAutoUpload;
   }
  
   public boolean isAutoUpload()
   {
      return isAutoUpload;
   }
  
   public int getLimitFile()
   {
      return limitFile;
   }
  
   public UploadResource[] getUploadResources() {
      List<UploadResource> holder = new ArrayList<UploadResource>();
      UploadService service = getApplicationComponent(UploadService.class);
      for(int i = 0; i < uploadId.length; i++)
      {
         UploadResource uploadResource = service.getUploadResource(uploadId[i]);
         if(uploadResource == null) continue;
         holder.add(uploadResource) ;
      }
      return holder.toArray(new UploadResource[holder.size()]);
   }
  
   public UploadResource getUploadResource(String uploadId) {
      UploadService service = getApplicationComponent(UploadService.class);
      return service.getUploadResource(uploadId);
   }
  
   public InputStream[] getUploadDataAsStreams() throws FileNotFoundException
   {
      List<InputStream> holder = new ArrayList<InputStream>();
      UploadService service = getApplicationComponent(UploadService.class);
      for(int i = 0; i < uploadId.length; i++)
      {
         UploadResource uploadResource = service.getUploadResource(uploadId[i]);
         if(uploadResource == null) continue;
         File file = new File(uploadResource.getStoreLocation());
         holder.add(new FileInputStream(file));
      }
      return holder.toArray(new InputStream[holder.size()]);
   }
  
   public InputStream getUploadDataAsStream(String uploadId) throws FileNotFoundException
   {
      UploadService service = getApplicationComponent(UploadService.class);
      UploadResource uploadResource = service.getUploadResource(uploadId);
      if(uploadResource == null) return null;
      else return new FileInputStream(new File(uploadResource.getStoreLocation()));
   }

   public void decode(Object input, WebuiRequestContext context) throws Exception
   {
   }
}
TOP

Related Classes of org.exoplatform.webui.form.input.UIUploadInput

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.