package com.ttv.acs.packageClient;

import java.io.File;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import junit.framework.TestCase;

import com.ttv.acs.beans.serviceHandlers.LocalContentStoreHandler;
import com.ttv.acs.stub.adi.ADI;
import com.ttv.acs.stub.adi.ADIParseUtil;
import com.ttv.acs.stub.adi.Asset;
import com.ttv.acs.stub.adi.IngestWorkOrderRequest;
import com.ttv.acs.stub.adi.Metadata;
import com.ttv.acs.stub.adi.AbstractWorkOrderRequest;
import com.ttv.acs.util.ChecksumUtil;
import com.ttv.acs.util.WorkflowAdaptor;

public class MyUniTest extends TestCase {
	//TODO communicate with upstream
	//TODO IIOP
	public void _testCreateTempFile() {
		try {
			File xmlTempFile = File.createTempFile("ADI", ".XML");
			File dtdTempFile = new File("C:/tmp");

			//
			// Retrieve the XML from the remote system
			//

			URI sourceURI = new URI("");
			URI destinationURI  = xmlTempFile.toURI();
//			System.out.println("destinationURI is: " + destinationURI.toString());
			
			
//			 destinationURI  = dtdTempFile.toURI();
			File newFile = new File(dtdTempFile.getAbsolutePath() + File.separator + "ADI.XML");
			 destinationURI = newFile.toURI();
			System.out.println("destinationURI is: " + destinationURI.toString());
		} catch (Exception ex) {
			ex.printStackTrace();
			fail(ex.getMessage());
		}
	}

	
	public void _testAcquireResource() {
		try {
			File xmlTempFile = File.createTempFile("ADI", ".XML");
			


			URI sourceURI = new URI("file://C:/home/ads/content/n2bb.com/movie1/ADI.XML");
			URI destinationURI  = xmlTempFile.toURI();
			System.out.println("destinationURI is: " + destinationURI.toString());
			
			LocalContentStoreHandler contentStore = LocalContentStoreHandler.getInstance();
			contentStore.acquireResource(sourceURI, destinationURI);
			
//			File dtdTempFile = new File("/tmp/ADI.DTD");
//			 destinationURI  = dtdTempFile.toURI();
//			System.out.println("destinationURI is: " + destinationURI.toString());
		} catch (Exception ex) {
			fail(ex.getMessage());
		}
	}
	
	public void testProvision(){
		try {
			
			LocalContentStoreHandler contentStore = LocalContentStoreHandler.getInstance();
			AbstractWorkOrderRequest workOrderRequest = contentStore.provisionPackage("TestPackage", "file://C:/home/ads/content/n2bb.com/movie4/ADI.XML");
			System.out.println(workOrderRequest);
		} catch (Exception ex) {
			ex.printStackTrace();
			fail(ex.getMessage());
		}
	}
	
	
	
	
	public void _testParseXML(){
		File adiXMLFile = new File("C:/home/ads/content/n2bb.com/movie4/ADI.XML");
		File dtdFile = new File("C:/home/ads/content/n2bb.com/movie4/ADI.DTD");
		
		
		try {
			ADI adi = ADIParseUtil.parseFile(adiXMLFile, dtdFile);
			assertEquals("n2bb.com", adi.getMetadata().getProviderId());
			assertEquals("CBMV0001000000000001", adi.getMetadata().getAssetId());
			assertEquals("6cf38e8fa1368fc5080b6a270e83e35a", adi.getAssets().get(0).getCheckSum());
			assertEquals("b9dba1bbe9282a98236a4bd2933fef32", adi.getAssets().get(1).getCheckSum());
			assertEquals("ModernGirlsGuidetoLife.mpg", adi.getAssets().get(0).getContent());
			assertEquals("neutrogena.mpg", adi.getAssets().get(1).getContent());
		
		} catch (Exception e) {
			e.printStackTrace();
			fail();
		}
		
	}
	
	public void _testWorkflowAdaptor(){
		WorkflowAdaptor wfAdapter = new WorkflowAdaptor();
		Asset movie= new com.ttv.acs.stub.adi.Asset("movie.mpg", "testchecksum");
		Asset ad= new com.ttv.acs.stub.adi.Asset("ad.mpg", "testchecksum");
		List<Asset> assets = new ArrayList<Asset>();
		assets.add(movie);
		assets.add(ad);
		Metadata metadata = new Metadata("testProviderId", "testAssetId");
		ADI adi = new com.ttv.acs.stub.adi.ADI(assets, metadata);
		boolean result = wfAdapter.notifyWorkFlow(new IngestWorkOrderRequest("/test/adi.xml", false, "test message", adi));
		assertEquals(true, result);
	}
	
	public void _testChecksum(){

		try {
			assertEquals("b9dba1bbe9282a98236a4bd2933fef32", ChecksumUtil.getCheckSum("C:/home/ads/content/n2bb.com/movie4/neutrogena.mpg"));
		} catch (Exception e) {
			fail();
			e.printStackTrace();
		}
	}
}
