DuplicateCommandExecutor.java
package cn.bluejoe.elfinder.controller.executors;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FilenameUtils;
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.RequestBean;
import sk.iway.iwcm.system.elfinder.IwcmDocGroupFsVolume;
public class DuplicateCommandExecutor extends AbstractJsonCommandExecutor
{
@Override
public void execute(FsService fsService, HttpServletRequest request, ServletContext servletContext, JSONObject json)
throws Exception
{
String[] targets = request.getParameterValues("targets[]");
List<FsItemEx> added = new ArrayList<FsItemEx>();
for (String target : targets)
{
FsItemEx fsi = super.findItem(fsService, target);
String name = fsi.getName();
String baseName = FilenameUtils.getBaseName(name);
String extension = FilenameUtils.getExtension(name);
FsItemEx newFile = null;
//JEEFF: upravene pre podporu nasho DocGroup
if (fsi.getVolumeId().equals(IwcmDocGroupFsVolume.VOLUME_ID))
{
((IwcmDocGroupFsVolume)fsi.getVolume()).createAndCopy(fsi, fsi.getParent(), false);
//toto realne neviem vykonstruovat newFile = new FsItemEx(fsi.getParent(), fsi.getPath());
//musim nieco poslat, aby sa vyvolal added event a nasledne reload
newFile = fsi;
RequestBean.setAttribute("forceReloadTree", Boolean.TRUE);
}
else
{
int i = 1;
baseName = baseName.replaceAll("-\\d+$", "");
while (true)
{
String newName = String.format("%s-%d%s", baseName, i, (extension == null || extension.isEmpty() ? ""
: "." + extension));
newFile = new FsItemEx(fsi.getParent(), newName);
if (!newFile.exists())
{
break;
}
i++;
}
createAndCopy(fsi, newFile);
}
added.add(newFile);
}
json.put("added", files2JsonArray(request, added));
}
}