OpenCommandExecutor.java

package cn.bluejoe.elfinder.controller.executors;

import java.util.LinkedHashMap;
import java.util.Map;

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 cn.bluejoe.elfinder.service.FsVolume;
import sk.iway.iwcm.Tools;

public class OpenCommandExecutor extends AbstractJsonCommandExecutor
{
	@Override
	public void execute(FsService fsService, HttpServletRequest request, ServletContext servletContext, JSONObject json)
			throws Exception
	{
		boolean init = request.getParameter("init") != null;
		boolean tree = request.getParameter("tree") != null;
		String target = request.getParameter("target");
		String startPath = request.getParameter("startPath");

		Map<String, FsItemEx> files = new LinkedHashMap<String, FsItemEx>();
		if (init)
		{
			json.put("api", 2.1);
			json.put("netDrivers", new Object[0]);
		}

		if (tree)
		{
			for (FsVolume v : fsService.getVolumes())
			{
				FsItemEx root = new FsItemEx(v.getRoot(), fsService);
				files.put(root.getHash(), root);
				addSubfolders(files, root);
			}
		}

		FsItemEx cwd = findCwd(fsService, target);

		if (Tools.isNotEmpty(startPath) && files.size() > 0) {

			if (startPath.endsWith("/")) {
				startPath = startPath.substring(0, startPath.length() - 1);
			}

			for (Map.Entry<String, FsItemEx> file : files.entrySet())
			{
				FsItemEx item = file.getValue();
				String path = item.getPath();
				if (path.equals(startPath)) {
					cwd = findCwd(fsService, file.getKey());
					break;
				}
			}
		}

		// LPA zakomentovane pretoze elfinder uz nepotrebuje cwd - #20705 - wj8 - elfinder update
		//files.put(cwd.getHash(), cwd);
		addChildren(files, cwd);

		json.put("files", files2JsonArray(request, files.values()));
		json.put("cwd", getFsItemInfo(request, cwd));
		json.put("options", getOptions(request, cwd));
	}
}