package org.nlamah.QBase.Tools;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.IOUtils;
import org.nlamah.QBase.Constants.Language;
import org.nlamah.QBase.Constants.UriConstants;
import org.nlamah.QBase.Error.FileReadException;
import org.nlamah.QBase.Error.QBaseError;
public class SourceCodeTools
{
public static String qlSourceCodePath(String[] args)
{
String qlSourceCodePath = UriConstants.defaultUriSourceQL();
if (args.length > 0)
{
qlSourceCodePath = UriConstants.baseUri() + args[0];
}
return qlSourceCodePath;
}
public static String qlsSourceCodePath(String[] args)
{
String qlsSourceCodePath = UriConstants.defaultUriSourceQLS();
if (args.length > 1)
{
qlsSourceCodePath = UriConstants.baseUri() + args[1];
}
return qlsSourceCodePath;
}
static public String sourceCode(String resourcePath) throws FileReadException
{
try
{
File file = new File(resourcePath);
InputStream inputStream = new FileInputStream(file);
return IOUtils.toString(inputStream, "UTF-8");
}
catch (Exception e)
{
e.printStackTrace();
List<QBaseError> errors = new ArrayList<QBaseError>();
throw new FileReadException(errors);
}
}
static public String qlSourceCodeTestForFolderAndFileName(String folder, String fileName) throws FileReadException
{
return sourceCode(qlUriTestForFolderAndFileName(folder, fileName));
}
static public String qlsSourceCodeTestForFolderAndFileName(String folder, String fileName) throws FileReadException
{
return sourceCode(qlsUriTestForFolderAndFileName(folder, fileName));
}
static public String qlUriTestForFolderAndFileName(String folder, String fileName)
{
return uriForFolderAndFileNameAndLanguage(UriConstants.defaultUriSourceQLTestRoot(), folder, fileName, Language.QL);
}
static public String qlsUriTestForFolderAndFileName(String folder, String fileName)
{
return uriForFolderAndFileNameAndLanguage(UriConstants.defaultUriSourceQLSTestRoot(), folder, fileName, Language.QLS);
}
static public String qlUriForFolderAndFileName(String root, String folder, String fileName)
{
return uriForFolderAndFileNameAndLanguage(root, folder, fileName, Language.QL);
}
static public String qlsUriForFolderAndFileName(String root, String folder, String fileName)
{
return uriForFolderAndFileNameAndLanguage(root, folder, fileName, Language.QLS);
}
static private String uriForFolderAndFileNameAndLanguage(String root, String folder, String fileName, Language language)
{
String result = root + folder + "/" + fileName;
switch (language)
{
case QL:
{
return result + ".ql";
}
case QLS:
{
return result + ".qls";
}
}
assert(false);
return result;
}
}