001         package com.croftsoft.apps.agoracast.c2p;
002    
003         import java.util.*;
004    
005         import com.croftsoft.core.lang.NullArgumentException;
006         import com.croftsoft.core.text.ParseLib;
007         import com.croftsoft.core.text.sml.SmlNode;
008    
009         /*********************************************************************
010         *
011         * <p />
012         *
013         * @version
014         *   2001-10-29
015         * @since
016         *   2001-09-21
017         * @author
018         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
019         *********************************************************************/
020    
021         public final class  AgoracastCategory
022         //////////////////////////////////////////////////////////////////////
023         //////////////////////////////////////////////////////////////////////
024         {
025    
026         public static final String  SML_NODE_NAME = "category";
027    
028         //
029    
030         private final String      name;
031    
032         private final String      description;
033    
034         private final String [ ]  fieldNames;
035    
036         private final String [ ]  columnNames;
037    
038         //////////////////////////////////////////////////////////////////////
039         //////////////////////////////////////////////////////////////////////
040    
041         public static AgoracastCategory  fromSmlNode ( SmlNode  smlNode )
042         //////////////////////////////////////////////////////////////////////
043         {
044           if ( !SML_NODE_NAME.equals ( smlNode.getName ( ) ) )
045           {
046             throw new IllegalArgumentException ( smlNode.getName ( ) );
047           }
048    
049           String      name        = smlNode.getString  ( "name"        );
050    
051           String      description = smlNode.getString  ( "description" );
052    
053           String [ ]  fieldNames  = smlNode.getStrings ( "field"       );
054    
055           String [ ]  columnNames = smlNode.getStrings ( "column"      );
056    
057           return new AgoracastCategory (
058             name, description, fieldNames, columnNames );
059         }
060    
061         public static String [ ]  getNames (
062           AgoracastCategory [ ]  categories )
063         //////////////////////////////////////////////////////////////////////
064         {
065           String [ ]  names = new String [ categories.length ];
066    
067           for ( int  i = 0; i < categories.length; i++ )
068           {
069             names [ i ] = categories [ i ].getName ( );
070           }
071    
072           return names;
073         }
074    
075         //////////////////////////////////////////////////////////////////////
076         //////////////////////////////////////////////////////////////////////
077    
078         public  AgoracastCategory (
079           String      name,
080           String      description,
081           String [ ]  fieldNames,
082           String [ ]  columnNames )
083         //////////////////////////////////////////////////////////////////////
084         {
085           NullArgumentException.check ( this.name = name );
086    
087           this.description = description;
088    
089           this.fieldNames  = fieldNames;
090    
091           this.columnNames = columnNames;
092         }
093          
094         //////////////////////////////////////////////////////////////////////
095         //////////////////////////////////////////////////////////////////////
096    
097         public String      getName        ( ) { return name;        }
098    
099         public String      getDescription ( ) { return description; }
100    
101         public String [ ]  getFieldNames  ( ) { return fieldNames;  }
102    
103         public String [ ]  getColumnNames ( ) { return columnNames; }
104    
105         //////////////////////////////////////////////////////////////////////
106         //////////////////////////////////////////////////////////////////////
107    
108         public synchronized SmlNode  toSmlNode ( )
109         //////////////////////////////////////////////////////////////////////
110         {
111           SmlNode  rootSmlNode = new SmlNode ( SML_NODE_NAME );
112    
113           rootSmlNode.add ( new SmlNode ( "name" , name  ) );
114    
115           rootSmlNode.add ( new SmlNode ( "description", description ) );
116    
117           if ( fieldNames != null )
118           {
119             for ( int  i = 0; i < fieldNames.length; i++ )
120             {
121               rootSmlNode.add ( new SmlNode ( "field", fieldNames [ i ] ) );
122             }
123           }
124    
125           if ( columnNames != null )
126           {
127             for ( int  i = 0; i < columnNames.length; i++ )
128             {
129               rootSmlNode.add ( new SmlNode ( "column", columnNames [ i ] ) );
130             }
131           }
132    
133           return rootSmlNode;
134         }
135    
136         //////////////////////////////////////////////////////////////////////
137         //////////////////////////////////////////////////////////////////////
138         }