【Java开源代码栏目提醒】:网学会员,鉴于大家对Java开源代码十分关注,论文会员在此为大家搜集整理了“Assistor.java”一文,供大家参考学习!
package chapter12;
import java.io.File;
import java.sql.SQLException;
import java.util.HashMap;
import javax.servlet.ServletContext;
import javax.
xml.xpath.XPathExpressionException;
import chapter12.element.Sql;
/**
*
* This class is relate to a XML, it get the message form XML
*/
public class Assistor {
private static HashMap m_container = null;
private HashMap m_sqlMap = null;
private long m_lLastModified = 0;
private Assistor(long lLastModified){
m_lLastModified = lLastModified;
}
/**
*
* @param ctx
* @param sFile
* @return
* @throws XPathExpressionException
* @throws DBAssException
*/
public static synchronized Assistor getAssistor(ServletContext ctx, String sFile) throws XPathExpressionException, DBAssException{
if(m_container == null){
m_container = new HashMap();
}
//get the file's last modified value
String sFileName = ctx.getRealPath(sFile);
File file = new File(sFileName);
long lLastMdf = file.lastModified();
if(lLastMdf == 0){
throw new DBAssException("Can't read file: " + sFileName);
}
Assistor ass = getExistAssistor(sFile, lLastMdf);
//if the Assistor object is not exist or the file had been modify, make new Assistor object.
if(ass == null){
DBAssFileParser parser = new DBAssFileParser();
HashMap sqlMap = parser.parse(ctx, sFile);
ass = new Assistor(lLastMdf);
//set sql map
ass.m_sqlMap =
sqlMap;
//cache the Assistor object
m_container.put(sFile, ass);
}
return ass;
}
private static Assistor getExistAssistor(String sFile, long lLastMdf) throws XPathExpressionException, DBAssException{
Assistor ass = (Assistor)m_container.get(sFile);
if(ass == null || lLastMdf != ass.m_lLastModified){
return null;
}
return ass;
}
public String getHtmlCode(String sSqlID, HashMap paramMap) throws XPathExpressionException, DBAssException, SQLException{
Sql sql = (Sql)m_sqlMap.get(sSqlID);
if(sql == null){
throw new DBAssException("Can't find sql: " + sSqlID);
}
return sql.execute(paramMap);
}
}