package net.sf.minuteProject.loader.mapping;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import net.sf.minuteProject.loader.XMLRulesLoader;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;
import org.apache.log4j.Logger;
import net.sf.minuteProject.loader.mapping.MappingHolder;
/**
* @author Florian Adler
*
*/
public class Mapping extends XMLRulesLoader {
private static Logger logger = Logger.getLogger(Mapping.class);
private final static String PATH_CONFIG = "net/sf/minuteProject/loader/mapping/Digester-Mapping-rules.xml";
private MappingHolder holder;
public Mapping(String config) {
super(config, PATH_CONFIG);
holder = new MappingHolder();
}
public Mapping(String configDir, String config) {
super(config, configDir, PATH_CONFIG);
holder = new MappingHolder();
}
public MappingHolder load() throws Exception {
if (getConfigDir()==null)
return load(getConfig(), getDigesterRule());
return load(getConfigDir(), getConfig(), getDigesterRule());
}
public MappingHolder load(MappingHolder mappingHolder, String configuration, String rules) throws Exception {
loadDigester(mappingHolder, configuration, rules);
//TODO add multiple loader for import
// loadDigester(mappingHolder, getInputStream(configuration), rules);
return holder;
}
public MappingHolder load(String configuration, String rules) throws Exception {
holder = load(holder, configuration, rules);
// holder = load(holder, configuration, rules);
return holder;
// MappingHolder Mappingholder = new MappingHolder();
// loadDigester(Mappingholder, getInputStream(configuration), rules);
// //TODO add multiple loader for import
// loadDigester(Mappingholder, getInputStream(configuration), rules);
// return Mappingholder;
}
public MappingHolder load (String fileDirName, String fileName, String rules) throws Exception{
return load(fileDirName + "/" + fileName, rules);
}
public static void main(String args[]) throws Exception {
if (args.length < 1) {
System.exit(1);
}
Date startDate = new Date();
logger.info("start time = "+new Date());
Mapping loader = new Mapping(args[0]);
MappingHolder Mappingholder = loader.load();
Date endDate = new Date();
logger.info("time taken : "+(endDate.getTime()-startDate.getTime())/1000+ "s.");
}
}