/**
 * 
 */
package is2.util;

import is2.data.SentenceData09;
import is2.io.CONLLReader04;
import is2.io.CONLLReader06;
import is2.io.CONLLReader09;
import is2.io.CONLLWriter06;
import is2.io.CONLLWriter09;

/**
 * @author Dr. Bernd Bohnet, 01.03.2010
 * 
 * 
 */
public class Convert0409 {

	
	
	public static void main(String args[]) throws Exception {
				
		convert(args[0],args[1]);
		
		
	}
	
	public static void convert(String source, String target) throws Exception {
		
		CONLLReader04 reader = new CONLLReader04(source);
		CONLLWriter09 writer = new CONLLWriter09(target);

		int str =0;
		while (true) {
			SentenceData09 i = reader.getNext();
			str++;
			if (i == null) break;
			
			
			String[] formsNoRoot = new String[i.length()-1];
			String[] posNoRoot = new String[formsNoRoot.length];
			String[] lemmas = new String[formsNoRoot.length];

			String[] org_lemmas = new String[formsNoRoot.length];

			String[] of = new String[formsNoRoot.length];
			String[] pf = new String[formsNoRoot.length];

			String[] pposs = new String[formsNoRoot.length];
			String[] labels = new String[formsNoRoot.length];
			String[] fillp = new String[formsNoRoot.length];

			int[] heads = new int[formsNoRoot.length];

		
			
			for(int j = 0; j < formsNoRoot.length; j++) {
				formsNoRoot[j] = i.forms[j+1];
				if (formsNoRoot[j].length()==0 ||formsNoRoot[j].equals("")) {
					System.out.println("error forms "+str);
			//		System.exit(0);
					formsNoRoot[j]=" ";
				}
				posNoRoot[j] = i.gpos[j+1];
				if (posNoRoot[j].length()==0 ||posNoRoot[j].equals(" ")) {
					System.out.println("error pos "+str);
				//	System.exit(0);
				}
				pposs[j] = i.ppos[j+1];
				if (pposs[j].length()==0 ||pposs[j].equals(" ")) {
					System.out.println("error pos "+str);
					//System.exit(0);
				}

				labels[j] = i.labels[j+1];
				if (labels[j].length()==0 ||labels[j].equals(" ")) {
					System.out.println("error lab "+str);
				//	System.exit(0);
				}
				heads[j] = i.heads[j+1];
				if(heads[j]> posNoRoot.length) {
					System.out.println("head out of range "+heads[j]+" "+heads.length+" "+str);
					heads[j]=posNoRoot.length;
				}
				
				lemmas[j] = i.plemmas[j+1];
				if (lemmas[j].length()==0 ||lemmas[j].equals(" ")) {
					System.out.println("error lab "+str);
				//	System.exit(0);
				}
				org_lemmas[j] = i.lemmas[j+1];
				if (org_lemmas[j].length()==0 ||org_lemmas[j].equals(" ")) {
					System.out.println("error lab "+str);
				//	System.exit(0);
				}
				of[j] = i.ofeats[j+1];
				pf[j] = i.pfeats[j+1];
				if (str==6099) {
			//		System.out.println(formsNoRoot[j]+"\t"+posNoRoot[j]+"\t"+pposs[j]+"\t"+labels[j]+"\t"+heads[j]);
				}

				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
			}

			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas,pposs, pposs, labels, heads,fillp,of, pf);

			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
			//SentenceData09
		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
			
			writer.write(i09);

			
		}
		writer.finishWriting();
		
		
	}

	
	public static void convert0906(String source, String target) throws Exception {
		
		CONLLReader09 reader = new CONLLReader09(source);
		CONLLWriter06 writer = new CONLLWriter06(target);

		
		while (true) {
			SentenceData09 i = reader.getNext();
			
			if (i == null) break;
			
			
			String[] formsNoRoot = new String[i.length()-1];
			String[] posNoRoot = new String[formsNoRoot.length];
			String[] lemmas = new String[formsNoRoot.length];

			String[] org_lemmas = new String[formsNoRoot.length];

			String[] of = new String[formsNoRoot.length];
			String[] pf = new String[formsNoRoot.length];

			String[] pposs = new String[formsNoRoot.length];
			String[] labels = new String[formsNoRoot.length];
			String[] fillp = new String[formsNoRoot.length];

			int[] heads = new int[formsNoRoot.length];

			for(int j = 0; j < formsNoRoot.length; j++) {
				formsNoRoot[j] = i.forms[j+1];
				posNoRoot[j] = i.gpos[j+1];
				pposs[j] = i.ppos[j+1];

				labels[j] = i.labels[j+1];
				heads[j] = i.heads[j+1];
				lemmas[j] = i.plemmas[j+1];

				org_lemmas[j] = i.lemmas[j+1];
				of[j] = i.ofeats[j+1];
					pf[j] = i.pfeats[j+1];

				// (instance.fillp!=null) fillp[j] = instance.fillp[j+1];
			}

			SentenceData09 i09 = new SentenceData09(formsNoRoot, lemmas, org_lemmas,posNoRoot, pposs, labels, heads,fillp,of, pf);

			//public SentenceData09(String[] forms, String[] lemmas, String[] olemmas,String[] gpos, String[] ppos, String[] labs, int[] heads, String[] fillpred) {
			//SentenceData09
		//	SentenceData09 i2 = new SentenceData09(i.forms, i.lemmas,i.org_lemmas,);
			
			writer.write(i09);

			
		}
		writer.finishWriting();
		
		
	}

	
	
}
