package org.gcube.application.geoportal.utils;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.file.Paths;

import org.apache.poi.util.IOUtils;


public class Files {

	public static File getFileFromResources(String fileName) {

        ClassLoader classLoader =Files.class.getClassLoader();

        URL resource = classLoader.getResource(fileName);
        if (resource == null) {
            throw new IllegalArgumentException("file is not found!");
        } else {
            return new File(resource.getFile());
        }

    }	


	public static String readFileAsString(String path, Charset encoding) 
			  throws IOException 
	{
	  byte[] encoded = java.nio.file.Files.readAllBytes(Paths.get(path));
	  return new String(encoded, encoding);
	}
	
	
	public static String getName(String path) {
		
		return path.substring((path.contains(File.separator)?path.lastIndexOf(File.separator)+1:0)
				,(path.contains(".")?path.lastIndexOf("."):path.length()));
		
	}
	
	public static File copyToTemp(InputStream is) throws IOException {
		File toReturn=File.createTempFile("GNA_","");
		IOUtils.copy(is,toReturn);
		return toReturn;
	}
	
	public static String fixFilename(String toFix) {
		if(toFix.contains(".")) {
			String prefix=toFix.substring(toFix.lastIndexOf("."));
			toFix=toFix.substring(0,toFix.lastIndexOf("."));
			return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_")+prefix;
		}
		return toFix.toLowerCase().replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|]","_");
	}
}
