package edu.vt.marian.common;

import java.io.*;
import java.net.*;
import java.util.*;


/**
 *	The identifier of an object in the MARIAN universe is composed
 *		of class id and instance id.  Class id can be regarded as database id and
 *		instance id can be regarded as a unique id in that database.
 *	<P>NOTE: classID is properly an unsigned 16-bit quantity; instanceID an unsigned
 *	    32-bit.  Unfortunately there are no unsigneds in Java, so we use an int for
 *	    classID and test the bounds.  Properly, we should use a long for instanceID,
 *	    but that's a lot of unused bits so we'll use an int and keep our fingers
 *	    crossed.
 *	@author	Robert France
 *	<P>designer(s): Robert France (france@vt.edu)
 *	<P>implementator(s): Jianxin Zhao (jxzhao@csgrad.cs.vt.edu), Robert France
 *	<P>finished time: 
 *	<P>known bugs: 
 *	<P>JDK version: 1.1.5
 *	<P>side effects:
 */
public class ClassIDs
{
 public final static int CLASS_ABSURD	= 0;	// The class with no members:  "bottom".
 public final static int CLASS_TERM	= 99;	// The class with all objects as its
				//  members:  the universal class "top".
 public final static int CLASS_CLASS	= 1000;	// Object ID of the class *class* == 
				//  class ID of all *class* objects.


/*** Primitive data types.	***/

 public final static int CLASS_EDT	= 20;	// Class of all primitive data objects.

 public final static int CLASS_ATOM		= 1;
 public final static int CLASS_STRING		= 2;
 public final static int CLASS_INTEGER	= 4;
 public final static int CLASS_REAL		= 5;
 public final static int CLASS_RATIONAL	= 50;
 public final static int CLASS_FULLID		= 12;


/*** Subclasses of primitives.	***/

 public final static int CLASS_CODE_NUMBER	= 52;	// Subclass of STRING.
 public final static int CLASS_ROOT		= 101;	// English word root:  subclass of ATOM.
 public final static int CLASS_PERCENTAGE	= 51;	// Subclass of REAL.

 public final static int CLASS_BLANK_STR	= 2000;		// Subclasses of STRING used
 public final static int CLASS_TAB_STR	= 2001;		//  by tokenizer.
 public final static int CLASS_NEWLINE_STR	= 2002;
 public final static int CLASS_CARRIAGE_RETURN_STR	= 2003;
 public final static int CLASS_PUNC_STR	= 2004;
 public final static int CLASS_PUNC		= 2005;
 public final static int CLASS_DIGIT_STR	= 2006;
 public final static int CLASS_CAPITALIZED_STR	= 2007;
 public final static int CLASS_LOWER_STR	= 2008;
 public final static int CLASS_UPPER_STR	= 2009;
 public final static int CLASS_LETTER_STR	= 2010;
 public final static int CLASS_LETTER_DIGIT_STR	= 2011;
 public final static int CLASS_NONPRINT_STR	= 2012;
 public final static int CLASS_NONASCII_STR	= 2013;

 public final static int CLASS_CNOTES_TEXT	= 2101;
 public final static int CLASS_MED_REC_TEXT	= 2102;
 public final static int CLASS_AILIST_TEXT	= 105;
 public final static int CLASS_CED_DEF_TEXT	= 106;
 public final static int CLASS_CED_SAMP_TEXT	= 107;
 public final static int CLASS_USE_NOTE_TEXT	= 1060;
 public final static int CLASS_NSWC_TEXT	= 108;

 public final static int CLASS_ENTITY_NAME	= 5071;	// Text versions of authority
 public final static int CLASS_PERS_NAME	= 5072;	// objects for MARIAN & LEND.
 public final static int CLASS_CORP_NAME	= 5073;
 public final static int CLASS_CONF_NAME	= 5074;
 public final static int CLASS_DC_CREATOR_NAME        = 5087; //**Is this really needed?
 public final static int CLASS_SUBJECT	= 5075;
 public final static int CLASS_SUBJ_ENTRY	= 5076;
 public final static int CLASS_DC_SUBJECT     = 5077; // Dublin core
 public final static int CLASS_LC_SUBJECT     = 5078; // Library of Congress Subject Heading

 public final static int CLASS_UNCAT_STR	= 5079;	// Uncategorized string.

 public final static int CLASS_KEYWORDS       = 5080;
 public final static int CLASS_HEADINGS       = 5081;


//** Constructed data types.

 public final static int CLASS_CDT		= 21;	// Class of all constructed objects.

 public final static int CLASS_LIST		= 6;
 public final static int CLASS_SET		= 7;
 public final static int CLASS_TUPLE		= 8;
 public final static int CLASS_FRAME		= 9;
 public final static int CLASS_RELATION	= 10;


//** Subclasses of constructed types.

//** Subclasses of FRAME.
 public final static int CLASS_CED_SENSE	= 103;		// CED objects.
 public final static int CLASS_CED_VARIANT	= 1021;

 public final static int CLASS_NAME		= 901;		// MEDLARS objects.
 public final static int CLASS_INSTITUTION	= 902;
 public final static int CLASS_JOURNAL	= 903;
 public final static int CLASS_JOURNAL_ISSUE	= 904;

 public final static int CLASS_MARC		= 5001;		// MARC library catalog records. 
 public final static int CLASS_VT_MARC	= 5101;
 public final static int CLASS_VT_MARC_TITLE	= 5104;
 public final static int CLASS_VT_MARC_NOTE	= 5105;
 
 public final static int CLASS_VT_ETD_OAMS = 5201;
 public final static int CLASS_VT_ETD_OAMS_TITLE   = 5204;
 public final static int CLASS_VT_ETD_OAMS_ABSTRACT        = 5203;
 public final static int CLASS_PHYSDIS_ETD    = 5211;
 public final static int CLASS_PHYSDIS_TITLE  = 5214;
 public final static int CLASS_PHYSDIS_BODY   = 5212;
 public final static int CLASS_PHYSDIS_DESCRIPTION    = 5215;
 public final static int CLASS_DC_TITLE       = 5213;
 public final static int CLASS_DC_DESCRIPTION = 5216;
 public final static int CLASS_MIT_ETD    = 5217;
 public final static int CLASS_MIT_TITLE  = 5218;

	   
//** Subclasses of RELATION.
 public final static int CLASS_HAS_AUTHOR	= 5061;	// Links between authority objects 
 public final static int CLASS_HAS_PERS_AUTHOR	= 5062;	//  and MARC records.
 public final static int CLASS_HAS_CORP_AUTHOR	= 5063;
 public final static int CLASS_HAS_CONF_AUTHOR	= 5064;
 public final static int CLASS_HAS_SUBJECT	= 5065;
 public final static int CLASS_HAS_SUBJ_ENTRY	= 5066;
 public final static int CLASS_HAS_ABSTRACT	= 5067;
 public final static int CLASS_HAS_TITLE	= 5068;
 public final static int CLASS_HAS_KEYWORD	= 5069;

 public final static int CLASS_IS_IN_VT_MARC_TITLE	= 5102;	// Inverted (one-way)
 public final static int CLASS_IS_IN_VT_MARC_NOTE	= 5103;	//  termOccursInText()
 public final static int CLASS_IS_IN_PERS_NAME	= 5008;	//  relations for text
 public final static int CLASS_IS_IN_CORP_NAME	= 5009;	//  fields in VT MARC
 public final static int CLASS_IS_IN_CONF_NAME	= 5010;	//  records and linked
 public final static int CLASS_IS_IN_SUBJECT		= 5005;	//  authority objects.
 public final static int CLASS_IS_IN_SUBJ_ENTRY	= 5006;	//  authority objects.

 public final static int CLASS_AND_EXPR		= 13;
 public final static int CLASS_OR_EXPR		= 14;


/*** Weird things used only by F3L.	***/

 public final static int CLASS_VARIABLE	= 3;
 public final static int CLASS_FORM		= 11;

/*** Feedback Text Vector Classes 	***/

 public final static int CLASS_TEXT_VECT_NOTE		= 9876;
 public final static int CLASS_TEXT_VECT_TITLE	= 9877;
 public final static int CLASS_IS_IN_TEXT_VECT_NOTE	= 9878;
 public final static int CLASS_IS_IN_TEXT_VECT_TITLE	= 9879;
 

/*** NLM Document (Origin) Classes	***/
 public final static int CLASS_NLM_SGML_DOC	= 7100;		// Parent class.

 public final static int CLASS_NLM_AIDS_DOC	= 7101;		// Subclasses.
 public final static int CLASS_NLM_DBIR_DOC	= 7102;
 public final static int CLASS_NLM_HMD_DOC	= 7103;
 public final static int CLASS_NLM_HR_DOC	= 7104;
 public final static int CLASS_NLM_HSRI_DOC	= 7105;
 public final static int CLASS_NLM_MCH_DOC	= 7106;
 public final static int CLASS_NLM_NIHRES_DOC	= 7107;
 public final static int CLASS_NLM_NLM_DOC	= 7108;
 public final static int CLASS_NLM_PCC_DOC	= 7109;
 public final static int CLASS_NLM_SHC_DOC	= 7110;
 public final static int CLASS_NLM_HSDB_DOC	= 7111;

 public final static int CLASS_NLM_ORGANIZATION	= 7137;	// Objects described by DirLine.

 public final static int CLASS_NLM_ADDRESS	= 7112;		// Classes for NLM_SGML_DOC
 public final static int CLASS_NLM_ORG_DESC	= 7113;		//  components and associated
 public final static int CLASS_NLM_KEYWORDS	= 7114;		//  (dependant) objects.
 public final static int CLASS_NLM_ORG_NAME	= 7115;
 public final static int CLASS_NLM_DOC_NOTE	= 7116;

 public final static int CLASS_NLM_CONTACT	= 7117;
 public final static int CLASS_NLM_CROSSREF	= 7118;
 public final static int CLASS_MESH_HEADING	= 7119;
 public final static int CLASS_NLM_SPONSOR	= 7120;
 public final static int CLASS_NLM_ORG_TYPE	= 7121;

 public final static int CLASS_HAS_CONTACT	= 7132;
 public final static int CLASS_HAS_CROSSREF	= 7133;
 public final static int CLASS_HAS_MESH_HEADING	= 7134;
 public final static int CLASS_HAS_SPONSOR	= 7135;
 public final static int CLASS_HAS_TYPE	= 7136;

 public final static int CLASS_IS_IN_NLM_ADDRESS	= 7122;	// Inverted (one-way)
 public final static int CLASS_IS_IN_NLM_CONTACT	= 7123;	//  termOccursInText()
 public final static int CLASS_IS_IN_NLM_CROSSREF	= 7124;	//  relations for text
 public final static int CLASS_IS_IN_NLM_ORG_DESC	= 7125;	//  fields in NLM SGML
 public final static int CLASS_IS_IN_NLM_KEYWORDS	= 7126;	//  documents and linked
 public final static int CLASS_IS_IN_MESH_HEADING	= 7127;	//  authority objects.
 public final static int CLASS_IS_IN_NLM_ORG_NAME	= 7128;
 public final static int CLASS_IS_IN_NLM_DOC_NOTE	= 7129;
 public final static int CLASS_IS_IN_NLM_SPONSOR	= 7130;
 public final static int CLASS_IS_IN_NLM_ORG_TYPE	= 7131;

 public final static int CLASS_OCCURS_IN_PHYSDIS_BODY = 7142; // Inverted (one-way)
 public final static int CLASS_OCCURS_IN_ENTITY_NAME  = 7143; //  termOccursInText()
 public final static int CLASS_OCCURS_IN_PHYSDIS_DESCRIPTION  = 7144; //  relations for text
 public final static int CLASS_OCCURS_IN_PHYSDIS_TITLE        = 7145; //  fields in NDLTD
 public final static int CLASS_OCCURS_IN_DC_CREATOR_NAME      = 7146; //  documents and linked
 public final static int CLASS_OCCURS_IN_DC_SUBJECT   = 7147; //  authority objects.
 public final static int CLASS_OCCURS_IN_DC_DESCRIPTION       = 7148;
 public final static int CLASS_OCCURS_IN_DC_TITLE     = 7149;
 public final static int CLASS_OCCURS_IN_HEADINGS     = 7140;
 public final static int CLASS_OCCURS_IN_KEYWORDS     = 7141;

 public final static int CLASS_UNKNOWN_DIENST		= 7200;	// Some Dienst document collection.
 public final static int CLASS_UNKNOWN_Z3950		= 7300;	// Some Z39.50 document collection.
 public final static int CLASS_UNKNOWN_HARVEST		= 7400;	// Some Harvest(TM) document collection.

}

