⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uploadserviceshell.java

📁 非常有影响的 j道 论 坛 源码 国外很有明的专家编写的 ....对java爱好者很有参考价值
💻 JAVA
字号:
package com.jdon.jivejdon.service.imp.upload;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;

import com.jdon.annotation.intercept.Poolable;
import com.jdon.annotation.intercept.SessionContextAcceptable;
import com.jdon.container.visitor.data.SessionContext;
import com.jdon.controller.events.EventModel;
import com.jdon.jivejdon.Constants;
import com.jdon.jivejdon.model.UploadFile;
import com.jdon.jivejdon.repository.UploadRepository;
import com.jdon.jivejdon.service.UploadService;
import com.jdon.util.UtilValidate;

@Poolable
public class UploadServiceShell implements UploadService{
	private final static Logger logger = Logger.getLogger(UploadServiceShell.class);

	private final static String UPLOAD_NAME = "UPLOAD";

	protected UploadRepository uploadRepository;

	protected SessionContext sc;

	public UploadServiceShell(UploadRepository uploadRepository) {
		this.uploadRepository = uploadRepository;

	}

	/* 
	 * save the uploadfile to session becuase the messageId has not produce,
	 * when the message create operation is active, will call saveUploadFileToDB method
	 */
	public void saveUploadFile(EventModel em) {
		UploadFile uploadFile = (UploadFile) em.getModelIF();
		logger.debug("UploadFile size =" + uploadFile.getSize());

		Long messageId = null;
		if (!UtilValidate.isEmpty(uploadFile.getParentId()))
			messageId = Long.parseLong(uploadFile.getParentId());

		List<UploadFile> uploads = getUploadFilesFromSession(this.sc);
		if (uploads == null)
			uploads = initSession(messageId, this.sc);

		if (uploads.size() < 3) {//@todo  modify it by this user's grade
			logger.debug("add the upload ");
			uploads.add(uploadFile);
		} else if (uploads.size() >= 3) {
			logger.warn("max count is three upload files");
			em.setErrors(Constants.EXCEED_MAX_UPLOADS);
		}
	}

	public Collection getAllUploadFiles(Long messageId) {
		List<UploadFile> uploads = getUploadFilesFromSession(this.sc);
		if (uploads == null)
			uploads = initSession(messageId, this.sc);
		return uploads;
	}

	/** 
	 * get all UploadFiles include session but not exclude the old
	 */
	public Collection getAllUploadFiles(SessionContext sessionContext) {
		logger.debug(" loadUploadFiles ");
		Collection re = getUploadFilesFromSession(sessionContext);
		return re;
	}

	public void removeUploadFile(EventModel em) {
		logger.debug(" uploadService.removeUploadFile ");
		UploadFile uploadFile = (UploadFile) em.getModelIF();
		List<UploadFile> uploads = getUploadFilesFromSession(this.sc);

		int IdIndex = Integer.parseInt(uploadFile.getId());
		if ((uploads.size() < IdIndex))
			return;
		uploads.remove(IdIndex);

	}

	public UploadFile getUploadFile(String objectId, boolean lazy) {
		logger.debug("getUploadFile for id=" + objectId);
		UploadFile uf = getUploadFileFromSession(objectId);
		if (uf == null)
			uf = uploadRepository.getUploadFile(objectId, lazy);
		return uf;
	}

	private UploadFile getUploadFileFromSession(String objectId) {
		List<UploadFile> uploads = getUploadFilesFromSession(this.sc);
		if (uploads == null)
			return null;

		int IdIndex = Integer.parseInt(objectId);
		if ((uploads.size() < IdIndex))
			return null;

		return uploads.get(IdIndex);
	}

	private List<UploadFile> getUploadFilesFromSession(SessionContext sessionContext) {
		return (List) sessionContext.getArrtibute(UPLOAD_NAME);
	}

	private List<UploadFile> initSession(Long messageId, SessionContext sessionContext) {
		List<UploadFile> uploads = new ArrayList<UploadFile>();
		sessionContext.setArrtibute(UPLOAD_NAME, uploads);
		logger.debug("first time init ");
		if ((messageId != null) && (messageId.longValue() != 0)) {
			Collection dbList = uploadRepository.getUploadFiles(messageId, false);
			Iterator iter = dbList.iterator();
			while (iter.hasNext()) {
				UploadFile uploadFile = (UploadFile) iter.next();
				uploads.add(uploadFile);
			}
		}
		return uploads;
	}

	public void clearSession(SessionContext sessionContext) {
		if (sessionContext != null)
			sessionContext.remove(UPLOAD_NAME);
	}

	/**
	 * @return Returns the sessionContext.
	 */
	public SessionContext getSessionContext() {
		return sc;
	}

	/**
	 * @param sessionContext The sessionContext to set.
	 */
	@SessionContextAcceptable
	public void setSessionContext(SessionContext sessionContext) {
		if (sessionContext != null)
		   this.sc = sessionContext;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -