package org.zhios.website.admin.model;

import java.io.File;
import java.io.FileOutputStream;

public class SourceManager {
	public byte [] UploadFileContent;
	
	public boolean UploadFile(String packagepath,String boundary){
		boolean result=false;

		try{
			String instrautf=new String(UploadFileContent,"UTF-8");
			
			//Get file name.
			String filename = instrautf.substring(instrautf.indexOf("filename=\"") + 10);
			filename = filename.substring(0,filename.indexOf("\n"));
			filename = filename.substring(filename.lastIndexOf("/") + 1,filename.indexOf("\""));
						
			//Get start and end of file content;
			String instraasc=new String(UploadFileContent,"ASCII");
			int pos;
			pos = instraasc.indexOf("filename=\"");
			pos = instraasc.indexOf("\n",pos) + 1;
			pos = instraasc.indexOf("\n",pos) + 1;
			pos = instraasc.indexOf("\n",pos) + 1;
			int boundaryLocation=instraasc.indexOf(boundary,pos)-4;
			
			int startpos = ((instraasc.substring(0,pos)).getBytes("ASCII")).length;
			int endpos = ((instraasc.substring(0,boundaryLocation)).getBytes("ASCII")).length;
			
			//Create new file
			String filepath;
			if(packagepath.equals("imagesource")) filepath=SysConfig.ResourcePath+"/userimage/"+filename;
			else if(packagepath.equals("picturesource")) filepath=SysConfig.ResourcePath+"/userpicture/"+filename;
			else filepath=SysConfig.ResourcePath+"/userfile/"+filename;
			
			File newfile=new File(filepath);
			if(!newfile.exists()){
				FileOutputStream outstream=new FileOutputStream(newfile);
				outstream.write(UploadFileContent,startpos,(endpos-startpos));
				outstream.close();
				
				result=true;
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return result;
	}

	public boolean DeleteFiles(String packagepath,String filelist){
		boolean result=false;
		
		String sourcefolder;
		if(packagepath.equals("imagesource")) sourcefolder="userimage";
		else if(packagepath.equals("picturesource")) sourcefolder="userpicture";
		else sourcefolder="userfile";

		String [] files=filelist.split("/");
		String filepath;
		for(int i=0;i<files.length;i++){
			filepath=SysConfig.ResourcePath+"/"+sourcefolder+"/"+files[i];
			File dstfile=new File(filepath);
			if(dstfile.exists()) dstfile.delete();
		}
		result=true;
		
		return result;
	}
	
	public String ReadSourceList(String sourcename){
		String result="";
		
		if(sourcename.equals("imagesource")){
			String [] imagelist=ReadUserFiles("userimage");
			if(!imagelist.equals(null)){
				for(int i=0;i<imagelist.length;i++){
					result+="<div style='width:180px;height:120px;text-align:center;float:left'>" +
							"<div style='margin:auto;border:1px solid #cacaca;width:100px;height:80px'><img src='"+SysConfig.ResourceUrl+"/userimage/"+imagelist[i]+"' " +
							"alt='' width='100px' onload='javascript:if(this.offsetHeight>80){this.style.width=\"auto\";this.style.height=\"80px\";}'></div>" +
							"<input type='checkbox' name='sources' value='"+imagelist[i]+"'>"+
							"<a href='javascript:ImageShow(\""+imagelist[i]+"\",\""+SysConfig.ResourceUrl+"/userimage/"+imagelist[i]+"\")'>"+imagelist[i]+"</a></div>";
				}
			}
		}
		else if(sourcename.equals("picturesource")){
			String [] picturelist=ReadUserFiles("userpicture");
			if(!picturelist.equals(null)){
				for(int i=0;i<picturelist.length;i++){
					result+="<div style='width:150px;height:120px;text-align:center;float:left'>" +
							"<div style='margin:auto;border:1px solid #cacaca;width:100px;height:80px'><img src='"+SysConfig.ResourceUrl+"/userpicture/"+picturelist[i]+"' " +
							"alt='' width='100px' onload='javascript:if(this.offsetHeight>80){this.style.width=\"auto\";this.style.height=\"80px\";}'></div>" +
							"<input type='checkbox' name='sources' value='"+picturelist[i]+"'>"+
							"<a href='javascript:ImageShow(\""+picturelist[i]+"\",\""+SysConfig.ResourceUrl+"/userpicture/"+picturelist[i]+"\")'>"+picturelist[i]+"</a></div>";
				}
			}
		}
		else if(sourcename.equals("filesource")){
			String [] filelist=ReadUserFiles("userfile");
			if(!filelist.equals(null)){
				for(int i=0;i<filelist.length;i++){
					String extendname=filelist[i].substring(filelist[i].lastIndexOf("."));
					String filelogo="";
					if(extendname.equals(".doc")||extendname.equals(".docx")) filelogo="iconword.gif";
					if(extendname.equals(".xls")||extendname.equals(".xlsx")) filelogo="iconexcel.gif";
					if(extendname.equals(".rar")||extendname.equals(".zip")) filelogo="iconrar.gif";
					if(extendname.equals(".txt")) filelogo="icontxt.gif";
					if(filelogo.isEmpty()) filelogo="iconunknown.gif";
					
					result+="<div style='width:150px;height:120px;text-align:center;float:left'>" +
							"<div style='margin:auto;border:1px solid #cacaca;width:100px;height:80px'><img src='img/"+filelogo+"' alt=''></div>" +
							"<input type='checkbox' name='sources' value='"+filelist[i]+"'>"+
							"<a href='"+SysConfig.ResourceUrl+"/userfile/"+filelist[i]+"' target='_blank'>"+filelist[i]+"</a></div>";
				}
			}
		}
		
		return result;
	}
	
	public String ReadFileNameList(String sourcename){
		String result="";
		
		String foldername;
		if(sourcename.equals("imagesource")) foldername="userimage";
		else if(sourcename.equals("picturesource")) foldername="userpicture";
		else if(sourcename.equals("filesource")) foldername="userfile";
		else foldername="";
		
		if(!foldername.isEmpty()){
			String filelist[]=ReadUserFiles(foldername);
			
			for(int i=0;i<filelist.length;i++) result+=","+filelist[i];
			if(!result.isEmpty()) result=result.substring(1);
		}
		
		return result;
	}

	private String [] ReadUserFiles(String foldername){
		String folderpath=SysConfig.ResourcePath+"/"+foldername;
		File folder=new File(folderpath);
		
		if(folder.isDirectory())
			return folder.list();
		else
			return null;
	}
}
