KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > generator > SiteContentStatics


1 package de.webman.generator;
2
3 import com.teamkonzept.lib.*;
4
5 import java.util.*;
6 import java.sql.*;
7 import org.apache.log4j.Category;
8 import de.webman.content.Content;
9 import de.webman.content.workflow.VersionCache;
10 /**
11  * Verwaltet die statischen Daten von SiteContent, d.h.
12  * alle Inhalte der gesamten Site
13  * key ist instanceid values SiteContent
14  * @author $Author: alex $
15  * @version $Revision: 1.4 $
16 */

17 public class SiteContentStatics
18 {
19     /** Lookup Tabelle, hier werden im Preview und bei referenzen die Contents
20         gespeichert, sobald ein Lookup durchgefuehrt wurde
21     */

22     private TKHashtable lookup = new TKHashtable();
23     
24     private static final Object JavaDoc LOOK_UP = new Object JavaDoc();
25     
26     private static final int YEAR_THRESHOLD = 100;
27     private static final int CENTURY = 1900;
28     
29     /** Log4J Category */
30     private static Category cat = Category.getInstance(SiteContentStatics.class.getName());
31     
32     /**
33         Verweis zurück auf den aktuellen statischen Kontext des laufenden Threads
34     */

35     private GeneratorContext context;
36
37     /**
38         Cache mit allen Contents der Site
39         key ist instanceid values SiteContent
40     */

41     private TKHashtable contentHash;
42     
43     public SiteContentStatics (GeneratorContext context) {
44     
45         this.context = context != null ? context : GeneratorContext.setup ();
46         this.contentHash = new TKHashtable();
47     }
48     
49     /**
50         liefert den Content zur uebergebenen Datenbank ID
51     */

52     public SiteContent getContent( int instanceId )
53     {
54         SiteContent content = (SiteContent) contentHash.get( new Integer JavaDoc( instanceId ) );
55         if (content == null && instanceId > 0)// instanceid < 0 ist StrukturContent !
56
{
57             // ist schon ein Lookup durchgeführt worden ??
58
// Achtung, ich verlasse mich darauf, dass es kein StrukturContent ist !!!
59
Object JavaDoc lookedUp = lookup.get(new Integer JavaDoc(instanceId));
60             // System.out.println("Lookup for : " + instanceId);
61
if (lookedUp == null)
62             {
63                 lookup.put(new Integer JavaDoc(instanceId), LOOK_UP);
64                 Content c = VersionCache.getInstanceInfo(new Integer JavaDoc( instanceId ));
65                 if (c != null)
66                 {
67                     // System.out.println("getContent : " + c.getInstanceId());
68
SiteContent sContent = new SiteContent(context, c.getFormularId().intValue(), c, false);
69                     // putContent(instanceId, sContent); // das ist ein Doppel, da SiteContent sich automatisch anmeldet !
70
// System.out.println("Sucess Lookup for : " + instanceId);
71
return sContent;
72                 }
73             }
74             else
75             {
76                 return null;
77             }
78         }
79         return content;
80     }
81     
82     /**
83         legt den Content mit uebergebenen Datenbank ID in der Hashtabelle ab
84     */

85     public void putContent (int instanceId, SiteContent content)
86     {
87         Integer JavaDoc id = new Integer JavaDoc(instanceId);
88         if (contentHash.get(id) != null)
89             cat.warn("Double Content: " + instanceId);
90         contentHash.put( id, content );
91     }
92     
93     /**
94         setzt bei allen Contents die Document-Referenzierungs-Hashes
95         zurueck
96     */

97     public void resetCounters()
98     {
99         Enumeration e = contentHash.elements();
100         while( e.hasMoreElements() ) {
101             ((SiteContent)e.nextElement()).resetInDocs();
102         }
103     }
104
105     /**
106         wandelt den Datumsstring str in ein Date Objekt um.
107         Falls str kein gueltiges Datum darstellt wird
108         null zurueckgegeben.
109         Was soll das - gibt es doch in Java oder ?
110     */

111     public java.util.Date JavaDoc getDateFromString( String JavaDoc str )
112     {
113         if( str == null || str.length() == 0 ) return null;
114         StringTokenizer st = new StringTokenizer(str,".");
115         try
116         {
117             int day = Integer.parseInt(st.nextToken());
118             int month = Integer.parseInt(st.nextToken());
119             int year = Integer.parseInt(st.nextToken());
120             if( year < YEAR_THRESHOLD ) {
121                 year += (((new java.util.Date JavaDoc()).getYear() + CENTURY) / YEAR_THRESHOLD) * YEAR_THRESHOLD;
122             }
123             return new java.util.Date JavaDoc( year, month, day );
124         }
125         catch( Exception JavaDoc e )
126         {
127             cat.debug("got wrong date-format: "+str);
128             return null;
129         }
130     }
131 }
132
133
Popular Tags