1 package com.teamkonzept.field; 2 3 import java.sql.*; 4 import com.teamkonzept.lib.*; 5 import com.teamkonzept.publishing.markups.*; 6 import com.teamkonzept.web.*; 7 import com.teamkonzept.field.db.*; 8 import com.teamkonzept.international.LanguageManager; 9 import org.apache.log4j.Category; 10 import org.w3c.dom.*; 11 12 18 public class TKFragmentField 19 extends TKBaseField 20 { 21 23 private static final Category LOG = Category.getInstance(TKFragmentField.class); 24 25 public static final String CLASS_ID = "FRAGMENT"; 26 public static final String FORM_ID = "FORM_ID"; 27 public static final String SELECTED_FORM = "SELECTED_FORM"; 28 29 int selectedFormId; 30 TKBaseField field; 31 32 35 protected String fragmentName = null; 36 37 40 protected String fragmentShowName = null; 41 42 45 public TKFragmentField() {}; 46 47 52 public TKFragmentField( String name ) 53 { 54 this( name, null ); 55 } 56 57 63 public TKFragmentField( String name, String showName ) 64 { 65 this(name, showName, 0); 66 } 67 68 71 public TKFragmentField( String name, String showName, int selectedFormId ) 72 { 73 initFragmentField( CLASS_ID, name, showName, selectedFormId ); 74 } 75 76 84 public final void initFragmentField( String type, String name, String showName, int selectedFormId ) 85 { 86 initBaseField( type, name, showName ); 87 this.selectedFormId = selectedFormId; 88 89 this.field = null; 90 } 91 92 98 public void init( String fieldType, Object initData ) 99 throws 100 TKUnregisteredClassException, 101 ClassNotFoundException , 102 InstantiationException , 103 IllegalAccessException  104 { 105 super.init( fieldType, initData ); 106 TKHashtable data = (TKHashtable) initData; 107 108 selectedFormId = Integer.parseInt( (String ) data.get(FORM_ID) ); 109 checkField(showName, fieldName); 112 } 113 114 125 public TKFieldGroup getDefGroup(TKFieldSwitch allSwitch, TKFieldSwitchList allSwitchList) { 126 127 TKReadFormFromDB readForms = new TKReadFormFromDB(); 129 readForms.getForms(); 130 131 TKBaseField [] fragmentArray = { 132 new TKInputField(TKFragmentField.NAME_KEY, TKInputField.SMALL_DEFAULT_SIZE, TKInputField.SMALL_DEFAULT_LENGTH, LanguageManager.getText(LANGUAGE_CONTEXT, "FRAGMENT_NAME"), TKInputField.CHECK_STRING), 133 new TKInputField(TKFragmentField.SHOW_NAME_KEY, TKInputField.LARGE_DEFAULT_SIZE, TKInputField.LARGE_DEFAULT_LENGTH, LanguageManager.getText(LANGUAGE_CONTEXT, "FRAGMENT_SHOWNAME"), TKInputField.CHECK_STRING), 134 new TKSelectField(FORM_ID, LanguageManager.getText(LANGUAGE_CONTEXT, "FRAGMENT_FORMS"), readForms.formVector , 1, false) 135 136 }; 137 138 TKFieldGroup fragmentGroup = 139 new TKFieldGroup( TKFragmentField.CLASS_ID, new TKVector( fragmentArray ), LanguageManager.getText(LANGUAGE_CONTEXT, TKFragmentField.CLASS_ID) ); 140 return fragmentGroup; 141 } 142 143 149 public Object getDefault() 150 { 151 if(field == null) { 152 checkField( showName, fieldName); 153 } 154 return field.getDefault(); 155 } 156 157 165 public Object compileData( String prefix, TKHashtable data, TKHashtable context ) 166 { 167 if(field == null) { 169 checkField( showName, fieldName); 170 } 171 172 Object result = field.compileData(prefix, data, context); 173 return result; 174 } 175 176 public Object compileData( String prefix, TKMarkupNode data, TKHashtable context ) 177 { 178 TKXmlMarkup markup = data == null ? null : (TKXmlMarkup) data.markup; 179 if (markup == null) { return null;} 180 181 if (!markup.name.equals (getName())) { 182 return null; 183 } 184 Object result = field.compileData(prefix, data, context); 185 return result; 186 } 187 188 193 public Object toData() 194 { 195 TKHashtable result = (TKHashtable) super.toData(); 196 result.put( FORM_ID, new Integer (selectedFormId) ); 197 return result; 198 } 199 200 208 public void fillIntoTemplate( TKHTMLTemplate t, Object data, String prefix) 209 { 210 field.fillIntoTemplate(t, data, prefix); 211 } 212 213 public void fillIntoDOM(Document doc, Element node, Object data) throws DOMException 214 { 215 field.fillIntoDOM(doc, node, data); 216 } 217 218 public void fillIntoPresentation( TKHTMLTemplate t, Object data, String scope ) 219 { 220 field.fillIntoPresentation(t, data, scope); 221 } 222 223 231 public Object modify( String action, String fieldPath, Object data, String prefix, StringBuffer destination ) 232 { 233 field.modify(action, fieldPath,data,prefix, destination); 234 235 return data; 236 } 237 238 public int realInsertIntoDB( TKFormDBData db, int formId ) 240 { 241 if( super.realInsertIntoDB( db, formId ) == -1 ) return -1; 242 insertNewFieldAttribute( db, formId, FORM_ID, 0, String.valueOf( selectedFormId ) ); 243 244 return fieldId; 245 } 246 247 248 public void initFromDB( String classId, TKFormDBData db, TKVector otherFields ) 250 throws 251 TKUnregisteredClassException, 252 ClassNotFoundException , 253 InstantiationException , 254 IllegalAccessException  255 { 256 260 super.initFromDB( classId, db, otherFields ); 261 262 263 if( hasFieldAttribute( db, FORM_ID, 0 ) ) { 264 selectedFormId = Integer.parseInt( getFieldAttribute( db, FORM_ID, 0) ); 265 } 266 267 } 268 269 public TKBaseField getTarget(String fieldPath, String prefix) 270 { 271 if(field == null) 273 checkField( showName, fieldName); 274 275 return field.getTarget(fieldPath, prefix); 276 277 } 278 279 public int insertDataIntoDB( TKContentDBData db, Object data, int contentId, int leftNr ) 280 { 281 return field.insertDataIntoDB(db, data, contentId, leftNr); 282 283 } 284 285 public Object getDataFromDB( TKContentDBData db ) 286 { 287 checkField( showName, fieldName); 288 return field.getDataFromDB(db); 289 } 290 291 public void checkField(String thisShowName, String thisName) 292 { 293 if(field == null) { 294 try { 295 TKFormDBData data = new TKFormDBData( selectedFormId); 297 TKFormDBInterface.Get( data ); 298 field = TKFieldRegistry.getFieldFromDB( data ); 299 300 this.fragmentName = field.getName(); 301 this.fragmentShowName = field.getShowName(); 302 303 field.setName( thisShowName, thisName ); 304 } 305 catch( Exception e ) { 306 LOG.error("ERROR:", e); 307 } 308 } 309 } 310 311 320 public boolean equals (Object object) 321 { 322 if (! super.equals(object)) 323 { 324 return false; 325 } 326 327 TKFragmentField field = (TKFragmentField) object; 328 329 return (this.selectedFormId == field.selectedFormId) && 330 (this.fragmentName == null ? field.fragmentName == null : this.fragmentName.equals(field.fragmentName)) && 331 (this.fragmentShowName == null ? field.fragmentShowName == null : this.fragmentShowName.equals(field.fragmentShowName)) && 332 (this.field == null ? field.field == null : this.field.equals(field.field)); 333 } 334 335 340 public int hashCode () 341 { 342 return super.hashCode(); 344 } 345 346 } 347
| Popular Tags
|