ResizeCommandExecutor.java

package cn.bluejoe.elfinder.controller.executors;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.json.JSONObject;

import cn.bluejoe.elfinder.controller.executor.AbstractJsonCommandExecutor;
import cn.bluejoe.elfinder.controller.executor.FsItemEx;
import cn.bluejoe.elfinder.service.FsService;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.ImageTools;
import sk.iway.iwcm.io.IwcmFile;

/**
 *  ArchiveCommandExecutor.java
 *
 *@Title        webjet8
 *@Company      Interway s.r.o. (www.interway.sk)
 *@Copyright    Interway s.r.o. (c) 2001-2015
 *@author       $Author: jeeff suchy $
 *@version      $Revision: 1.3 $
 *@created      Date: Sep 22, 2015 12:32:03 PM
 *@modified     $Date: 2004/08/16 06:26:11 $
 */
public class ResizeCommandExecutor extends AbstractJsonCommandExecutor
{
	@Override
	public void execute(FsService fsService, HttpServletRequest request, ServletContext servletContext, JSONObject json)
			throws Exception
	{
		//[19.11 17:10:19 {iway} {SetCharacterEncodingFilter}] GET /admin/elfinder-connector/?volumes=images&docId=4667&groupId=1267&cmd=resize&target=iwcm_fs_ap_volume_L2ltYWdlcy9jei93ZWItcmVzZW5pL2ludGVyd2F5L3Byb2R1a3R5L3JlZGFrY25pLXN5c3RlbS13ZWJqZXQva29ua3VyZW5jbmUtdnlob2R5L3NuaW1rYS1vYnJhem92a3ktMjAxNS0xMS0xMS1vLTE1LjQwLjAyLnBuZw_E_E&width=159&height=143&mode=resize&_=1447949419114
		
		String target = request.getParameter("target");

		FsItemEx fsi = super.findItem(fsService, target);
		String virtualPath = sk.iway.iwcm.system.elfinder.FsService.getVirtualPath(fsi);
		if (virtualPath.startsWith("/")==false) virtualPath = "/"+virtualPath;
		
		String mode = request.getParameter("mode");
		int width = Tools.getIntValue(request.getParameter("width"), -1);
		int height = Tools.getIntValue(request.getParameter("height"), -1);
		int x = Tools.getIntValue(request.getParameter("x"), -1);
		int y = Tools.getIntValue(request.getParameter("y"), -1);
		double degree = Tools.getDoubleValue(request.getParameter("degree"), -1);
		IwcmFile tempFile = new IwcmFile(Tools.getRealPath(virtualPath));
		
		Logger.debug(ResizeCommandExecutor.class, "mode"+mode+" path="+virtualPath+" w="+width+" h="+height);
		
		if (tempFile.exists()==false || tempFile.canRead()==false) return;
		
		if ("resize".equals(mode))
		{
			int ret = ImageTools.resizeImage(tempFile, width, height);
			Logger.debug(ResizeCommandExecutor.class, " ret="+ret);
		}
		else if ("crop".equals(mode))
		{
			int ret = ImageTools.cropImage(tempFile, width, height, x, y);
			Logger.debug(ResizeCommandExecutor.class, " ret="+ret);
		}
		else if ("rotate".equals(mode))
		{
			int ret = ImageTools.rotateImage(tempFile, degree);
			Logger.debug(ResizeCommandExecutor.class, " ret="+ret);
		}
				
		// posli info o zmene
		json.put("changed", new Object[] { getFsItemInfo(request, fsi) });
	}
}