package voi.votable;

import java.io.*;
import voi.ui.*;
import voi.vowrite.*;


/**
This class creates the metadate required to write the MySQL-Ascii output in the VOTable format
**/
public class VoMetaData 
{
	private Index index;
	private VOTableTable voTab;
	
	/**
	This constructor id for the SQL mode where the columnNames is required
	*/ 
	
	public VOTableTable createMetaData (boolean queryFlag [])
	{
		voTab = new VOTableTable ();
		index = new Index ();
		
		if (queryFlag [index.NAME])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "Name", "ID_MAIN","char","17");
			voTab.addField (voField);
			System.out.println (voField.getName ());
		}
		
		if ( queryFlag [index.RA_DEC])
		{
			VOTableField voField1 = new VOTableField ();
			setProperties (voField1, "Ra", "POS_EQ_RA_MAIN","char","11");
			voTab.addField (voField1);
			
			VOTableField voField2 = new VOTableField ();
			setProperties (voField2, "Dec", "POS_EQ_DEC_MAIN","char","11");
			voTab.addField (voField2);			
		}
		
		if (queryFlag [index.RA_DEC_RADIANS])
		{
			VOTableField voField1 = new VOTableField ();
			setProperties (voField1, "Ra_radians", "POS_EQ_RA_MAIN","double","11");
			voTab.addField (voField1);
			
			VOTableField voField2 = new VOTableField ();
			setProperties (voField2, "Dec_radians", "POS_EQ_DEC_MAIN","double","16");
			voTab.addField (voField2);						
		}

		if ( queryFlag [index.BJ])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "Bj", "PHOT_PHG_B","double","16");
			voTab.addField (voField);
		}
		
		if ( queryFlag [index.UBJ])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "U-Bj", "PHOT_PHG_R-I","double","17");
			voTab.addField (voField);
		}
		
		if ( queryFlag [index.BJR])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "Bj-R", "PHOT_PHG_R-I","double","17");
			voTab.addField (voField);
		}
		
		if ( queryFlag [index.Z1])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "Redshift", "REDSHIFT_HC","double","17");
			voTab.addField (voField);
		}
		
		if ( queryFlag [index.Q1])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "Q1", "CODE_QUALITY","double","17");
			voTab.addField (voField);
		}		

		if ( queryFlag [index.SNR])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "Sn1", "INST_S/N","double","17");
			voTab.addField (voField);
		}

		
		/** Change the UCD of this attribute **/
		if ( queryFlag [index.ABS_MAG])
		{
			VOTableField voField = new VOTableField ();
			setProperties (voField, "Absolute Magnitude", "ABSOLUTE MAGNITUDE","double","17");
			voTab.addField (voField);
		}
		
		return voTab;
			
	}
		
	public void setProperties (VOTableField field, String name, String ucd, String type, String length)
	{
		field.setName (name);
		field.setUcd (ucd);
		field.setDataType (type);
		field.setArraySize (length);
	}
	
}
