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 }