// Path: shim/src/main/java/info/vancauwenberge/filedriver/api/AbstractStrategy.java
// public abstract class AbstractStrategy  implements IStrategy{
// 
// 	public interface IStrategyParameters{
// 		public String getParameterName();
// 		public String getDefaultValue();
// 		public DataType getDataType();
// 		public Constraint[] getConstraints();
// 	}
// 	
// 	public static String getStringValueFor(IStrategyParameters paramDef, Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toString();
//     }
// 
//     public static boolean getBoolValueFor(IStrategyParameters paramDef,Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toBoolean().booleanValue();
//     }
// 
//     public static int getIntValueFor(IStrategyParameters paramDef, Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toInteger();
//     }
// 
//     public static long getLongValueFor(IStrategyParameters paramDef, Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toLong();
//     }
// 	
// 	private <E extends Enum<?> & IStrategyParameters> Map<String,Parameter> getIDMParameters(Class<E>  parameters){
//     	E[] values = parameters.getEnumConstants();
//     	Map<String,Parameter> result = new HashMap<String, Parameter>(values.length);
//     	for (E aParameter : values) {
//             Parameter param = new Parameter(aParameter.getParameterName(), //tag name
//             		aParameter.getDefaultValue(), //default value (optional)
//             		aParameter.getDataType()); //data type
//             Constraint[] cons = aParameter.getConstraints();
//             if (cons != null)
//             	for (Constraint  constraint: cons) {
//                 	param.add(constraint);
// 				}
//             result.put(aParameter.getParameterName(), param);
// 		}
// 		return result;
//     	
//     }
//  
// 	
// 	public Map<String,Parameter> getParameterDefinitions(){
// 		//The XDS.jar library automatically checks parameter
// 		//data types for you.  When a RequiredConstraint
// 		//is added to a parameter, the library will check init documents
// 		//to ensure the parameter is present and has a value.  When you
// 		//add RangeConstraints or EnumConstraints to a parameter, the
// 		//library will check parameter values to see if they satisfy these
// 		//constraints.
// 		return getIDMParameters(getParametersEnum());
// 	}
// 
// 
// 
// 
//     public abstract <E extends Enum<?> & IStrategyParameters> Class<E> getParametersEnum();
// 
// }
// 
// Path: shim/src/main/java/info/vancauwenberge/filedriver/api/IDriver.java
// public interface IDriver {
// 	public ISubscriberShim getSubscriber();
// 	/**
// 	 * Create a new XDS result document
// 	 * @return
// 	 */
// 	public XDSResultDocument newResultDoc();
// 	
// 	/**
// 	 * Get all the driver parameters
// 	 * @return
// 	 */
// 	public Map<? extends String, ? extends Parameter> getDriverParams();
// 	
// 	/**
// 	 * Append the source node to the given query doc
// 	 * @param result
// 	 */
// 	public void appendSourceInfo(WriteableDocument doc);
// 	
// 	/**
// 	 * Get the drivers RDN (=cn)
// 	 * @return
// 	 */
// 	public String getDriverInstanceName();
// 	
// 	/**
// 	 * Get the driver's schema
// 	 * @return
// 	 */
// 	public Object getSchema();
// 	
// 	/**
// 	 * Create a new command doc
// 	 * @return
// 	 */
// 	public XDSCommandDocument newCommandDoc();
// 	
// 	/**
// 	 * Get the association value for the given record
// 	 * @param record
// 	 * @return
// 	 */
// 	public String getAssociationField(Map<String, String> record);
// 	/**
// 	 * Get the source field for the given record
// 	 * @param record
// 	 * @return
// 	 */
// 	public String getSourceField(Map<String, String> record);
// 	
// 	/**
// 	 * Get a pre-configured ECMA script evaluator
// 	 * 
// 	 */
// 	public EcmascriptBuilder getEcmaBuilder();
// 
// }
// 
// Path: shim/src/main/java/info/vancauwenberge/filedriver/api/IFileNameStrategy.java
// public interface IFileNameStrategy extends ISubscriberStrategy{
// 
//     /**
//      * Get the new fileName (not including folder name!).
//      * @param trace
//      * @param driverParams
//      * @throws XDSParameterException
//      */    
//     public String getNewFileName(Map<String,String> record);
// }


import com.novell.nds.dirxml.driver.xds.Parameter;
import com.novell.nds.dirxml.driver.xds.XDSParameterException;
import java.util.HashMap;
import java.util.Map;
import info.vancauwenberge.filedriver.api.AbstractStrategy;
import info.vancauwenberge.filedriver.api.IDriver;
import info.vancauwenberge.filedriver.api.IFileNameStrategy;
import com.novell.nds.dirxml.driver.Trace;
import com.novell.nds.dirxml.driver.xds.Constraint;
import com.novell.nds.dirxml.driver.xds.DataType;
				return "GUIDNamer_FilePreFix";
			}

			@Override
			public String getDefaultValue() {
				return "";
			}
		};
		

		public abstract String getParameterName();

		public abstract String getDefaultValue();

		public DataType getDataType() {
			return DataType.STRING;
		}

		public Constraint[] getConstraints() {
			return null;
		}
	}
	
	private String fileExtention;
	private String filePreFix;
	
	
	/* (non-Javadoc)
	 * @see info.vancauwenberge.filedriver.api.INewFileNamer#init(com.novell.nds.dirxml.driver.Trace, java.util.Map)
	 */
// Path: shim/src/main/java/info/vancauwenberge/filedriver/api/AbstractStrategy.java
// public abstract class AbstractStrategy  implements IStrategy{
// 
// 	public interface IStrategyParameters{
// 		public String getParameterName();
// 		public String getDefaultValue();
// 		public DataType getDataType();
// 		public Constraint[] getConstraints();
// 	}
// 	
// 	public static String getStringValueFor(IStrategyParameters paramDef, Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toString();
//     }
// 
//     public static boolean getBoolValueFor(IStrategyParameters paramDef,Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toBoolean().booleanValue();
//     }
// 
//     public static int getIntValueFor(IStrategyParameters paramDef, Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toInteger();
//     }
// 
//     public static long getLongValueFor(IStrategyParameters paramDef, Map<String,Parameter> subParams){
//     	return subParams.get(paramDef.getParameterName()).toLong();
//     }
// 	
// 	private <E extends Enum<?> & IStrategyParameters> Map<String,Parameter> getIDMParameters(Class<E>  parameters){
//     	E[] values = parameters.getEnumConstants();
//     	Map<String,Parameter> result = new HashMap<String, Parameter>(values.length);
//     	for (E aParameter : values) {
//             Parameter param = new Parameter(aParameter.getParameterName(), //tag name
//             		aParameter.getDefaultValue(), //default value (optional)
//             		aParameter.getDataType()); //data type
//             Constraint[] cons = aParameter.getConstraints();
//             if (cons != null)
//             	for (Constraint  constraint: cons) {
//                 	param.add(constraint);
// 				}
//             result.put(aParameter.getParameterName(), param);
// 		}
// 		return result;
//     	
//     }
//  
// 	
// 	public Map<String,Parameter> getParameterDefinitions(){
// 		//The XDS.jar library automatically checks parameter
// 		//data types for you.  When a RequiredConstraint
// 		//is added to a parameter, the library will check init documents
// 		//to ensure the parameter is present and has a value.  When you
// 		//add RangeConstraints or EnumConstraints to a parameter, the
// 		//library will check parameter values to see if they satisfy these
// 		//constraints.
// 		return getIDMParameters(getParametersEnum());
// 	}
// 
// 
// 
// 
//     public abstract <E extends Enum<?> & IStrategyParameters> Class<E> getParametersEnum();
// 
// }
// 
// Path: shim/src/main/java/info/vancauwenberge/filedriver/api/IDriver.java
// public interface IDriver {
// 	public ISubscriberShim getSubscriber();
// 	/**
// 	 * Create a new XDS result document
// 	 * @return
// 	 */
// 	public XDSResultDocument newResultDoc();
// 	
// 	/**
// 	 * Get all the driver parameters
// 	 * @return
// 	 */
// 	public Map<? extends String, ? extends Parameter> getDriverParams();
// 	
// 	/**
// 	 * Append the source node to the given query doc
// 	 * @param result
// 	 */
// 	public void appendSourceInfo(WriteableDocument doc);
// 	
// 	/**
// 	 * Get the drivers RDN (=cn)
// 	 * @return
// 	 */
// 	public String getDriverInstanceName();
// 	
// 	/**
// 	 * Get the driver's schema
// 	 * @return
// 	 */
// 	public Object getSchema();
// 	
// 	/**
// 	 * Create a new command doc
// 	 * @return
// 	 */
// 	public XDSCommandDocument newCommandDoc();
// 	
// 	/**
// 	 * Get the association value for the given record
// 	 * @param record
// 	 * @return
// 	 */
// 	public String getAssociationField(Map<String, String> record);
// 	/**
// 	 * Get the source field for the given record
// 	 * @param record
// 	 * @return
// 	 */
// 	public String getSourceField(Map<String, String> record);
// 	
// 	/**
// 	 * Get a pre-configured ECMA script evaluator
// 	 * 
// 	 */
// 	public EcmascriptBuilder getEcmaBuilder();
// 
// }
// 
// Path: shim/src/main/java/info/vancauwenberge/filedriver/api/IFileNameStrategy.java
// public interface IFileNameStrategy extends ISubscriberStrategy{
// 
//     /**
//      * Get the new fileName (not including folder name!).
//      * @param trace
//      * @param driverParams
//      * @throws XDSParameterException
//      */    
//     public String getNewFileName(Map<String,String> record);
// }


// Path: shim/src/main/java/info/vancauwenberge/filedriver/filename/GUIDFileNameStrategy.java
import com.novell.nds.dirxml.driver.xds.Parameter;
import com.novell.nds.dirxml.driver.xds.XDSParameterException;
import java.util.HashMap;
import java.util.Map;
import info.vancauwenberge.filedriver.api.AbstractStrategy;
import info.vancauwenberge.filedriver.api.IDriver;
import info.vancauwenberge.filedriver.api.IFileNameStrategy;
import com.novell.nds.dirxml.driver.Trace;
import com.novell.nds.dirxml.driver.xds.Constraint;
import com.novell.nds.dirxml.driver.xds.DataType;

				return "GUIDNamer_FilePreFix";
			}

			@Override
			public String getDefaultValue() {
				return "";
			}
		};
		

		public abstract String getParameterName();

		public abstract String getDefaultValue();

		public DataType getDataType() {
			return DataType.STRING;
		}

		public Constraint[] getConstraints() {
			return null;
		}
	}
	
	private String fileExtention;
	private String filePreFix;
	
	
	/* (non-Javadoc)
	 * @see info.vancauwenberge.filedriver.api.INewFileNamer#init(com.novell.nds.dirxml.driver.Trace, java.util.Map)
	 */
	public void init(Trace trace, Map<String, Parameter> driverParams, IDriver driver)