package eu.dnetlib.enabling.manager;

import java.util.ArrayList;
import java.util.List;

import javax.xml.ws.wsaddressing.W3CEndpointReference;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.junit.Before;
import org.junit.Test;

import eu.dnetlib.data.information.similarity.ISimilarityServiceBackend;
import eu.dnetlib.data.sts.ds.IDepotService;
import eu.dnetlib.enabling.resultset.rmi.ResultSetService;
import eu.dnetlib.enabling.tools.JaxwsServiceResolverImpl;
import eu.dnetlib.enabling.tools.ServiceResolver;

public class SelfTest {

	//String dmanagerUrl = "http://localhost:8680/dnet-dmanager/services/DManagerService";
	String dmanagerUrl = "http://146.48.122.27:8480/dnet-dmanager/services/DManagerService";
	
	//String depot = "http://146.48.85.149:8380/dnet-sts-ds/services/DepotService";
	String depot = "http://146.48.122.27:8980/dnet-sts-ds/services/DepotService";
	String similar = "http://146.48.85.149:8680/icm-data-information-similarity-latest/services/similarityServiceBackend";
	IDManagerServiceFacade dmanager;
	
	IDepotService depotService;
	private ISimilarityServiceBackend similarity;
	
	private ResultSetService resultSetService;
	
	@Before
	public void init() throws Exception {
		JaxWsProxyFactoryBean backendFactory = new JaxWsProxyFactoryBean();
		backendFactory.setServiceClass(IDManagerServiceFacade.class);
		backendFactory.setAddress(dmanagerUrl);
		dmanager = (IDManagerServiceFacade) backendFactory.create();
		
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setServiceClass(IDepotService.class);
		factory.setAddress(depot);
		depotService = (IDepotService) factory.create();
		
		JaxWsProxyFactoryBean factory3 = new JaxWsProxyFactoryBean();
		factory3.setServiceClass(ISimilarityServiceBackend.class);
		factory3.setAddress(similar);
		similarity = (ISimilarityServiceBackend) factory3.create();
		
		//JaxWsProxyFactoryBean backendFactory4 = new JaxWsProxyFactoryBean();
		//backendFactory4.setServiceClass(ResultSetService.class);
		//backendFactory4.setAddress("http://localhost:8680/dnet-dmanager/services/resultset");
		//resultSetService = (ResultSetService) backendFactory4.create();
		
		//W3CEndpointReference id = resultSetService.createPushRS(3000, 30000);
		//System.out.println("created - - -  -" +id);
		//List<String> elements = new ArrayList<String>();
		//elements.add("ddddddddd");
		//elements.add("we344434343343");
		
		//final ServiceResolver serviceResolver = new JaxwsServiceResolverImpl();
		//final String rsId = serviceResolver.getResourceIdentifier(id);
		//System.out.println("requesting populate");
		//resultSetService.populateRS(rsId, elements);
		//System.out.println("populated");
		//System.exit(1);
	}
	
	
	@Test
	public void testprocessIndexFTDirectPDF() throws Exception {
		
		dmanager.processIndexFTDirectPDF("Nottingham eTheses");
	}
	
	//@Test
	public void testprocessSimilarityFTDirectPDF() throws Exception {
		
		dmanager.processSimilarityFTDirectPDF("Nottingham eTheses");
	}
	
	//@Test
	public void testfeedServiceFromDirectory() throws Exception {
		
		dmanager.feedServiceFromDirectory("90-63efb3ce-710a-4374-98cf-a489bf7a6252_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=", "INDEX");
	}
	
	@Test
	public void testfeedFromSingleSubDirectory() throws Exception {
		
		dmanager.feedFromSingleSubDirectory("126-af12c865-e8f8-4d75-8801-f19be9a89b1b_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=", "INDEX", "45");
	}
	
	@Test
	public void testsplitDirectory() throws Exception {
		
		dmanager.splitDirectory("1-2d26eb1f-20b2-4391-a0f1-8997e48ce23f_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=", "1");
	}
	
	@Test
	public void testNotifyIndex() {
		try {
			dmanager.notifyIndex("Nottingham eTheses", true);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
	
	//@Test
	public void testNotifySimilarity() {
		try {
			dmanager.notifySimilarity("f84edd09-4e19-4c57-b595-11740c322671_U3RvcmVEU1Jlc291cmNlcy9TdG9yZURTUmVzb3VyY2VUeXBl", "Nottingham eTheses");
			//dmanager.notify("bd2a0956-c6b5-4fb1-9f4a-929c140fb911_U3RvcmVEU1Jlc291cmNlcy9TdG9yZURTUmVzb3VyY2VUeXBl");
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
	
	//@Test
	public void testD() throws Exception {
		for (int i=0; i<1; i++) {
			String dsIdentifier = depotService.createStore(null, 0);
			System.out.println(dsIdentifier);
		}
		
	}
	
	@Test
	public void testD1() throws Exception {
		//similarity.create("DMF", "index", "driver");
		similarity.delete("17277461-c754-4662-8594-8ec6cdc6c090_U2ltaWxhcml0eURTUmVzb3VyY2VzL1NpbWlsYXJpdHlEU1Jlc291cmNlVHlwZQ==");
	}
	
}
