// Path: src/main/java/com/rolfje/anonimatron/configuration/Column.java
// public class Column {
//     private String name;
//     private String type;
//     private int size = -1;
//     private boolean shortlived;
//     private Map<String, String> parameters;
// 
//     public Column() {
// 
//     }
// 
//     public Column(String name, String type) {
//         this.name = name;
//         this.type = type;
//     }
// 
//     public Column(String name, String type, int size) {
//         this(name, type);
//         this.size = size;
//     }
// 
//     public Column(String name, String type, int size, boolean shortlived) {
//         this(name, type);
//         this.size = size;
//         this.shortlived = shortlived;
//     }
// 
//     public Column(String name, String type, int size, boolean shortlived, Map<String, String> parameters) {
//         this(name, type, size, shortlived);
//         this.parameters = parameters;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// 
//     public int getSize() {
//         return size;
//     }
// 
//     public void setSize(int size) {
//         this.size = size;
//     }
// 
//     public boolean isShortLived() {
//         return shortlived;
//     }
// 
//     public void setShortlived(boolean shortlived) {
//         this.shortlived = shortlived;
//     }
// 
//     public Map<String, String> getParameters() {
//         return parameters;
//     }
// 
//     public void setParameters(Map<String, String> parameters) {
//         this.parameters = parameters;
//     }
// }
// 
// Path: src/main/java/com/rolfje/anonimatron/synonyms/Synonym.java
// public interface Synonym {
// 
// 	/**
// 	 * Indicates if this Synonym is short-lived or transient, meaning that
//      * it should not be stored in the synonyms file. Transient Synonyms
//      * are not stored, need to be calculated each run time.
// 	 *
// 	 * Transient synonyms are:
// 	 *
// 	 * <ol>
// 	 *     <li>Not stored in memory.</li>
// 	 *     <li>Not stored in the synonym file.</li>
// 	 * </ol>
// 	 *
// 	 * @return <code>true</code> if the synonym should be thrown away
// 	 * after use (not stored in the synonym file).
// 	 */
// 	boolean isShortLived();
// 
// 	/**
// 	 * @return The semantic data type of this Synonym, usually something
// 	 *         descriptive as "NAME" or "STREET".
// 	 */
// 	String getType();
// 
// 	/**
// 	 * @return The data which was in the original database for this Synonym
// 	 */
// 	Object getFrom();
// 
// 	/**
// 	 * 
// 	 * @return The data with which the original data in the database will be or
// 	 *         is replaced when the Anonymizer runs.
// 	 */
// 	Object getTo();
// }


import com.rolfje.anonimatron.configuration.Column;
import com.rolfje.anonimatron.synonyms.Synonym;
import junit.framework.TestCase;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

        assertEquals(new Date(0), new Date(0));

        List<Object> fromList = new ArrayList<>();
        fromList.add(new Date(0));
        fromList.add(new Date(86400000L));
        fromList.add(new Date(172800000L));

        String type = Date.class.getName();

        testAnonymizer(fromList, type, "DATE");
    }

    public void testParameterizedAnonymizer() {
        List<Object> fromList = new ArrayList<>();
        fromList.add("String 1");
        fromList.add("String 2");
        fromList.add("String 3");

        String type = new FixedValueAnonymizer().getType();

        testAnonymizer(fromList, type, type);
    }

    private void testAnonymizer(List<Object> fromList, String lookupType, String synonymType) {
        List<Object> toList = new ArrayList<>();

        Map<String, String> parameters = new HashMap<>();
        parameters.put("value", "testValue");

// Path: src/main/java/com/rolfje/anonimatron/configuration/Column.java
// public class Column {
//     private String name;
//     private String type;
//     private int size = -1;
//     private boolean shortlived;
//     private Map<String, String> parameters;
// 
//     public Column() {
// 
//     }
// 
//     public Column(String name, String type) {
//         this.name = name;
//         this.type = type;
//     }
// 
//     public Column(String name, String type, int size) {
//         this(name, type);
//         this.size = size;
//     }
// 
//     public Column(String name, String type, int size, boolean shortlived) {
//         this(name, type);
//         this.size = size;
//         this.shortlived = shortlived;
//     }
// 
//     public Column(String name, String type, int size, boolean shortlived, Map<String, String> parameters) {
//         this(name, type, size, shortlived);
//         this.parameters = parameters;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// 
//     public int getSize() {
//         return size;
//     }
// 
//     public void setSize(int size) {
//         this.size = size;
//     }
// 
//     public boolean isShortLived() {
//         return shortlived;
//     }
// 
//     public void setShortlived(boolean shortlived) {
//         this.shortlived = shortlived;
//     }
// 
//     public Map<String, String> getParameters() {
//         return parameters;
//     }
// 
//     public void setParameters(Map<String, String> parameters) {
//         this.parameters = parameters;
//     }
// }
// 
// Path: src/main/java/com/rolfje/anonimatron/synonyms/Synonym.java
// public interface Synonym {
// 
// 	/**
// 	 * Indicates if this Synonym is short-lived or transient, meaning that
//      * it should not be stored in the synonyms file. Transient Synonyms
//      * are not stored, need to be calculated each run time.
// 	 *
// 	 * Transient synonyms are:
// 	 *
// 	 * <ol>
// 	 *     <li>Not stored in memory.</li>
// 	 *     <li>Not stored in the synonym file.</li>
// 	 * </ol>
// 	 *
// 	 * @return <code>true</code> if the synonym should be thrown away
// 	 * after use (not stored in the synonym file).
// 	 */
// 	boolean isShortLived();
// 
// 	/**
// 	 * @return The semantic data type of this Synonym, usually something
// 	 *         descriptive as "NAME" or "STREET".
// 	 */
// 	String getType();
// 
// 	/**
// 	 * @return The data which was in the original database for this Synonym
// 	 */
// 	Object getFrom();
// 
// 	/**
// 	 * 
// 	 * @return The data with which the original data in the database will be or
// 	 *         is replaced when the Anonymizer runs.
// 	 */
// 	Object getTo();
// }


// Path: src/test/java/com/rolfje/anonimatron/anonymizer/AnonymizerServiceTest.java
import com.rolfje.anonimatron.configuration.Column;
import com.rolfje.anonimatron.synonyms.Synonym;
import junit.framework.TestCase;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


        assertEquals(new Date(0), new Date(0));

        List<Object> fromList = new ArrayList<>();
        fromList.add(new Date(0));
        fromList.add(new Date(86400000L));
        fromList.add(new Date(172800000L));

        String type = Date.class.getName();

        testAnonymizer(fromList, type, "DATE");
    }

    public void testParameterizedAnonymizer() {
        List<Object> fromList = new ArrayList<>();
        fromList.add("String 1");
        fromList.add("String 2");
        fromList.add("String 3");

        String type = new FixedValueAnonymizer().getType();

        testAnonymizer(fromList, type, type);
    }

    private void testAnonymizer(List<Object> fromList, String lookupType, String synonymType) {
        List<Object> toList = new ArrayList<>();

        Map<String, String> parameters = new HashMap<>();
        parameters.put("value", "testValue");

        Column column = new Column("Testcolumn", lookupType, 100, false, parameters);