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="http://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 }