/**
 * Copyright 2008-2009 DRIVER PROJECT (Bielefeld University)
 * Original author: Marek Imialek <marek.imialek at uni-bielefeld.de>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package eu.dnetlib.data.sts.ds;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

import java.util.ArrayList;
import java.util.Iterator;
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.enabling.resultset.rmi.ResultSetException;
import eu.dnetlib.enabling.resultset.rmi.ResultSetService;
import eu.dnetlib.enabling.tools.JaxwsServiceResolverImpl;
import eu.dnetlib.enabling.tools.ServiceResolver;

/**
 * The Class SimpleClient.
 * 
 * @author <a href="mailto:marek.imialek at uni-bielefeld.de">Marek Imialek</a>
 */
public class SimpleClient {
		
	private ResultSetService dsRS;

	private IDepotService dS;

	/**
	 * Sets the up.
	 * 
	 */
	@Before 
	public void setUp() {
	
		JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
		factory.setServiceClass(ResultSetService.class);
		factory.setAddress(
				"http://146.48.85.160:8280/is/services/resultSet");
		dsRS = (ResultSetService) factory.create();
		assertNotNull(dsRS.identify());
		System.out.println("Identify Read from RS: " + dsRS.identify() );
		
		JaxWsProxyFactoryBean factory1 = new JaxWsProxyFactoryBean();
		factory1.setServiceClass(IDepotService.class);
		factory1.setAddress(
				"http://localhost:8980/dnet-sts-ds/services/DepotService");
		//factory1.setAddress(
		//	"http://129.70.40.102:8380/dnet-sts-ds/services/DepotService");
		dS = (IDepotService) factory1.create();
		assertNotNull(dS.identify());
		System.out.println("Identify DA Service: " + dS.identify() );
			
	}
	
	@Test
	public void storeObjectsTest() throws Exception {
		System.out.println("\nSTORE OBJECTS");
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("application/xml");
		predefinedObjectTypes.add("text/plain");
		long maxSizeStDS = 10;
		//String storeIdentifer = "sts-identifier-0";
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		//assertNotNull(storeIdentifer);
		
		System.out.println("STORING OBJECTS");
		List<String> objectsForStoring = new ArrayList<String>();
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier></storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">AAAAAAAAAAAjjhjhjhjjjjjhhuyuy</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid2</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">BBBBBBBBBBB jbhhjbhbygy hbhbhbhb </storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid3</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">testeqeqeqwe qdsadd</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid4</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">DDDDDDD juhb hvgvgc gfgc  gg g gcg</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid5</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">EEEEEEEEE juhb hvgvgc gfgc  gg g gcg</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier></storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">QQQQQQQQQQE23222333</storeObject>" +
				"</storeRecord>");
		dS.storeObjects(storeIdentifer, 
				objectsForStoring, "REFRESH", false);
		
		//List<String> stObjectIds = null;
		//depotService.deleteStoreObject(storeIdentifer, stObjectIds );
	
		//depotService.deleteStore(storeIdentifer);
		System.out.println("Juppi!!! I am out of this job! :) \n");
		System.out.println("Sleeping to give some time for finishing junit job!");
		try {
			Thread.sleep(4000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("WakeUp!");
	}
	
	@Test
	public void storeObjectsTestURIs() throws Exception {
		System.out.println("\nSTORE OBJECTS");
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("text/html");
		predefinedObjectTypes.add("text/plain");
		predefinedObjectTypes.add("image/png");
		long maxSizeStDS = 10;
		//String storeIdentifer = "sts-identifier-0";
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		//assertNotNull(storeIdentifer);
		
		System.out.println("STORING OBJECTS");
		List<String> objectsForStoring = new ArrayList<String>();
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-76767</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://www.atforum.pl/img/linux_2.png</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-767671</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://wordpress.org/extend/plugins/about/readme.txt</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-767672</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://www.papirus.pl/download/gazetka.pdf</storeObject>" +
				"</storeRecord>");
		
		dS.storeObjects(storeIdentifer, 
				objectsForStoring,"REFRESH", true);
		
		//List<String> stObjectIds = null;
		//depotService.deleteStoreObject(storeIdentifer, stObjectIds );
	
		//depotService.deleteStore(storeIdentifer);
		System.out.println("Juppi!!! I am out of this job! :) \n");
		System.out.println("Sleeping to give some time for finishing junit job!");
		try {
			Thread.sleep(30000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("WakeUp!");
	}
	
	@Test
	public void storeObjectsFromRSTest() throws Exception {
		System.out.println("\nSTORE OBJECTS");
		assertNotNull(dsRS.identify());
		
		W3CEndpointReference rsEPR = dsRS.createPushRS(70, 70);
		
		List<String> objectsForStoring = new ArrayList<String>();
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier></storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">AAAAAAAAAAAjjhjhjhjjjjjhhuyuy</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid2</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">BBBBBBBBBBB jbhhjbhbygy hbhbhbhb </storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid3</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">testeqeqeqwe qdsadd</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid4</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">DDDDDDD juhb hvgvgc gfgc  gg g gcg</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>myid5</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">EEEEEEEEE juhb hvgvgc gfgc  gg g gcg</storeObject>" +
				"</storeRecord>");
		
		final ServiceResolver serviceResolver = new JaxwsServiceResolverImpl();
		final ResultSetService resultSetService = serviceResolver.getService(
				ResultSetService.class, rsEPR);
		final String rsId = serviceResolver.getResourceIdentifier(rsEPR);
		resultSetService.populateRS(rsId, objectsForStoring);
		resultSetService.closeRS(rsId);
		
		System.out.println("Number of objects stored in RS: "+ 
				resultSetService.getNumberOfElements(rsId));
		
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("application/xml");
		predefinedObjectTypes.add("text/plain");
		long maxSizeStDS = 10;
		
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		assertNotNull(storeIdentifer);
		
		dS.storeObjectsFromRS(storeIdentifer, 
				rsEPR, "REFRESH", false);
		
		//List<String> stObjectIds = null;
		//depotService.deleteStoreObject(storeIdentifer, stObjectIds );
	
		//depotService.deleteStore(storeIdentifer);
		System.out.println("Juppi!!! I am out of this job! :) \n");
		
		System.out.println("Sleeping to give some time for finishing junit job!");
		try {
			Thread.sleep(4000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("WakeUp!");
		
	}
	
	@Test
	public void storeObjectsFromRSURIsTest() throws Exception {
		System.out.println("\nSTORE URIs");
		
		W3CEndpointReference rsEPR = dsRS.createPushRS(70, 70);
		
		List<String> objectsForStoring = new ArrayList<String>();
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-76767</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://www.atforum.pl/img/linux_2.png</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-767671</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://www.onet.pl/index.html</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-767672</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://www.papirus.pl/download/gazetka.pdf</storeObject>" +
				"</storeRecord>");
		final ServiceResolver serviceResolver = new JaxwsServiceResolverImpl();
		final ResultSetService resultSetService = serviceResolver.getService(
				ResultSetService.class, rsEPR);
		final String rsId = serviceResolver.getResourceIdentifier(rsEPR);
		resultSetService.populateRS(rsId, objectsForStoring);
		resultSetService.closeRS(rsId);
		
		System.out.println("Number of objects stored in RS: "+ 
				resultSetService.getNumberOfElements(rsId));
		
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("application/xml");
		predefinedObjectTypes.add("text/html");
		predefinedObjectTypes.add("image/png");
		long maxSizeStDS = 10;
		
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		assertNotNull(storeIdentifer);
		
		dS.storeObjectsFromRS(storeIdentifer, 
				rsEPR, "REFRESH", true);
		
		//List<String> stObjectIds = null;
		//depotService.deleteStoreObject(storeIdentifer, stObjectIds );
	
		//depotService.deleteStore(storeIdentifer);
		System.out.println("Juppi!!! I am out of this job! :) \n");
		
		System.out.println("Sleeping to give some time for finishing junit job!");
		try {
			Thread.sleep(20000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("WakeUp!");
		
	}
	
	
	@Test
	public void storeObjectsFromRSLateRScreationTest() throws Exception {
		System.out.println("\nSTORE URIs");
		
		W3CEndpointReference rsEPR = dsRS.createPushRS(70, 70);
		
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("application/xml");
		predefinedObjectTypes.add("text/html");
		predefinedObjectTypes.add("image/png");
		long maxSizeStDS = 10;
		
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		assertNotNull(storeIdentifer);
		
		dS.storeObjectsFromRS(storeIdentifer,rsEPR, "REFRESH", false);
		
		
		List<String> objectsForStoring = new ArrayList<String>();
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-76767</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://bieson.ub.uni-bielefeld.de/volltexte/2003/121/pdf/1_diss.pdf</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>h212121-767671</storeRecordIdentifier>" +
				"<storeObject datatype=\"URI\">http://etheses.nottingham.ac.uk/652/1/thesis_small.pdf</storeObject>" +
				"</storeRecord>");
//		objectsForStoring.add(
//				"<storeRecord><storeRecordIdentifier>h212121-767672</storeRecordIdentifier>" +
//				"<storeObject datatype=\"URI\">http://etheses.nottingham.ac.uk/107/1/ASYATES_-_THESIS.pdf</storeObject>" +
//				"</storeRecord>");
		final ServiceResolver serviceResolver = new JaxwsServiceResolverImpl();
		final ResultSetService resultSetService = serviceResolver.getService(
				ResultSetService.class, rsEPR);
		final String rsId = serviceResolver.getResourceIdentifier(rsEPR);
		
		Iterator<String> iter = objectsForStoring.iterator();
		
		
		while (iter.hasNext()) {
			String va = iter.next();
			Thread.sleep(10000);
			List<String> li = new ArrayList<String>();
			li.add(va);
			
			resultSetService.populateRS(rsId, li);
			 li = new ArrayList<String>();	
		}
		
		System.out.println("RS STAT: "+ 
				resultSetService.getRSStatus(rsId));
		resultSetService.closeRS(rsId);	
		System.out.println("RS STAT: "+ 
				resultSetService.getRSStatus(rsId));
		System.out.println("Number of objects stored in RS: "+ 
				resultSetService.getNumberOfElements(rsId));
	
		
	}
	
	@Test
	public void deleteStoreObjectTest() throws Exception {
		System.out.println("\nSTORE OBJECTS");
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("application/xml");
		predefinedObjectTypes.add("text/plain");
		long maxSizeStDS = 10;
		//String storeIdentifer = "sts-identifier-0";
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		//assertNotNull(storeIdentifer);
		
		System.out.println("STORING OBJECTS");
		String objectId1 = "myId1";
		String objectId2 = "myId2";
		List<String> objectsForStoring = new ArrayList<String>();
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>"+objectId1+"</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">AAAAAAAAAAAjjhjhjhjjjjjhhuyuy</storeObject>" +
				"</storeRecord>");
		objectsForStoring.add(
				"<storeRecord><storeRecordIdentifier>"+objectId2+"</storeRecordIdentifier>" +
				"<storeObject datatype=\"Data\">BBBBBBBBBBB jbhhjbhbygy hbhbhbhb</storeObject>" +
				"</storeRecord>");

		dS.storeObjects(storeIdentifer, 
				objectsForStoring, "REFRESH", false);
		
	
		//depotService.deleteStore(storeIdentifer);
		System.out.println("Juppi!!! I am out of this job! :) \n");
		System.out.println("Sleeping to give some time for finishing junit job!");
		try {
			Thread.sleep(4000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("WakeUp!");
		
		List<String> stObjectIds = new ArrayList<String>();
		stObjectIds.add(objectId1);
		stObjectIds.add(objectId2);
		dS.deleteStoreObject(storeIdentifer, stObjectIds);
		
		
	}
	
	@SuppressWarnings("unused")
	private void printRS (W3CEndpointReference downloadEPR) throws ResultSetException {
		
		final ServiceResolver serviceResolver2 = new JaxwsServiceResolverImpl();
		final String downloadServiceRsId = serviceResolver2.getResourceIdentifier(downloadEPR);
		
		int resultsNumber = dsRS.getNumberOfElements(downloadServiceRsId);
		System.out.println(downloadServiceRsId);
		System.out.println("Number of results in Download RS: "+ resultsNumber);
		System.out.println("RS Status:" + dsRS.getRSStatus(downloadServiceRsId));
		
		for (int i = 1; i<= resultsNumber; i++) {
			System.out.println("Getting Page: " + i);
			
			List<String> results = dsRS.getResult(downloadServiceRsId,
					i, i , "waiting");
		
			if (results != null ){
				Iterator<String> iter = results.iterator();
	
				while (iter.hasNext())
					System.out.println("Object: " + iter.next());	
			}
			else {
				System.out.println("Page "+i+" not returned!");
			}
		}	
	}
	
	@Test
	public void updateDASReplicasTest() {
		try {
			dS.updateDASReplica("http://www.openaire.eu","add");
		} catch (Exception e) {
			fail("Non-expected exception, new DAS can not be registered: "+e);
		}

		try {
			dS.updateDASReplica("http://www.openaire.eu","inactivate");
		} catch (Exception e) {
			fail("Non-expected exception, new DAS can not be registered: "+e);
		}
		
		try {
			dS.updateDASReplica("http://www.openaire.eu","activate");
		} catch (Exception e) {
			fail("Non-expected exception, new DAS can not be registered: "+e);
		}
		
		try {
			dS.updateDASReplica("http://www.openaire.eu","sync");
		} catch (Exception e) {
			fail("Non-expected exception, new DAS can not be syncronized: "+e);
		}
		
		try {
			dS.updateDASReplica("http://www.openaire.eu","delete");
		} catch (Exception e) {
			fail("Non-expected exception, new DAS can not be registered: "+e);
		}
	}	
	
	@Test
	public void storeObjectsFromRSURIsHardTest() throws Exception {
		System.out.println("\nSTORE URIs");
		
		List<String> objectsForStoring = new ArrayList<String>();
		
		for (int i=0; i<id.length; i++) {//id.length
			objectsForStoring.add(
					"<storeRecord><storeRecordIdentifier>"+id[i]+"</storeRecordIdentifier>" +
					"<storeObject datatype=\"URI\">"+uri[i]+"</storeObject>" +
					"</storeRecord>");
		}
		
		W3CEndpointReference rsEPR = dsRS.createPushRS(70, 70);
		final ServiceResolver serviceResolver = new JaxwsServiceResolverImpl();
		final ResultSetService resultSetService = serviceResolver.getService(
				ResultSetService.class, rsEPR);
		final String rsId = serviceResolver.getResourceIdentifier(rsEPR);
		resultSetService.populateRS(rsId, objectsForStoring);
		resultSetService.closeRS(rsId);
		
		System.out.println("Number of objects stored in RS: "+ 
				resultSetService.getNumberOfElements(rsId));
		
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("application/xml");
		predefinedObjectTypes.add("text/html");
		predefinedObjectTypes.add("image/png");
		long maxSizeStDS = 10;
		
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		assertNotNull(storeIdentifer);
		
		dS.storeObjectsFromRS(storeIdentifer, 
				rsEPR, "REFRESH", true);
		
		//List<String> stObjectIds = null;
		//depotService.deleteStoreObject(storeIdentifer, stObjectIds );
	
		//depotService.deleteStore(storeIdentifer);
		System.out.println("Juppi!!! I am out of this job! :) \n");
		
		System.out.println("Sleeping to give some time for finishing junit job!");
		try {
			Thread.sleep(20000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("WakeUp!");
		
	}

	@Test
	public void storeObjectsURIsHardTest() throws Exception {
		System.out.println("\nSTORE URIs");
		
		System.out.println("\nSTORE OBJECTS");
		List<String> predefinedObjectTypes = new ArrayList<String>();
		predefinedObjectTypes.add("application/msword");
		predefinedObjectTypes.add("application/pdf");
		predefinedObjectTypes.add("text/html");
		predefinedObjectTypes.add("text/plain");
		predefinedObjectTypes.add("image/png");
		long maxSizeStDS = 10;
		//String storeIdentifer = "sts-identifier-0";
		String storeIdentifer = dS.createStore(predefinedObjectTypes,maxSizeStDS);
		//assertNotNull(storeIdentifer);
		
		List<String> objectsForStoring = new ArrayList<String>();
		
		for (int i=0; i<id.length; i++) {//id.length
			objectsForStoring.add(
					"<storeRecord><storeRecordIdentifier>"+id[i]+"</storeRecordIdentifier>" +
					"<storeObject datatype=\"URI\">"+uri[i]+"</storeObject>" +
					"</storeRecord>");
		}
		
		dS.storeObjects(storeIdentifer, 
				objectsForStoring,"REFRESH", true);
		
		//List<String> stObjectIds = null;
		//depotService.deleteStoreObject(storeIdentifer, stObjectIds );
	
		//depotService.deleteStore(storeIdentifer);
		System.out.println("Juppi!!! I am out of this job! :) \n");
		System.out.println("Sleeping to give some time for finishing junit job!");
		try {
			Thread.sleep(500000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("WakeUp!");
	}
	
	private String[] id = {
			"oai:bieson.ub.uni-bielefeld.de:1081",
			"oai:bieson.ub.uni-bielefeld.de:838",
			"oai:bieson.ub.uni-bielefeld.de:1024",
			"oai:bieson.ub.uni-bielefeld.de:1064",
			"oai:bieson.ub.uni-bielefeld.de:1178",
			"oai:bieson.ub.uni-bielefeld.de:1170",
			"oai:bieson.ub.uni-bielefeld.de:1325",
			"oai:bieson.ub.uni-bielefeld.de:1384",
			"oai:bieson.ub.uni-bielefeld.de:1104",
			"oai:bieson.ub.uni-bielefeld.de:875",
			"oai:etheses.nottingham.ac.uk:652",
			"oai:dspace.library.uu.nl:1874_1974",
			"oai:bieson.ub.uni-bielefeld.de:1276",
			"oai:bieson.ub.uni-bielefeld.de:1160",
			"oai:bieson.ub.uni-bielefeld.de:1397",
			"oai:bieson.ub.uni-bielefeld.de:1514",
			"oai:bieson.ub.uni-bielefeld.de:1538",
			"oai:bieson.ub.uni-bielefeld.de:1691",
			"oai:bieson.ub.uni-bielefeld.de:1553",
			"oai:bieson.ub.uni-bielefeld.de:1584",
			"oai:bieson.ub.uni-bielefeld.de:1473",
			"oai:bieson.ub.uni-bielefeld.de:1595",
			"oai:bieson.ub.uni-bielefeld.de:1542",
			"oai:bieson.ub.uni-bielefeld.de:1615",
			"oai:bieson.ub.uni-bielefeld.de:1686",
			"oai:bieson.ub.uni-bielefeld.de:1549",
			"oai:bieson.ub.uni-bielefeld.de:1600",
			"oai:bieson.ub.uni-bielefeld.de:1609",
			"oai:bieson.ub.uni-bielefeld.de:1616",
			"oai:bieson.ub.uni-bielefeld.de:1682",
			"oai:bieson.ub.uni-bielefeld.de:1548",
			"oai:bieson.ub.uni-bielefeld.de:1728",
			"oai:bieson.ub.uni-bielefeld.de:1627",
			"oai:bieson.ub.uni-bielefeld.de:1676",
			"oai:bieson.ub.uni-bielefeld.de:1693",
			"oai:bieson.ub.uni-bielefeld.de:1662",
			"oai:bieson.ub.uni-bielefeld.de:1698",
			"oai:bieson.ub.uni-bielefeld.de:1726",
			"oai:bieson.ub.uni-bielefeld.de:1667",
			"oai:bieson.ub.uni-bielefeld.de:1723",
			"oai:bieson.ub.uni-bielefeld.de:1721",
			"oai:bieson.ub.uni-bielefeld.de:1613",
			"oai:bieson.ub.uni-bielefeld.de:1685",
			"oai:bieson.ub.uni-bielefeld.de:1696",
			"oai:bieson.ub.uni-bielefeld.de:1494",
			"oai:bieson.ub.uni-bielefeld.de:1537",
			"oai:bieson.ub.uni-bielefeld.de:121",
			"oai:etheses.nottingham.ac.uk:107", 
			"oai:DiVA.org:uu-1417", 
			"oai:DiVA.org:uu-72702",
			"oai:bieson.ub.uni-bielefeld.de:1555",
			"oai:bieson.ub.uni-bielefeld.de:1510",
			"oai:bieson.ub.uni-bielefeld.de:1647",
			"oai:bieson.ub.uni-bielefeld.de:1636",
			"oai:bieson.ub.uni-bielefeld.de:1683",
			"oai:bieson.ub.uni-bielefeld.de:1687",
			"oai:bieson.ub.uni-bielefeld.de:1552",
			"oai:bieson.ub.uni-bielefeld.de:1513",
			"oai:bieson.ub.uni-bielefeld.de:1576",
			"oai:bieson.ub.uni-bielefeld.de:1633",
			"oai:bieson.ub.uni-bielefeld.de:1577",
			"oai:bieson.ub.uni-bielefeld.de:1590",
			"oai:bieson.ub.uni-bielefeld.de:1669",
			"oai:bieson.ub.uni-bielefeld.de:1713",
			"oai:bieson.ub.uni-bielefeld.de:1535",
			"oai:bieson.ub.uni-bielefeld.de:1350",
			"oai:bieson.ub.uni-bielefeld.de:1465",
			"oai:bieson.ub.uni-bielefeld.de:1244",
			"oai:bieson.ub.uni-bielefeld.de:1385",
			"oai:bieson.ub.uni-bielefeld.de:1382",
			"oai:bieson.ub.uni-bielefeld.de:1395",
			"oai:bieson.ub.uni-bielefeld.de:1268a",
			"oai:bieson.ub.uni-bielefeld.de:1268b",
			"oai:bieson.ub.uni-bielefeld.de:1268c",
			"oai:bieson.ub.uni-bielefeld.de:1268d",
			"oai:bieson.ub.uni-bielefeld.de:1268e",
			"oai:bieson.ub.uni-bielefeld.de:1268f",
			"oai:bieson.ub.uni-bielefeld.de:1268g",
			"oai:bieson.ub.uni-bielefeld.de:1268h",
			"oai:bieson.ub.uni-bielefeld.de:1268i",
			"oai:bieson.ub.uni-bielefeld.de:1350",
			"oai:bieson.ub.uni-bielefeld.de:1317",
			"oai:bieson.ub.uni-bielefeld.de:1153",
			"oai:bieson.ub.uni-bielefeld.de:1183",
			"oai:bieson.ub.uni-bielefeld.de:1248",
			"oai:bieson.ub.uni-bielefeld.de:1275",
			"oai:bieson.ub.uni-bielefeld.de:1148",
			"oai:bieson.ub.uni-bielefeld.de:1199",
			"oai:bieson.ub.uni-bielefeld.de:1166",
			"oai:bieson.ub.uni-bielefeld.de:1115",
			"oai:bieson.ub.uni-bielefeld.de:1182",
			"oai:bieson.ub.uni-bielefeld.de:1236"
			};
	private String[] uri = {
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1081/pdf/asczyrba_diss.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2006/838/pdf/Taher_Leila_Thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1024/pdf/dissertation_bruning.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1064/pdf/thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1178/pdf/Dissertation_SMartinL.pdf.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1170/pdf/Dissertation_Revised.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1325/pdf/diss.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1384/pdf/Dissertation.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1104/pdf/2007.01.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2006/875/pdf/barnrich_dm_research.pdf",
			"http://etheses.nottingham.ac.uk/652/1/thesis_small.pdf", 
			"http://igitur-archive.library.uu.nl/math/2001-0219-164653/2000-31.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1276/pdf/thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1160/pdf/Haasch_Dissertation.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1397/pdf/Dissertation_LiZhe.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1514/pdf/doctoratPublish.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1583/pdf/thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1691/pdf/Synopse_BieSOnx.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1553/pdf/PhDOlga.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1584/pdf/diss_Herms.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1473/pdf/thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1595/pdf/Dissertation_Vanselow_2009.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1542/pdf/000_titelei.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1615/pdf/diss.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1686/pdf/Thesis_Lohse.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1549/pdf/disMikhailova082009.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1600/pdf/Dissertation_Cynthia_Mira_Sharma.pdf.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1609/pdf/DissertationSHenkenjohannk.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1616/pdf/thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1682/pdf/Thesis_29.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1548/pdf/Thesis_2009_IMadeWiryana.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1728/pdf/bk_dissertation_2010.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1627/pdf/phd_thesis_wittler.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1676/pdf/429.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1693/pdf/PhD_Thesis_Ihsan.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1662/pdf/Dissertation_Kolja_Henckel.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1698/pdf/thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1726/pdf/Thesis.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1667/pdf/Doktorarbeit_FD.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1723/pdf/RubianoClaudia_disertation_e.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1721/pdf/Thesis_Liang_2010.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1613/pdf/Girndt_Responses_to_Racial.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1685/pdf/ManuscriptND.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1696/pdf/Dissertation_Fluegel_2010.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1494/pdf/Wolter_Diplomarbeit.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1537/pdf/Dissertation_Montforts.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2003/121/pdf/1_diss.pdf",
			"http://etheses.nottingham.ac.uk/107/1/ASYATES_-_THESIS.pdf",
			"http://uu.diva-portal.org/smash/get/diva2:160941/FULLTEXT01",
			"http://uu.diva-portal.org/smash/get/diva2:100613/FULLTEXT02",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1555/pdf/thesis_Sandra_Freitag.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1510/pdf/Badura_Steinke.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1647/pdf/diss_froeben.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1636/pdf/Manuskript_Promotion_Ulrichs_100224.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1683/pdf/Dissertation_ASchaefers.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1687/pdf/Doktorarbeit-_Salvador_Millaleo.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1552/pdf/DOKTORARBEIT_Olaf_Kaup.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1513/pdf/Dissertation_Stefanie_Meyer.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1576/pdf/JSbsM.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1633/pdf/Sroczynski_Dissertation_DrPH.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1577/pdf/Thesis.Main.Plain.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1590/pdf/Dissertation_online_final.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1669/pdf/diss_gold.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2010/1713/pdf/Diss_Kirsten_Heitland.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1535/pdf/phdthesis_swrede.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1360/pdf/asbrock_dissertation.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2009/1465/pdf/Dissertation_Janine_Feldmann.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1244/pdf/Dissertation_JuergenReymann.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1385/pdf/Dissertation_Doreen_Asbrock.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1382/pdf/Diss_Rullkoetter08.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1395/pdf/Promotion_Jugend_und_Religion_Ulf_Elmhorst_2008.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/00_titelei.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/03_kap2.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/06_kap05.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/01_content.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/04_kap3.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/07_kap06.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/02_kap1.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/05_kap04.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1268/pdf/08_bibli.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1350/pdf/dissZakotnik.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1317/pdf/Dissertation_Abt_2008.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1153/pdf/CIC_QUI_2007.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1183/pdf/Hirofumi_Ishihara2007.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1248/pdf/Dissertation_MZT_Fliegner.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1275/pdf/Dissertation.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1148/pdf/Dissertation_R._Schmidt.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1199/pdf/Dissertation_Moellmann_2007.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1166/pdf/phd.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1115/pdf/SchoWie_26062007.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2007/1182/pdf/Dissertation_Veronica_Witte.pdf",
			"http://bieson.ub.uni-bielefeld.de/volltexte/2008/1236/pdf/DissertationDondrup.pdf"
			};
 
	
}
