package eu.dnetlib.domain.functionality;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import eu.dnetlib.domain.data.Document;
import eu.dnetlib.domain.functionality.DocumentDescription.View;
import eu.dnetlib.domain.functionality.DocumentField.Cutpoint;

public class TestDocumentDescription {
	private Document document = null;
	DocumentDescription description = new DocumentDescription(
			View.DETAILED_VIEW);
	List<DisplayType> displays = new ArrayList<DisplayType>();

	@Before
	public void setUp() {
		document = new Document();

		document.setMap(new HashMap<String, List<String>>());
		document.getMap().put("id", Arrays.asList(new String[] {}));
		document.getMap().put("repName",
				Arrays.asList(new String[] { "ACM Repository" }));
		document.getMap().put("identifier",
				Arrays.asList(new String[] { "What a beautiful title!!" }));
		document.getMap().put("title",
				Arrays.asList(new String[] { "title A", "title B" }));
		document.getMap().put(
				"descr",
				Arrays.asList(new String[] { "descriptionA", "descriptionB",
						"descriptionC" }));
		document.getMap().put(
				"creator",
				Arrays
						.asList(new String[] { "creator A", "author B",
								"crtor C" }));
	}
	@Test
	public void testPartDescription() {

		SwitchDocumentField switchField = new SwitchDocumentField(
				"CobjTypology");
		Map<Locale, String> descriprionMap = new HashMap<Locale, String>();
		
		descriprionMap = new HashMap<Locale, String>();
		descriprionMap.put(new Locale("en", "GB"), "${title}");
		descriprionMap.put(new Locale("es", "ES"), "${title}");
		switchField.setDescriptionMap(descriprionMap);								  
		DisplayType type = new DocumentExternalUrlDisplayType("identifier", descriprionMap);
		displays.add(type);
		DocumentField field = new DocumentField("identifier", descriprionMap, null, displays, "document_text", Cutpoint.VALUE, 1);
		descriprionMap = new HashMap<Locale, String>();
		descriprionMap.put(new Locale("en", "US"), "You can also visit...");
		descriprionMap.put(new Locale("es", "ES"), "también se puede visitar");		
		field.setSecondaryLinkMap(descriprionMap);
		field.setForceDescription(true);
		switchField.addSwitchDisplayField("Textual", field);

		System.out.println(field.getMessage(document));

		/*
		 * DocumentField field = new DocumentField("descr", null, displays,
		 * Cutpoint.PART, 3); DisplayType dType = new
		 * PlainTextDisplayType("descr"); displays.add(dType);
		 * field.getDisplays().addAll(displays);
		 * System.out.println(field.getMessage(document));
		 * 
		 * field = new DocumentField("descr", null, displays, Cutpoint.VALUE,
		 * 3); dType = new PlainTextDisplayType("descr"); displays = new
		 * ArrayList<DisplayType>(); displays.add(dType);
		 * field.getDisplays().addAll(displays);
		 * System.out.println(field.getMessage(document));
		 * 
		 * DocumentField field = new DocumentField("descr", null, displays,
		 * Cutpoint.LINE, 3); DisplayType dType = new
		 * PlainTextDisplayType("descr"); displays = new
		 * ArrayList<DisplayType>(); displays.add(dType);
		 * field.getDisplays().addAll(displays);
		 * System.out.println(field.getMessage(document));
		 * 
		 * /* dType = new PlainTextDisplayType("descr", "Desc is: ${descr}");
		 * displays.add(dType);
		 * 
		 * field = new DocumentField("descr", null, displays);
		 * System.out.println(field.getMessage(document));
		 * 
		 * displays = new ArrayList<DisplayType>(); dType = new
		 * PlainTextDisplayType("descr", "Desc is: ${descr}");
		 * displays.add(dType);
		 * 
		 * field = new DocumentField("descr", null, displays);
		 * System.out.println(field.getMessage(document));
		 */
	}

}
